mcpField
N
nj-transit-mcp

nj-transit-mcp

リモート
github.com/mir-quadri地図・旅行01 日前に更新
リポジトリ

nj-transit-mcp について

nj-transit-mcp は、MCP 対応 AI クライアントに NJ Transit の鉄道・ライトレール・バスの時刻表と PATH の到着情報を提供します。予定時刻とライブデータを区別し、ライブ情報が利用できない場合も明示します。

主な機能

  1. 01駅や停留所の検索
  2. 02次の出発便の照会
  3. 03停留所間の同一便による移動検索
  4. 04路線と運行アラートの一覧
  5. 05データソースとフィード状態の表示

活用シーン

  1. 01駅からの次の列車の確認
  2. 02予定バス便の検索
  3. 03PATH のライブ到着情報の確認
  4. 04便の情報がライブか予定かの確認

MCP 対応

MCP サーバーは、駅検索、出発便、同一便での移動、路線、アラート、サーバー状態の6つのツールを公開します。クライアントは NJ Transit の予定鉄道・バス情報、任意の鉄道ライブ情報、PATH のライブ到着情報を利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://nj-transit-mcp.vercel.app/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

NJ Transit + PATH + NJ Transit bus MCP サーバー — v1.3

MCP 互換の AI(Claude、Gemini CLI、ChatGPT、Cursor、VS Code、…)に、推測ではなく NJ Transit と PATH の実際の時刻表を提供する Model Context Protocol サーバーです。

Gemini ではこれまでできなかった理由

一般ユーザー向けの Gemini アプリ/ウェブチャットには、リアルタイム交通機関ツールも MCP サポートもありません。そのため、学習データとウェブ上の抜粋をもとに回答し、「リアルタイムの時刻表」を求めると失敗したり、情報が古くなったりします。このサーバーを呼び出せる MCP クライアントなら、クエリ時点のフィードから回答を取得できます。

v1 における重要な確認済みの違いは次のとおりです。

システムv1 のデータキーが必要ですか?
NJ Transit 鉄道+ライトレール(17 路線)公式 GTFS rail_data.zip の予定出発時刻いいえ
NJ Transit のリアルタイム遅延/運休raildata.njtransit.com 経由の GTFS-Realtime TripUpdates + Alertsはい — 無料登録が必要です(下記参照)
PATH(Newark ↔ NYC)GTFS-Realtime によるリアルタイム到着情報、約 5 秒ごとに更新いいえ

すべての応答に data_source として、scheduled、live_gtfs_rt、または明示的な注記が表示されます。予定情報しかない場合に「リアルタイム」として提示されることはありません。

「地下鉄」についての注記:NJ Transit に地下鉄はありません。地下鉄に似たサービスは、このファイルに含まれるライトレール路線(Hudson-Bergen(HBLR)、Newark Light Rail(NLR)、River Line(RVLN))と、NJ↔NYC 間の高速交通システムである PATH です。どちらも v1 に含まれています。

ツール(6 個)

  • search_stations(query, system="all") — 駅/停留所の ID を検索します。 system:nj_transit、nj_bus、path、all。
  • next_departures(station, limit=10, system="nj_transit", line?, towards?) — 次の出発時刻を取得します。station には駅名または停留所 ID を指定できます。曖昧な名前(例:「Secaucus」=Upper Level と Lower Level、「PORT AUTHORITY BUS TERMINAL」=4 つの停留所 ID)の場合、推測せず候補を返します。 バスには system="nj_bus" を使用します(v1.3 では予定情報のみ)。
  • trip_between(origin, destination, limit=5, system="nj_transit") — NJ Transit の次の同一列車/バスでの移動を、出発時刻、到着時刻、所要時間とともに取得します。バスには system="nj_bus" を追加します。
  • lines(system="all") — すべての路線(合計 285:鉄道 17 + バス 263 + PATH 5)を取得します。
  • service_alerts(system="all") — 認証情報が設定されている場合は NJ の鉄道アラートを取得します。バスと PATH のアラートは利用できないと報告し、決して捏造しません。
  • server_status() — 鉄道とバスの GTFS の日付範囲/件数、NJ のリアルタイムデータが有効かどうか、PATH フィードの経過時間を取得します。回答がリアルタイムか予定情報かを確認したい場合に使用してください。

検証済みテスト — 2026-10-28、約 09:16 ET

