yahoo-transit-mcp

yahoo-transit-mcp

Unofficial MCP server for Yahoo! Transit that provides Japanese train route search (including last/first train), real-time service disruption info, and station timetables as MCP tools.

Category
访问服务器

README

yahoo-transit-mcp

CI License: MIT Node.js >=18

Yahoo!乗換案内非公式 MCP(Model Context Protocol)サーバーです。Claude Code / Claude Desktop などのMCPクライアントから、日本の電車の経路検索・終電・運行情報・駅時刻表を調べられるようになります。

Unofficial MCP server for Yahoo! Transit (transit.yahoo.co.jp), a Japanese transit directions service. Provides route search (incl. last/first train), realtime service disruption info, and station timetables as MCP tools. No authentication required. Japanese rail network only.

Claude Codeでの利用イメージ

できること

ツール 説明
search_route 経路検索。出発・到着時刻指定のほか、終電mode: last_train)・始発mode: first_train)に対応。時刻・所要時間・運賃・乗換回数・区間ごとの路線/番線/リアルタイム遅延情報を返す
get_train_status 運行情報(遅延・運転見合わせ)。8地方エリア別。路線名で絞り込むと平常運転かどうかも確認できる
search_station 駅名から駅コードを検索。候補が1件なら路線・方面一覧も返す
get_timetable 駅の発車時刻表。路線・方面・平日/土曜/日祝・時間帯で絞り込み

認証・APIキー・環境変数は一切不要です(ログイン不要の公開ページのみを利用するため)。

クイックスタート

Node.js 18以上が必要です。

Claude Code

プロジェクトの .mcp.json に追加します:

{
  "mcpServers": {
    "transit": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "github:groundcobra009/yahoo-transit-mcp"]
    }
  }
}

またはCLIで:

claude mcp add transit -- npx -y github:groundcobra009/yahoo-transit-mcp

Claude Desktop

claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "transit": {
      "command": "npx",
      "args": ["-y", "github:groundcobra009/yahoo-transit-mcp"]
    }
  }
}

クローンして使う場合

git clone https://github.com/groundcobra009/yahoo-transit-mcp.git
cd yahoo-transit-mcp
npm ci && npm run build
# → MCPクライアントには command: "node", args: ["/path/to/yahoo-transit-mcp/dist/index.js"] で登録

登録後、「明日の朝9時までに大阪駅に着きたい」「山手線は遅れてる?」「終電何時?」のように話しかけるだけで使えます。

出力例

search_route(from: "東京", to: "大阪") の実際の返り値(抜粋):

{
  "routes": [
    {
      "no": 1,
      "depart": "06:00",
      "arrive": "08:40",
      "duration": "2時間40分",
      "fare": "13,870円",
      "transfers": 1,
      "badges": ["早"],
      "legs": [
        {
          "from": "東京", "fromTime": "06:00",
          "line": "JR新幹線のぞみ1号", "destination": "博多行",
          "to": "新大阪", "toTime": "08:22",
          "platform": { "departure": "14番線", "arrival": "21番線" },
          "fare": "8,910円"
        },
        {
          "from": "新大阪", "fromTime": "08:36",
          "line": "JR直通快速107号",
          "to": "大阪", "toTime": "08:40",
          "platform": { "departure": "3番線" }
        }
      ]
    }
  ]
}

スモークテスト(npm run smoke)で4ツールすべてを実データ検証できます:

スモークテストの実行結果

動作原理

公式APIは存在しないため、このサーバーは公開ページに埋め込まれた構造化データを読み取ります。

アーキテクチャ

Yahoo!乗換案内はNext.jsで構築されており、サーバーサイドレンダリングされた各ページには、画面表示用の全データが <script id="__NEXT_DATA__"> タグ内のJSONとして同梱されています(Reactのハイドレーション用・Next.jsの標準動作)。このサーバーはブラウザと同じようにページをGETし、このJSONだけを抽出してパースします。

  • Yahooのバックエンドエンドポイントを直接叩きません(リバースエンジニアリング・トークン取得なし)
  • CSSセレクタに依存しないため、見た目のリニューアル程度では壊れません
  • ページ構造が大きく変わって解析できなくなった場合は、MarkupChangedError がツール結果として明示的に返ります(黙って誤った経路を返すことはありません)

ツールリファレンス

search_route — 経路検索

パラメータ 説明
from / to string(必須) 出発・到着の駅名または地名
via string[] 経由駅(最大3つ)
date / time string YYYY-MM-DD / HH:MM(省略時は現在日時)
mode enum departure(出発・既定)/ arrival(到着)/ first_train(始発)/ last_train(終電)
sort enum time(到着が早い・既定)/ fare(安い)/ transfers(乗換少ない)
ticket enum ic(既定)/ normal(きっぷ)
useShinkansen ほか boolean 新幹線 / 有料特急 / 飛行機 / 高速バスの利用可否(既定: true)

駅名が曖昧な場合は候補リスト(didYouMean)を返します。

get_train_status — 運行情報

パラメータ 説明
area enum 北海道 東北 関東(既定)中部 近畿 中国 四国 九州
line string 路線名の部分一致フィルタ(例: 山手線)。異常がなければ平常運転と分かる
onlyTroubled boolean false で平常運転の路線名一覧も返す

search_station — 駅検索

パラメータ 説明
query string(必須) 駅名(例: 新宿

get_timetable — 駅時刻表

パラメータ 説明
station string(必須) 駅名または駅コード
line / direction string 路線名・方面の部分一致。曖昧なら候補一覧がエラーとして返るので絞り込んで再実行
dayType enum weekday(既定)/ saturday / holiday
hourFrom / hourTo number 返す時間帯(0〜27時台)

アクセスマナー(実装で強制)

相手サーバーに負荷をかけないため、以下をコードで強制しています:

  • 全リクエストの直列化1.5秒以上の間隔src/fetch.ts
  • URL単位の15分キャッシュ
  • 10秒タイムアウト・リトライは通信エラー時の1回のみ

対話的な利用を想定したツールです。ポーリング・一括クロール・大量取得には使わないでください。

開発

npm ci          # 依存インストール
npm run build   # TypeScriptビルド(dist/)
npm run lint    # 型チェック(tsc --noEmit)
npm run smoke   # 実サイトに対する動作確認(約6リクエスト・直列)
npx tsx scripts/try-route.ts 東京 大阪 2026-07-10 09:00 arrival  # 単発の経路検索

CIでは lint / build のみ実行します。smoke は実サイトへアクセスするため、リリース前の手動ゲートとしてローカルで実行してください。

免責事項

  • 本プロジェクトは個人による非公式ツールであり、LINEヤフー株式会社とは一切関係ありません(非公認・非提携)。「Yahoo!」「Yahoo!乗換案内」はサービスの識別のためにのみ言及しており、商標は各権利者に帰属します
  • 公開ウェブページの解析に基づくため、サイト側の変更により予告なく動作しなくなる可能性があります
  • 取得した情報の正確性は保証されません。実際の運行は公式情報を確認してください
  • 本ソフトウェアの利用は自己責任です。利用者は対象サービスの利用規約を自身で確認し、過度なアクセス・商用利用・取得データの再配布を行わないでください

ライセンス

MIT © keitaro (groundcobra009)

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选