Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@K-Targo Subway MCP Servershow me the timetable for Gangnam Station going northbound"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π°π· K-Targo Subway MCP Server
νκ΅ μ§νμ² μ 보λ₯Ό μ 곡νλ MCP (Model Context Protocol) μλ²μ λλ€.
π μ£Όμ κΈ°λ₯
μ§νμ² μ κ²μ: μλͺ μΌλ‘ μ§νμ² μ μ 보 κ²μ
μ΄μ°¨ μκ°ν μ‘°ν: νΉμ μμ μ΄μ°¨ μκ°ν μ‘°ν
μ€μκ° μ§νμ² μ 보: Tago APIλ₯Ό ν΅ν μ€μκ° λ°μ΄ν° μ 곡
MCP νμ€ μ€μ: Model Context Protocol νμ€μ λ°λ₯΄λ λꡬ μ 곡
π οΈ μ€μΉ λ° μ¬μ©
Installing via Smithery
To install k-targo-subway-mcp-server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @slicequeue/k-targo-subway-mcp-server --client claude1. 곡곡λ°μ΄ν° API ν€ μ€μ
μ΄ μλ²λ κ΅ν κ΅ν΅λΆ_(TAGO)_μ§νμ² μ 보 APIλ₯Ό μ¬μ©ν©λλ€. μ¬μ©νκΈ° μ μ API ν€λ₯Ό μ€μ ν΄μΌ ν©λλ€.
API μ 보
API λͺ : κ΅ν κ΅ν΅λΆ_(TAGO)_μ§νμ² μ 보
API URL: https://www.data.go.kr/data/15098554/openapi.do
μ 곡기κ΄: κ΅ν κ΅ν΅λΆ
λ°μ΄ν° νμ: JSON
API ν€ λ°κΈ
곡곡λ°μ΄ν°ν¬νΈμ κ°μ
"κ΅ν κ΅ν΅λΆ_(TAGO)_μ§νμ² μ 보" API μ μ²
μΉμΈ ν λ°κΈλ°μ API ν€λ₯Ό νκ²½λ³μλ‘ μ€μ
νκ²½λ³μ μ€μ
# Windows
set GOV_API_KEY=your_api_key_here
# macOS/Linux
export GOV_API_KEY=your_api_key_here
# .env νμΌ μ¬μ© (κΆμ₯)
echo "GOV_API_KEY=your_api_key_here" > .env2. npxλ‘ μ¦μ μ€ν (κΆμ₯)
npx k-targo-subway-mcp-server3. npmμΌλ‘ μ€μΉ
npm install k-targo-subway-mcp-server4. κΈλ‘λ² μ€μΉ
npm install -g k-targo-subway-mcp-serverπ¦ MCP λꡬ
1. μ§νμ² μ κ²μ (search_subway_station)
μ§νμ² μλͺ μΌλ‘ μ μ 보λ₯Ό κ²μν©λλ€.
μ λ ₯ νλΌλ―Έν°:
stationName(string): κ²μν μλͺ
μ¬μ© μμ:
// "κ°λ¨" μ κ²μ
const result = await searchSubwayStationTool.handler({
stationName: "κ°λ¨"
}, {});2. μ΄μ°¨ μκ°ν μ‘°ν (get_station_timetable)
νΉμ μμ μ΄μ°¨ μκ°νλ₯Ό μ‘°νν©λλ€.
μ λ ₯ νλΌλ―Έν°:
stationCode(string): μ μ½λdirection(string): λ°©ν₯ (μν/νν)
μ¬μ© μμ:
// κ°λ¨μ μν μκ°ν μ‘°ν
const result = await getStationTimetableTool.handler({
stationCode: "0222",
direction: "μν"
}, {});ποΈ νλ‘μ νΈ κ΅¬μ‘°
src/
βββ config/ # μ€μ νμΌ
β βββ index.ts
βββ external/ # μΈλΆ API μ°λ
β βββ common/ # κ³΅ν΅ μ νΈλ¦¬ν°
β βββ tago-subway/ # Tago μ§νμ² API
β βββ api.ts # API ν΄λΌμ΄μΈνΈ
β βββ service.ts # λΉμ¦λμ€ λ‘μ§
β βββ dtos/ # λ°μ΄ν° μ μ‘ κ°μ²΄
β βββ types/ # νμ
μ μ
βββ tools/ # MCP λꡬλ€
β βββ subway.ts # μ§νμ² κ΄λ ¨ λꡬ
β βββ index.ts # λκ΅¬λ€ ν΅ν©
β βββ types.ts # λꡬ νμ
μ μ
βββ utils/ # μ νΈλ¦¬ν°
β βββ PackageJsonUtil.ts
β βββ ResponseUtil.ts
βββ index.ts # λ©μΈ μ§μ
μ π§ κ°λ° νκ²½ μ€μ
1. μμ‘΄μ± μ€μΉ
npm install2. API ν€ μ€μ
# .env νμΌ μμ±
echo "GOV_API_KEY=your_api_key_here" > .env
# λλ νκ²½λ³μλ‘ μ€μ
export GOV_API_KEY=your_api_key_here # macOS/Linux
set GOV_API_KEY=your_api_key_here # Windows.env νμΌ μμ
# κ΅ν κ΅ν΅λΆ_(TAGO)_μ§νμ² μ 보 API ν€
# 곡곡λ°μ΄ν°ν¬νΈ(https://www.data.go.kr/)μμ λ°κΈλ°μ API ν€λ₯Ό μ€μ νμΈμ
# API URL: https://www.data.go.kr/data/15098554/openapi.do
GOV_API_KEY=your_public_data_api_key_here
# μμ:
# GOV_API_KEY=abc123def456ghi789jkl012mno345pqr678stu901vwx234yz5673. κ°λ° μλ² μ€ν
npm run dev4. λΉλ
npm run build5. ν μ€νΈ
# μ 체 ν
μ€νΈ
npm test
# API ν
μ€νΈ
npm run test:api
# νΉμ μ ν
μ€νΈ
npm run test:api:stationπ‘ API μ°λ
κ΅ν κ΅ν΅λΆ_(TAGO)_μ§νμ² μ 보 API
API λͺ : κ΅ν κ΅ν΅λΆ_(TAGO)_μ§νμ² μ 보
API URL: https://www.data.go.kr/data/15098554/openapi.do
μ 곡기κ΄: κ΅ν κ΅ν΅λΆ
κΈ°λ³Έ URL:
https://api.tago.go.krμΈμ¦: 곡곡λ°μ΄ν° API ν€ κΈ°λ° μΈμ¦ (
GOV_API_KEYνκ²½λ³μ)λ°μ΄ν° νμ: JSON
API ν€ λ°κΈ: 곡곡λ°μ΄ν°ν¬νΈμμ "κ΅ν κ΅ν΅λΆ_(TAGO)_μ§νμ² μ 보" μ μ²
νκ²½λ³μ μ€μ
# νμ νκ²½λ³μ
GOV_API_KEY=your_public_data_api_key_hereμ£Όμ μλν¬μΈνΈ
GET /subway-station/search: μ§νμ² μ κ²μGET /subway-station/{stationCode}/timetable: μ΄μ°¨ μκ°ν μ‘°ν
π― μ¬μ© μμ
MCP ν΄λΌμ΄μΈνΈ μ€μ
MCP ν΄λΌμ΄μΈνΈμμ μ΄ μλ²λ₯Ό μ¬μ©νλ €λ©΄ λ€μκ³Ό κ°μ΄ μ€μ νμΈμ:
{
"mcpServers": {
"k-targo-subway": {
"command": "npx",
"args": ["k-targo-subway-mcp-server"],
"env": {
"GOV_API_KEY": "your_targo_api_key_here"
}
}
}
}MCP ν΄λΌμ΄μΈνΈμμ μ¬μ©
// μ§νμ² μ κ²μ
const searchResult = await mcpClient.callTool('search_subway_station', {
stationName: 'κ°λ¨'
});
// μκ°ν μ‘°ν
const timetableResult = await mcpClient.callTool('get_station_timetable', {
stationCode: '0222',
direction: 'μν'
});CLIμμ μ§μ μ€ν
# npxλ‘ μ€ν (κΆμ₯)
npx k-targo-subway-mcp-server
# κΈλ‘λ² μ€μΉ ν μ€ν
k-targo-subway-mcp-server
# λλ npm μ€ν¬λ¦½νΈλ‘ μ€ν
npm startπ κ°λ° μν¬νλ‘μ°
μ κΈ°λ₯ μΆκ°:
src/tools/μ μ λꡬ νμΌ μμ±API μ°λ:
src/external/μ μΈλΆ API ν΄λΌμ΄μΈνΈ μΆκ°νμ μ μ: νμν νμ λ€μ μ μ
ν μ€νΈ:
test/λλ ν 리μ ν μ€νΈ μ½λ μμ±λΉλ λ° λ°°ν¬:
npm run buildν λ°°ν¬
π μ£Όμ κ°λ
MCP Tool
μ¬μ©μκ° νΈμΆν μ μλ ν¨μμ λλ€. μ λ ₯ μ€ν€λ§μ νΈλ€λ¬ ν¨μλ‘ κ΅¬μ±λ©λλ€.
TAGO API
κ΅ν κ΅ν΅λΆμμ μ 곡νλ μ§νμ² μ 보 APIμ λλ€. 곡곡λ°μ΄ν°ν¬νΈμ ν΅ν΄ μ 곡λ©λλ€.
μ§νμ² μ μ½λ
κ° μ§νμ² μμ κ³ μ ν μ½λλ₯Ό κ°μ§κ³ μμ΅λλ€ (μ: κ°λ¨μ = "0222").
π λ°°ν¬
# λΉλ
npm run build
# npm λ°°ν¬
npm publish
# μ€ν
node dist/index.jsπ λΌμ΄μ μ€
MIT License
π€ κΈ°μ¬νκΈ°
Fork the Project
Create your Feature Branch (
git checkout -b feature/AmazingFeature)Commit your Changes (
git commit -m 'Add some AmazingFeature')Push to the Branch (
git push origin feature/AmazingFeature)Open a Pull Request
π λ¬Έμ
GitHub: https://github.com/slicequeue/k-targo-subway-mcp-server
Issues: https://github.com/slicequeue/k-targo-subway-mcp-server/issues
π κ°μ¬μ λ§
κ΅ν κ΅ν΅λΆ_(TAGO)_μ§νμ² μ 보 - μ§νμ² μ 보 μ 곡
곡곡λ°μ΄ν°ν¬νΈ - API μλΉμ€ μ 곡
Model Context Protocol - MCP νμ€
Node.js - λ°νμ νκ²½