python test_client.py(メモリ内の FastMCP クライアント)と、ポート 8123 の Streamable HTTP で実行しました。どちらも成功し、6 個のツールすべてが一覧表示されました。

  • server_status:GTFS は 2026 年 9 月 15 日~2027 年 3 月 13 日、停留所 230 か所、路線 17 本、便数 6,197 件。PATH フィードは 09:16:39 ET 時点でリアルタイム、エンティティ 54 件。
  • Newark Penn → 次の便:09:17 NEC で New York Penn 行き、09:17 RARV で Raritan 行き、09:23 NEC で New York Penn 行き(予定)。
  • New York Penn 発 → 次の便:09:24 NJCL で Secaucus Upper Level 行き、09:42 NEC で Trenton 行き。
  • Newark Penn → New York Penn:09:17 → 09:39(22 分、NEC)、09:23 → 09:41(18 分、NEC)。
  • PATH のリアルタイム情報:Newark 発は 09:15(現在)、09:20 World Trade Center 行き;Hoboken 発は 09:16 WTC 行き、09:17 33rd St 行き。

実行方法

cd ~/workspace/mcp-servers/nj-transit
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python server.py            # stdio (default)
.venv/bin/python server.py --transport http --port 8000   # remote

GTFS は初回実行時に data/rail_data.zip へダウンロードされ、24 時間より古い場合は更新されます。認証情報はログに記録されません。NJ トークン(設定されている場合)は、getToken の呼び出しが 1 日 10 回までに制限されているため、その日のあいだ data/.njt_token.json(0600)にキャッシュされます(トークンを取得した後は、TripUpdates 自体に回数制限はありません)。

LIVE の NJ Transit 遅延を有効にする(無料、5 分)

  1. https://developer.njtransit.com/registration で登録します (https://datasource.njtransit.com としても掲載されています)。Test と Production の認証情報がメールで届きます。
  2. サーバーを起動する前に設定します。
export NJT_USERNAME="your-username"
export NJT_PASSWORD="your-password"
# optional: NJT_BASE_URL=https://raildata.njtransit.com (default)
  1. server_status を呼び出します。nj_live_enabled が true になり、 フィードから遅延情報が報告されている場合、出発情報には data_source: "live_gtfs_rt" と delay_min / status が含まれます。 これらの変数を設定しなくてもサーバーは動作しますが、時刻表のみを使用します。

初回のライブ実行時に確認が必要な点:GTFS-Realtime の trip_id と GTFS の trip_id の照合は、厳密一致で防御的に実装されています。NJ の RT フィードで異なる trip-ID 方式が使われている場合、ライブ出発情報は時刻表のままになり、 server_status / live_info.live_trips_in_feed には、フィードには接続できたものの 一致しなかったことが示されます。認証情報なしではテストできないため、 v1 で未検証なのはこの点だけです。

接続する

Gemini CLI(MCP に対応する Gemini の接続方法です)

~/.gemini/settings.json(またはプロジェクト内の .gemini/settings.json):

{
  "mcpServers": {
    "nj-transit": {
      "command": "/path/to/mcp-servers/nj-transit/.venv/bin/python",
      "args": ["/path/to/mcp-servers/nj-transit/server.py"],
      "env": { "NJT_USERNAME": "", "NJT_PASSWORD": "" },
      "timeout": 30000
    }
  }
}

または:gemini mcp add --transport stdio nj-transit -- /path/to/.venv/bin/python /path/to/server.py 次のように尋ねます:「Newark Penn から New York Penn への次の NJ Transit の列車は?」 — Gemini CLI が trip_between を呼び出します。

一般ユーザー向け Gemini アプリ(gemini.google.com /モバイルアプリ)は、 このビルドの時点では MCP をサポートしていないため、このサーバーを アプリに直接接続することはできません。Gemini CLI、Gemini API / ADK( StdioServerParameters と組み合わせた MCPToolset)、およびサードパーティの Gemini API クライアントは利用できます。

Claude Desktop / Claude Code / Cursor / VS Code

Stdio を使用し、上記と同じコマンド/引数を claude_desktop_config.json の mcpServers 配下に設定します(または、クライアントに相当する MCP 設定に設定します)。

ChatGPT

ChatGPT はローカルの stdio サーバーを使用できません。Streamable HTTP に対応した、 公開 HTTPS URL が必要です。このサーバーは現在、無料かつ公開されており、認証は不要です。

  • 公開 URL:https://nj-transit-mcp.vercel.app/mcp
  • ChatGPT Developer Mode(Pro / Team / Enterprise / Edu): Settings → Apps & Connectors → Create → https://nj-transit-mcp.vercel.app/mcp を入力し、 Authentication を None に設定します。

