Seoul publishes a great deal through one open data API, and this shows the shape of wrapping it: one module per dataset, each declaring its endpoint and its tool. Useful as-is for ridership and events, and more useful as the thing you copy when you want the next dataset.
A worked example of an MCP server over the Seoul open data API. Two datasets are wired up: boarding and alighting counts per subway station by line, and the city's cultural event listings. The README is in Korean and presents the project as a sample to build on.
- Subway ridership figures, broken down by line and by station
- Seoul cultural event information from the city's own feed
- Two modules you can read as a pattern: `modules/KoreaSeoulSubwayStatus.ts` and `modules/KoreaSeoulCulturalEventInfo.ts`
- Paged access — the open data endpoint takes a start and end index per request
A Seoul open data API key, which you paste into the `API_KEY` constant in each of the two module files before building — there is no environment variable for it, so the key ends up in your working copy. Then `npm i; npm run build` and point your client at `node` with the path to `dist/index.js`. Version 0.0.1.
One command plus a key — npm i; npm run build, then supply credentials
