Get around Korea: subway routes in English, fares, public holidays and guides. No API key.
English ยท ํ๊ตญ์ด
Let your AI agent get you around Korea. Subway routes in English, fares, public holidays and practical tips, as an MCP server for Claude, Cursor, ChatGPT and any MCP client.
No API key. No Korean phone number. Works offline.

You: How do I get from Myeongdong to Seongsu by subway?
Agent: Take Line 4 from Myeongdong (๋ช
๋) on the platform whose next stop is
Chungmuro (์ถฉ๋ฌด๋ก). Ride 2 stops to Dongdaemun History & Culture Park.
Transfer to Line 2 towards Sindang (์ ๋น) and ride 6 stops to Seongsu (์ฑ์).
About 22 minutes, โฉ1,550 with a T-money card.
If you have visited Korea, you know: Google Maps can't give you walking or driving directions here, and its transit results are often incomplete. Korea restricts exporting map data, so locals use Naver Map and KakaoMap instead.
That's fine for people, but bad for AI agents. Naver and Kakao don't offer a public transit-routing API, and their other APIs need a Korean developer account. So when you ask an AI "how do I get to Seongsu?", it guesses.
korea-mcp fixes the basics with open data bundled in the package:
Claude Code
claude mcp add korea -- npx -y korea-mcp
Claude Desktop, one click. Download korea-mcp.mcpb and open it. Claude Desktop installs it as an extension.
Claude Desktop (manual), Cursor and other MCP clients. Add this to your MCP config (claude_desktop_config.json, .cursor/mcp.json, โฆ):
{
"mcpServers": {
"korea": {
"command": "npx",
"args": ["-y", "korea-mcp"]
}
}
}
Requires Node.js 20+.
| Tool | What it does |
|---|---|
subway_route | Route between two stations: lines, transfers, the platform to use, stops, minutes and fare. Accepts English, ํ๊ตญ์ด, ๆฅๆฌ่ช, ไธญๆ and landmarks ("Hongdae", "COEX", "Incheon Airport T1"). Tolerates typos. |
subway_station | Look up and translate a station name. Returns every language, the lines that serve it and coordinates. |
korea_holidays | Public holidays in a date range, or "is this date a holiday?". Includes substitute holidays and the 2026 additions (Labour Day, Constitution Day). |
korea_guide | Practical guides: transit-card, airport, emergency, apps. |
Things to ask
Here is what this server knows, and what it only estimates:
allow_express.Found a wrong route? Open an issue with the two stations. That's the most useful bug report there is.
If korea-mcp helped you get around, a โญ helps other travelers find it.
These are planned optional extras that need free API keys. Everything above keeps working without them.
See docs/api-keys.md for how keys will work.
npm install
npm test # route, fare and holiday tests
npm run dev # run the server with tsx
npm run data:subway # rebuild data/subway.json from OpenStreetMap
The subway dataset is generated by scripts/build-subway.mjs from OpenStreetMap route relations. Line definitions and name overrides are in that script. The speed model is in src/subway/route.ts.
Contributions in any language are welcome. Issues and PRs in Korean are fine too.
These projects explored parts of this space first. Go give them a star:
The code is MIT. The subway data is ยฉ OpenStreetMap contributors, under ODbL 1.0.
English ยท ํ๊ตญ์ด
์ธ๊ตญ์ธ ์น๊ตฌ๊ฐ AIํํ "๋ช ๋์์ ์ฑ์ ์ด๋ป๊ฒ ๊ฐ?"๋ผ๊ณ ๋ฌผ์ผ๋ฉด, ์ ๋๋ก ๋ ๋ต์ด ๋์ค๊ฒ ํ๋ MCP ์๋ฒ์ ๋๋ค.
์งํ์ฒ ๊ฒฝ๋ก์ ์๊ธ, ๊ณตํด์ผ, ์ํ ์ ๋ณด๋ฅผ ์์ดยทํ๊ตญ์ดยท์ผ๋ณธ์ดยท์ค๊ตญ์ด๋ก ์๋ ค์ค๋๋ค. Claude, Cursor, ChatGPT ๋ฑ MCP๋ฅผ ์ง์ํ๋ ๋ชจ๋ AI ์์ด์ ํธ์์ ์ธ ์ ์์ด์.
API ํค ์์ด, ํ๊ตญ ํด๋ํฐ ๋ฒํธ ์์ด, ์คํ๋ผ์ธ์์ ๋์ํฉ๋๋ค.
ํ๊ตญ์์๋ ๊ตฌ๊ธ ์ง๋๋ก ๋๋ณดยท์๋์ฐจ ๊ธธ์ฐพ๊ธฐ๋ฅผ ํ ์ ์๊ณ , ๋์ค๊ตํต ์ ๋ณด๋ ๋ถ์ ํํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ง๋ ๋ฐ์ดํฐ์ ๊ตญ์ธ ๋ฐ์ถ ์ ํ ๋๋ฌธ์ด์์. ๊ทธ๋์ ํ๊ตญ ์ฌ๋๋ค์ ๋ค์ด๋ฒ ์ง๋์ ์นด์นด์ค๋งต์ ์๋๋ค.
๊ทธ๋ฐ๋ฐ AI ์์ด์ ํธ์๊ฒ๋ ์ด๊ฒ ๋ฌธ์ ์ ๋๋ค. ๋ค์ด๋ฒ์ ์นด์นด์ค๋ ๋์ค๊ตํต ๊ธธ์ฐพ๊ธฐ API๋ฅผ ์ธ๋ถ์ ๊ณต๊ฐํ์ง ์๊ณ , ๋ค๋ฅธ API๋ ํ๊ตญ ๊ฐ๋ฐ์ ๊ณ์ ์ด ์์ด์ผ ์ธ ์ ์์ด์. ๊ฒฐ๊ตญ AI๊ฐ ๊ฒฝ๋ก๋ฅผ ์ง์ด๋ด๊ฒ ๋ฉ๋๋ค.
korea-mcp๋ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ํจํค์ง์ ๋ด์ฅํด์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
Claude Code
claude mcp add korea -- npx -y korea-mcp
Claude Desktop ์ํด๋ฆญ ์ค์น. korea-mcp.mcpb๋ฅผ ๋ด๋ ค๋ฐ์ ์ด๋ฉด Claude Desktop์ ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ์ค์น๋ฉ๋๋ค.
Claude Desktop(์ง์ ์ค์ ), Cursor ๋ฑ. MCP ์ค์ ํ์ผ์ ์๋ ๋ด์ฉ์ ์ถ๊ฐํ์ธ์.
{
"mcpServers": {
"korea": {
"command": "npx",
"args": ["-y", "korea-mcp"]
}
}
}
Node.js 20 ์ด์์ด ํ์ํฉ๋๋ค.
| ๋๊ตฌ | ๊ธฐ๋ฅ |
|---|---|
subway_route | ๋ ์ญ ์ฌ์ด ๊ฒฝ๋ก: ๋ ธ์ , ํ์น์ญ, ํ ์น๊ฐ์ฅ, ์ ๊ฑฐ์ฅ ์, ์์ ์๊ฐ, ์๊ธ. ์์ดยทํ๊ตญ์ดยท์ผ๋ณธ์ดยท์ค๊ตญ์ด ์ญ๋ช ๊ณผ ๋๋๋งํฌ("Hongdae", "COEX")๋ฅผ ์์๋ฃ๊ณ , ์คํ๋ ์ฒ๋ฆฌํฉ๋๋ค. |
subway_station | ์ญ ๊ฒ์๊ณผ ์ญ๋ช ๋ฒ์ญ. ์ธ์ด๋ณ ์ด๋ฆ, ์ง๋๋ ๋ ธ์ , ์ขํ๋ฅผ ์๋ ค์ค๋๋ค. |
korea_holidays | ๊ธฐ๊ฐ ๋ด ๊ณตํด์ผ ์กฐํ, ํน์ ๋ ์ง๊ฐ ๊ณตํด์ผ์ธ์ง ํ์ธ. ๋์ฒด๊ณตํด์ผ๊ณผ 2026๋ ์ ์๋ก ์๊ธด ๋ ธ๋์ ยท์ ํ์ ๋ ํฌํจํฉ๋๋ค. |
korea_guide | ์ํ ๊ฐ์ด๋: transit-card(๊ตํต์นด๋), airport(๊ณตํญ), emergency(๊ธด๊ธ์ ํ), apps(์ฑ) |
allow_express ์ต์
์ ์ผ์ธ์.ํ๋ฆฐ ๊ฒฝ๋ก๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ์ถ๋ฐ์ญ๊ณผ ๋์ฐฉ์ญ์ ์ ์ด์ ์ด์๋ก ์๋ ค์ฃผ์ธ์. ๊ฐ์ฅ ๋์์ด ๋๋ ์ ๋ณด์ ๋๋ค.
๋์์ด ๋๋ค๋ฉด โญ ํ๋ ๋๋ฌ ์ฃผ์ธ์. ๋ค๋ฅธ ์ฌํ์๋ค์ด ์ด ํ๋ก์ ํธ๋ฅผ ์ฐพ๋ ๋ฐ ํฐ ๋์์ด ๋ฉ๋๋ค.
์๋ ๊ธฐ๋ฅ์ ๋ฌด๋ฃ API ํค๊ฐ ์์ผ๋ฉด ์ธ ์ ์๋ ์ ํ ๊ธฐ๋ฅ์ผ๋ก ์ถ๊ฐํ ์์ ์ ๋๋ค. ํค๊ฐ ์์ด๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๊ทธ๋๋ก ๋์ํด์.
ํค ์ฌ์ฉ ๋ฐฉ์์ docs/api-keys.md๋ฅผ ์ฐธ๊ณ ํ์ธ์.
npm install
npm test # ๊ฒฝ๋กยท์๊ธยท๊ณตํด์ผ ํ
์คํธ
npm run dev # tsx๋ก ์๋ฒ ์คํ
npm run data:subway # OpenStreetMap์์ data/subway.json ๋ค์ ์์ฑ
์ด์์ PR์ ํ๊ตญ์ด๋ก ๋จ๊ธฐ์ ๋ ๋ฉ๋๋ค. ์์ด ์ญ๋ช ์ค๋ฅ, ๋น ์ง ๋ ธ์ , ๊ฐ์ด๋ ๋ด์ฉ ๋ณด์ ๊ฐ์ ๊ธฐ์ฌ๋ฅผ ํนํ ํ์ํด์.
์ด ๋ถ์ผ๋ฅผ ๋จผ์ ๋ค๋ฃฌ ํ๋ก์ ํธ๋ค์ ๋๋ค. ์์ Credits ๋ชฉ๋ก์ ์ฐธ๊ณ ํ์ธ์.
์ฝ๋๋ MIT, ์งํ์ฒ ๋ฐ์ดํฐ๋ ยฉ OpenStreetMap contributors์ด๋ฉฐ ODbL 1.0์ ๋ฐ๋ฆ ๋๋ค.
Source-derived launch command. Check the maintainerโs required arguments and credentials before running:
npx -y korea-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-leegwangwoon-korea-mcp": {
"command": "npx",
"args": [
"-y",
"korea-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the clientโs tool list, then try a read-only example from its documentation.
Claude Desktop setup referencekorea-mcpnpmKorea MCP works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.