公開デプロイの状況(2026-10-31、17:35 ET):**Vercel で稼働中、無料です ** — ベアラートークンを削除し、本番デプロイ(main、コミット af9e8a6、Public submission pack v1.3)を 再デプロイして Ready になりました。また、Authorization ヘッダーなしの POST /mcp が 200 の MCP initialize 応答を返すことを確認しました。 ソース:https://github.com/mir-quadri/nj-transit-mcp(公開)。 Official MCP Registry:io.github.mir-quadri/nj-transit-mcp v1.3.0、ステータスは active(公開日:2026-11-01)。 注:無料モードでは /health ルートはありません。GET / と GET /health は 404 を返し、GET /mcp は 405 を返します(POST のみ)。 レート制限:インスタンスごとに IP あたり毎分 60 リクエスト。

NJ Transit バス(v1.2、system='nj_bus')

同じ6つのツールに対応し、バス事業者のみを対象とします。データソースは公式の公開GTFSです。 https://www.njtransit.com/bus_data.zip — 263路線、16,563か所の停留所、 33,287便、1,776,403行のstop_timesが含まれます。サービス期間は2026年10月20日~2027年4月17日です(calendar_datesのみ。鉄道と同じ仕様で、該当日のservice_idが登録されている場合に限り、その便が運行します)。search_stations、next_departures、trip_between(system='nj_bus'を追加)、linesにはsystem='nj_bus'を指定してください。バス停は路上にあるため、名前が曖昧な場合(例:「PORT AUTHORITY BUS TERMINAL」は4つの停留所IDに該当)は推測せず候補を返します。迷った場合は停留所IDを使用してください。

制限事項を明記します。v1.2では、バスの発車時刻は時刻表のみです。 BUSDATAのリアルタイム遅延・アラートは有効になっていません(別のAPIであり、未検証のため)。そのため、バスの情報にリアルタイム表示が付くことはありません。stop_timesは170万行あるため、サーバーはメモリに読み込まず、クエリごとにストリーミング処理します(shapes.txtは読み込みません)。バスの発車時刻クエリにはローカルで約4~5秒かかり、コールドスタート後の最初のバスクエリではメタデータの読み込みに約5秒かかります。2026-10-28の約20:48 ETにローカルで検証済み: Port Authorityの停留所3511 → 20:48発のバス119、190、320;Newark Pennのバス停43283 → 21:28/22:28/23:28発、New York行きのバス108;trip 108のClifton Ave at E 7th Ave → Pavillion Apartments Tower South、21:15 → 21:18。鉄道ツールに変更はありません(鉄道+バス+PATHで合計17路線、285ライン)。

v1.3に含まれないもの

  • NJ Transitバスのリアルタイム遅延・アラート:BUSDATAは有効になっていません。
  • NYC Subway、SEPTA、Amtrak、フェリー:v1.2には含まれません。server.pyのプロバイダー構造は、書き換えではなく、それぞれ新しいプロバイダー(GTFS+GTFS-RealtimeのURL+駅マップ)を追加できるよう設計されています。
  • 乗り換え/複数区間の移動:trip_betweenは同一便のみが対象です。
  • 運賃、駐車場、アクセシビリティ:使用しているフィードには含まれません。

次のステップ(順番どおり)

  1. 公開/mcpエンドポイントを外部のChatGPTでテストします(決定的な検証については上記を参照)。
  2. MirがNJ Transitの開発者認証情報を登録します → NJ鉄道のリアルタイム遅延をエンドツーエンドで検証します(上記の未検証項目)。必要であれば、バスのBUSDATAリアルタイム情報も検証します。
  3. 同じ6つのツールを再利用して、プロバイダー#3としてMTA Subwayを追加します。

参照元(2026-10-28確認)

  • NJ Transit GTFS-RTドキュメント:developer.njtransit.com/doc/NJTRANSIT_Rail_GTFSRT_V1.pdf — getToken / getGTFS / getAlerts / getTripUpdates / getVehiclePositions;トークン取得は1日10回、RT呼び出しは無制限です。
  • NJ Transit開発者ポータル:datasource.njtransit.com — BUSDATA、RailData、GTFS-BUS、GTFS-RAILのカタログ。
  • NJ Transit公開GTFS:https://www.njtransit.com/rail_data.zip (Mobility Databaseにも掲載。2026年9月15日~2027年3月13日)。
  • NJ Transitバス公開GTFS:https://www.njtransit.com/bus_data.zip (263路線、16,563か所の停留所、2026年10月20日~2027年4月17日。2026-10-28確認)。
  • PATHのリアルタイムGTFS-Realtime:https://path.transitdata.nyc/gtfsrt (コミュニティフィード、約5秒ごとに更新。駅IDは公式のPATH GTFS静的フィードと照合済み)。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。