norikae-mcp
๐ ไนๆๆกๅ MCP - ํ์น ์๋ด / Norikae MCP - ์ผํ ๊ตํต์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ผ๋ณธ ์ด์ฐจ ๊ฒฝ๋ก ๊ฒ์
๋ฌธ์
ไนๆๆกๅ MCP ๐ / Norikae MCP
ๆฅๆฌใฎ้ป่ปไนใๆใๆค็ดขใใงใใMCP๏ผModel Context Protocol๏ผใตใผใใผใงใใ Yahoo!ไนๆๆกๅ ใฎใใผใฟใไฝฟ็จใใฆใ้ง ใใ้ง ใธใฎๆ้ฉใชใซใผใใๆค็ดขใงใใพใใ
An MCP (Model Context Protocol) server for searching train routes in Japan. Uses Yahoo! Transit data to find optimal routes between stations.
ๆฉ่ฝ / Features
- ๐ ้ง ใใ้ง ใธใฎไนใๆใใซใผใๆค็ดข / Station-to-station route search
- ๐ ็ต็ฑ้ง ใฎๆๅฎ๏ผๆๅคง3้ง ๏ผ/ Via station specification (up to 3 stations)
- โฐ ๆๅฎๆๅปใงใฎๆค็ดข๏ผๅบ็บใปๅฐ็ๆๅปๆๅฎ๏ผ/ Departure or arrival time specification
- ๐ฐ IC้่ณใฎ่กจ็คบ / IC card fare display
- ๐ ไนใๆใๅๆฐใปๆ่ฆๆ้ใฎๆฏ่ผ / Transfer count and travel time comparison
ๅฟ ่ฆๆกไปถ / Requirements
- Node.js 18ไปฅไธ / Node.js 18+
ใคใณในใใผใซ / Installation
npm install -g norikae-mcp
ใพใใฏใnpxใง็ดๆฅๅฎ่ก / Or run directly with npx:
npx norikae-mcp
่จญๅฎ / Configuration
Claude Desktop ใงใฎ่จญๅฎ / Claude Desktop Configuration
่จญๅฎใใกใคใซใ้ใใฆไปฅไธใ่ฟฝๅ ใใฆใใ ใใ๏ผ
Open the config file and add the following:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"norikae": {
"command": "npx",
"args": ["-y", "norikae-mcp"]
}
}
}
่จญๅฎๅพใClaude Desktopใๅ่ตทๅใใฆใใ ใใใ
After saving, restart Claude Desktop.
Cursor ใงใฎ่จญๅฎ / Cursor Configuration
~/.cursor/mcp.json ใพใใฏ ใใญใธใงใฏใใฎ .cursor/mcp.json ใซไปฅไธใ่ฟฝๅ ๏ผ
Add the following to ~/.cursor/mcp.json or your project's .cursor/mcp.json:
{
"mcpServers": {
"norikae": {
"command": "npx",
"args": ["-y", "norikae-mcp"]
}
}
}
ไฝฟ็จใงใใใใผใซ / Available Tools
search_route
้ง ใใ้ง ใธใฎ้ป่ปใซใผใใๆค็ดขใใพใใ
Search for train routes between stations.
ใใฉใกใผใฟ / Parameters:
| ใใฉใกใผใฟ | ๅ | ๅฟ ้ | ่ชฌๆ / Description |
|---|---|---|---|
from | string | โ | ๅบ็บ้ง ๅ / Departure station (e.g., ๆฑไบฌ, ๆฐๅฎฟ) |
to | string | โ | ๅฐ็้ง ๅ / Arrival station (e.g., ไนๆฎตไธ, ๆจชๆต) |
via | string[] | - | ็ต็ฑ้ง ๅใฎ้ ๅ๏ผๆๅคง3้ง ๏ผ/ Via stations array (max 3) |
year | number | - | ๅบ็บๅนด / Year (default: current) |
month | number | - | ๅบ็บๆ / Month (default: current) |
day | number | - | ๅบ็บๆฅ / Day (default: current) |
hour | number | - | ๆ / Hour (default: current) |
minute | number | - | ๅ / Minute (default: current) |
ๆค็ดขใชใใทใงใณ / Search Options:
| ใใฉใกใผใฟ | ๅ | ใใใฉใซใ | ่ชฌๆ / Description |
|---|---|---|---|
timeType | departure | arrival | first_train | last_train | unspecified | departure | ๆๅปๆๅฎใฟใคใ / Time type |
ticket | ic | cash | ic | ้่ณใฟใคใ / Fare type |
seatPreference | non_reserved | reserved | green | non_reserved | ๅบงๅธญๆๅฎ / Seat preference |
walkSpeed | fast | slightly_fast | slightly_slow | slow | slightly_slow | ๆญฉใ้ๅบฆ / Walking speed |
sortBy | time | transfer | fare | time | ไธฆใณ้ / Sort order |
ไบค้ๆๆฎตใชใใทใงใณ / Transport Options:
| ใใฉใกใผใฟ | ๅ | ใใใฉใซใ | ่ชฌๆ / Description |
|---|---|---|---|
useAirline | boolean | true | ็ฉบ่ทฏใไฝฟใ / Use airlines |
useShinkansen | boolean | true | ๆฐๅนน็ทใไฝฟใ / Use Shinkansen |
useExpress | boolean | true | ๆๆ็นๆฅใไฝฟใ / Use express trains |
useHighwayBus | boolean | true | ้ซ้ใในใไฝฟใ / Use highway buses |
useLocalBus | boolean | true | ่ทฏ็ทใในใไฝฟใ / Use local buses |
useFerry | boolean | true | ใใงใชใผใไฝฟใ / Use ferries |
ไฝฟ็จไพ๏ผ่ช็ถ่จ่ช โ ใชใใทใงใณ๏ผ/ Usage Examples (Natural Language โ Options)
AIใซไปฅไธใฎใใใซ่ฉฑใใใใใจใ่ชๅ็ใซ้ฉๅใชใชใใทใงใณใ่จญๅฎใใใพใใ
When you ask the AI in natural language, the appropriate options are automatically set.
ๅบๆฌ็ใชๆค็ดข / Basic Search
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใๆฑไบฌใใไนๆฎตไธใพใงใ | from: ๆฑไบฌ, to: ไนๆฎตไธ |
| ใๆฐๅฎฟใใๆจชๆตใธใฎ่กใๆนใ | from: ๆฐๅฎฟ, to: ๆจชๆต |
| "How to get from Tokyo to Shibuya" | from: ๆฑไบฌ, to: ๆธ่ฐท |
| "Route from Shinjuku to Yokohama" | from: ๆฐๅฎฟ, to: ๆจชๆต |
็ต็ฑ้ง ใฎๆๅฎ / Via Stations
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใๆฑไบฌใใๆฐๅฎฟใพใงใ่กจๅ้็ต็ฑใงใ | from: ๆฑไบฌ, to: ๆฐๅฎฟ, via: ["่กจๅ้"] |
| ใๆธ่ฐทใใๆฑ ่ขใๅๅฎฟใจๆฐๅฎฟใ็ต็ฑใใฆใ | from: ๆธ่ฐท, to: ๆฑ ่ข, via: ["ๅๅฎฟ", "ๆฐๅฎฟ"] |
| ใๅๅทใใไธ้ใๆฑไบฌ้ง ใจ็ง่ๅใ้ใฃใฆใ | from: ๅๅท, to: ไธ้, via: ["ๆฑไบฌ", "็ง่ๅ"] |
| "From Tokyo to Shinjuku via Omotesando" | from: ๆฑไบฌ, to: ๆฐๅฎฟ, via: ["่กจๅ้"] |
| "Shibuya to Ikebukuro, passing through Harajuku and Shinjuku" | from: ๆธ่ฐท, to: ๆฑ ่ข, via: ["ๅๅฎฟ", "ๆฐๅฎฟ"] |
ๆๅปๆๅฎ / Time Specification
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใ10ๆ30ๅใซๅบ็บใ | hour: 10, minute: 30 |
| ใๆ8ๆใฎ้ป่ปใ | hour: 8 |
| ใๆๆฅใฎๆ9ๆใ | day: (tomorrow), hour: 9 |
| "Departing at 10:30 AM" | hour: 10, minute: 30 |
| "Train at 8 in the morning" | hour: 8 |
ๅฐ็ๆๅปๆๅฎ / Arrival Time (timeType)
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใ18ๆใซ็ใใใใ | timeType: arrival, hour: 18 |
| ใ9ๆใฎไผ่ญฐใซ้ใซๅใใใใซใ | timeType: arrival, hour: 9 |
| "I want to arrive by 6 PM" | timeType: arrival, hour: 18 |
| "Need to be there for a 9 AM meeting" | timeType: arrival, hour: 9 |
ๅง็บใป็ต้ป / First/Last Train (timeType)
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใๅง็บใงใ | timeType: first_train |
| ใไธ็ชๆฉใ้ป่ปใ | timeType: first_train |
| ใ็ต้ปใงๅธฐใใใใ | timeType: last_train |
| ใๆ็ต้ป่ปใฏ๏ผใ | timeType: last_train |
| "First train of the day" | timeType: first_train |
| "Last train home" | timeType: last_train |
ๅบงๅธญๆๅฎ / Seat Preference (seatPreference)
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใ่ช็ฑๅธญใงใ | seatPreference: non_reserved (default) |
| ใๆๅฎๅธญใงใ | seatPreference: reserved |
| ใใฐใชใผใณ่ปใงใ | seatPreference: green |
| ใ่ด ๆฒขใซใฐใชใผใณ่ปใงใ | seatPreference: green |
| "Non-reserved seat" | seatPreference: non_reserved |
| "Reserved seat please" | seatPreference: reserved |
| "Green car / first class" | seatPreference: green |
้่ณใฟใคใ / Fare Type (ticket)
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใIC้่ณใงใ | ticket: ic (default) |
| ใใใฃใทใฎๅคๆฎตใงใ | ticket: cash |
| ใSuicaใงใ | ticket: ic |
| "Using IC card" | ticket: ic |
| "Cash fare please" | ticket: cash |
ๆญฉใ้ๅบฆ / Walking Speed (walkSpeed)
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใๆฅใใงใใฎใงๆฉๆญฉใใงใ | walkSpeed: fast |
| ใใใฃใใๆญฉใใใใ | walkSpeed: slow |
| ใ่ถณใๆชใใฎใงใใฃใใใ | walkSpeed: slow |
| "I'm in a hurry, fast walking" | walkSpeed: fast |
| "Walking slowly, I have luggage" | walkSpeed: slow |
ไธฆใณ้ / Sort Order (sortBy)
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใไธ็ชๆฉใใซใผใใ | sortBy: time (default) |
| ใไธ็ชๅฎใใซใผใใ | sortBy: fare |
| ใไนใๆใๅฐใชใใฎใใใใ | sortBy: transfer |
| "Fastest route" | sortBy: time |
| "Cheapest route" | sortBy: fare |
| "Fewest transfers" | sortBy: transfer |
ไบค้ๆๆฎตใฎ้คๅค / Excluding Transport Types
| ใใชใใฎ่ณชๅ / Your Question | ่ช่ญใใใใชใใทใงใณ / Recognized Options |
|---|---|
| ใๆฐๅนน็ทใไฝฟใใชใใงใ | useShinkansen: false |
| ใๅจๆฅ็ทใ ใใงใ | useShinkansen: false, useExpress: false |
| ใใในใฏไนใใใใชใใ | useHighwayBus: false, useLocalBus: false |
| "Without Shinkansen" | useShinkansen: false |
| "Local trains only" | useShinkansen: false, useExpress: false |
| "No buses please" | useHighwayBus: false, useLocalBus: false |
็ตใฟๅใใไพ / Combined Examples
ไพ1 / Example 1: ๅบๅผตใง็ฏ็ดใใใ / Budget business trip
ใๆๆฅใฎๆ10ๆใพใงใซๆฑไบฌใใๅคง้ชใซ็ใใใใๆฐๅนน็ทใชใใงใไธ็ชๅฎใใซใผใใงใ
"I need to arrive in Osaka from Tokyo by 10 AM tomorrow, without Shinkansen, cheapest route"
โ from: ๆฑไบฌ, to: ๅคง้ช, timeType: arrival, hour: 10, useShinkansen: false, sortBy: fare
ไพ2 / Example 2: ่ฆณๅ ใงใใฃใใ / Leisurely sightseeing
ใไบฌ้ฝใใๅฅ่ฏใพใงใใใฃใใๆญฉใใงใ
"From Kyoto to Nara, walking slowly"
โ from: ไบฌ้ฝ, to: ๅฅ่ฏ, walkSpeed: slow
ไพ3 / Example 3: ๆฅใใงใใ / In a hurry
ใไปใใๆธ่ฐทใใ็พฝ็ฐ็ฉบๆธฏใๆ้ใงใๆฉๆญฉใใงใ
"Right now from Shibuya to Haneda Airport, fastest route, fast walking"
โ from: ๆธ่ฐท, to: ็พฝ็ฐ็ฉบๆธฏ, sortBy: time, walkSpeed: fast
ไพ4 / Example 4: ่ค้ใชๆกไปถ / Complex conditions
ใๆฅ้ฑใฎ้ๆๆฅใ18ๆใซๅๅทใซ็ใใใใซๆฐๅฎฟใใใๆฐๅนน็ทใจ้ฃ่กๆฉใฏไฝฟใใชใใงใไนใๆใๅฐใชใ้ ใงใ
"Next Friday, arriving at Shinagawa by 6 PM from Shinjuku, no Shinkansen or planes, fewest transfers"
โ from: ๆฐๅฎฟ, to: ๅๅท, timeType: arrival, hour: 18, useShinkansen: false, useAirline: false, sortBy: transfer
ไพ5 / Example 5: ็ต็ฑ้ง ใๆๅฎ / Specifying via stations
ใๆฑไบฌใใๆฐๅฎฟใพใงใ่กจๅ้ใจ้ฃฏ็ฐๆฉใ็ต็ฑใใฆใไธ็ชๅฎใใซใผใใงใ
"From Tokyo to Shinjuku via Omotesando and Iidabashi, cheapest route"
โ from: ๆฑไบฌ, to: ๆฐๅฎฟ, via: ["่กจๅ้", "้ฃฏ็ฐๆฉ"], sortBy: fare
ไพ6 / Example 6: ่ฆณๅ ใซใผใ / Sightseeing route
ใๆต
่ใใๅๅฎฟใพใงใไธ้ใจ็ง่ๅใจๆฑไบฌใ้ใฃใฆใใใฃใใๆญฉใใงใ
"From Asakusa to Harajuku, passing through Ueno, Akihabara, and Tokyo, walking slowly"
โ from: ๆต
่, to: ๅๅฎฟ, via: ["ไธ้", "็ง่ๅ", "ๆฑไบฌ"], walkSpeed: slow
้็บ / Development
# ใชใใธใใชใใฏใญใผใณ / Clone the repository
git clone https://github.com/YOUR_USERNAME/norikae-mcp.git
cd norikae-mcp
# ไพๅญ้ขไฟใฎใคใณในใใผใซ / Install dependencies
npm install
# ใใซใ / Build
npm run build
# ้็บใขใผใ / Development mode (watch)
npm run dev
# ใในใๅฎ่ก / Run tests
npm test
ๆ่ก่ฉณ็ดฐ / Technical Details
- MCP SDK:
@modelcontextprotocol/sdk - ใใผใฟใฝใผใน / Data source: Yahoo!ไนๆๆกๅ (transit.yahoo.co.jp)
- ใฉใณใฟใคใ / Runtime: Node.js 18+
ๆณจๆไบ้ / Notes
- ใใฎMCPใฏYahoo!ไนๆๆกๅ ใฎWebใใผใธใในใฏใฌใคใใณใฐใใฆใใพใ This MCP scrapes Yahoo! Transit web pages
- ๅไบบๅฉ็จใๆณๅฎใใฆใใพใ Intended for personal use
- Yahoo! JAPANใฎๅฉ็จ่ฆ็ดใใ็ขบ่ชใใ ใใ Please check Yahoo! JAPAN's terms of service
- ใชใขใซใฟใคใ ใฎ้ ๅปถๆ ๅ ฑใฏๅซใพใใชใๅ ดๅใใใใพใ Real-time delay information may not be included
ใฉใคใปใณใน / License
MIT