Park Graph
Find, price and book parking at Park Graph lots: search, quote, hold and session tools.
제작자가 쓴 설명(영어 원문)
NJ Transit rail, bus and PATH schedules via MCP (scheduled, plus live PATH)
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:
https://nj-transit-mcp.vercel.app/mcp터미널에서 이 명령어를 실행하세요
claude mcp add --transport http nj-transit https://nj-transit-mcp.vercel.app/mcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"nj-transit": {
"url": "https://nj-transit-mcp.vercel.app/mcp"
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"nj-transit": {
"type": "http",
"url": "https://nj-transit-mcp.vercel.app/mcp"
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:
https://nj-transit-mcp.vercel.app/mcp메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
도구 이름과 설명은 서버가 2026년 11월 6일에 알려 준 그대로예요. 우리가 아니라 제작자가 쓴 글이고, 일반 텍스트로만 보여 드려요.
search_stationsFind stations/stops by name. system: 'nj_transit' (rail + light rail), 'nj_bus' (NJ Transit bus street stops), 'path', or 'all'. 'all' includes bus, so a first 'all' search downloads the 50 MB bus GTFS once; use system='nj_bus' for bus-only searches. Returns station/stop IDs to u
next_departuresNext departures from a station/stop (name or stop ID). system 'nj_transit': rail + light rail, scheduled by default, live delays when NJT credentials are configured. system 'nj_bus': NJ Transit bus, SCHEDULED only in v1.2 (BUSDATA live not enabled). system 'path': live PATH arriv
trip_betweenNext NJ Transit trains/buses from origin to destination on the SAME trip (no transfers). Returns departure, arrival and duration. Times ET. system: 'nj_transit' (default, rail + light rail) or 'nj_bus' (bus, scheduled only in v1.2).
linesAll lines/routes. NJ Transit: 17 rail + light-rail routes. NJ bus: 263 routes (short_name is the bus number; long names are empty in the bus feed, use trip headsigns for destinations). PATH: 4 daytime routes.
service_alertsService alerts. NJ Transit alerts require NJT credentials (see server_status for how to enable); PATH has no separate alerts feed in v1, so PATH alerts are reported as unavailable, not invented.
server_statusWhat data this server is actually serving right now: GTFS date range and counts, whether live NJ data is enabled, PATH feed age. Use this to answer 'is this live or scheduled?' honestly.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 9일 점검
레지스트리 이름이 GitHub 계정 mir-quadri 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
104ms 만에 응답(HTTP 200)
로그인 필요 없음
도구 설명 6개를 읽었고, AI에게 보내는 숨겨진 지시는 없었어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
제작자의 클라우드에서 실행돼요. 설치 없이 인터넷으로 연결하지만, 보내는 내용은 제작자의 서버를 거쳐요.
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.3.0)은 7일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
같은 카테고리에는: Park Graph, Open Transfer Times, Gogcli MCP Maps
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Find, price and book parking at Park Graph lots: search, quote, hold and session tools.
Check if a flight connection is comfortable, tight or risky, with cited airport data.
Google Places + trip maps via gogcli for Claude — places through gog maps, pins, shortlists, My Maps
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
A Model Context Protocol server that gives any MCP-compatible AI (Claude, Gemini CLI, ChatGPT, Cursor, VS Code, …) real NJ Transit and PATH schedules instead of guessed ones.
The consumer Gemini app/web chat has no live-transit tool and no MCP support — it answers from training data and web snippets, which is why a "live schedule" request fails or goes stale. An MCP client that can call *this* server gets the answer from a feed at query time.
Important, verified distinction in v1:
| System | v1 data | Key needed? |
|---|---|---|
| NJ Transit rail + light rail (17 routes) | Scheduled departures from official GTFS rail_data.zip | No |
| NJ Transit live delays / cancellations | GTFS-Realtime TripUpdates + Alerts via raildata.njtransit.com | Yes — free registration (see below) |
| PATH (Newark ↔ NYC) | Live arrivals from GTFS-Realtime, ~5 s updates | No |
Every response labels its data_source: scheduled, live_gtfs_rt, or an explicit note. Nothing is ever presented as "live" when it is only scheduled.
Note on "subways": NJ Transit has no subway. Its subway-like services are the light-rail lines in this same file — Hudson-Bergen (HBLR), Newark Light Rail (NLR), River Line (RVLN) — plus PATH, which is the NJ↔NYC rapid-transit system. Both are in v1.
search_stations(query, system="all") — find station/stop IDs. system: nj_transit, nj_bus, path, all.next_departures(station, limit=10, system="nj_transit", line?, towards?) — next departures. station can be a name or stop ID. Ambiguous names (e.g. "Secaucus" = Upper vs Lower Level, "PORT AUTHORITY BUS TERMINAL" = 4 stop IDs) return candidates instead of guessing. Use system="nj_bus" for bus (scheduled only in v1.3).trip_between(origin, destination, limit=5, system="nj_transit") — next same-trip NJ Transit trains/buses, with departure, arrival, duration. Add system="nj_bus" for bus.lines(system="all") — all routes (285 total: 17 rail + 263 bus + 5 PATH).service_alerts(system="all") — NJ rail alerts when credentials are set; bus and PATH alerts reported as not available, never invented.server_status() — GTFS date range/counts for rail and bus, whether live NJ data is on, PATH feed age. Ask this when you need to know if an answer is live or scheduled.Run with python test_client.py (in-memory FastMCP client) and over Streamable HTTP on port 8123. Both passed, all 6 tools listed.
server_status: GTFS Sep 15 2026 – Mar 13 2027, 230 stops, 17 routes, 6,197 trips; PATH feed live at 09:16:39 ET, 54 entities.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 is downloaded on first run to data/rail_data.zip and refreshed if older than 24 h. No credentials are logged; the NJ token (if set) is cached in data/.njt_token.json (0600) for the day, because getToken is limited to 10 calls/day (TripUpdates itself is unlimited once you have a token).
export NJT_USERNAME="your-username"
export NJT_PASSWORD="your-password"
server_status — nj_live_enabled should be true, and departures will carry data_source: "live_gtfs_rt" with delay_min / status when the feed reports one. Without these variables the server still works, scheduled-only.Caveat to verify on first live run: the GTFS-Realtime trip_id matching against GTFS trip_id is implemented defensively (exact match); if NJ's RT feed uses a different trip-ID scheme, live departures will stay scheduled and server_status / live_info.live_trips_in_feed will show the feed was reached but did not match. That is the one unverified piece in v1, because it cannot be tested without credentials.
~/.gemini/settings.json (or .gemini/settings.json in a project):
{
"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 } } }
Or: gemini mcp add --transport stdio nj-transit -- /path/to/.venv/bin/python /path/to/server.py Then ask: *"Next NJ Transit train from Newark Penn to New York Penn?"* — Gemini CLI will call trip_between.
The consumer Gemini app (gemini.google.com / mobile app) does not support MCP as of this build, so this server cannot be plugged into that app directly. Gemini CLI, Gemini API / ADK (MCPToolset with StdioServerParameters), and third-party Gemini-API clients can.
Stdio, same command/args as above, in claude_desktop_config.json under mcpServers (or the client's equivalent MCP settings).
ChatGPT cannot use a local stdio server. It needs a public HTTPS URL with Streamable HTTP. This server is now free and public, no auth required:
https://nj-transit-mcp.vercel.app/mcp, Authentication: None.Public deployment status (2026-10-31, 17:35 ET): LIVE and FREE on Vercel — the bearer token was removed, the production deployment (main, commit af9e8a6, Public submission pack v1.3) redeployed Ready, and POST /mcp with no Authorization header was verified returning a 200 MCP initialize response. Source: https://github.com/mir-quadri/nj-transit-mcp (public). Official MCP Registry: io.github.mir-quadri/nj-transit-mcp v1.3.0, status active (published 2026-11-01). Note: in free mode there is no /health route — GET / and GET /health return 404; GET /mcp returns 405 (POST only). Rate limit: 60 requests/minute per IP per instance.
Same 6 tools, bus provider only. Source: official public GTFS https://www.njtransit.com/bus_data.zip — 263 routes, 16,563 stops, 33,287 trips, 1,776,403 stop_times rows, service Oct 20 2026–Apr 17 2027 (calendar_dates only, same quirk as rail: a trip runs iff its service_id is listed for that date). Use system='nj_bus' for search_stations, next_departures, trip_between (add system='nj_bus'), and lines. Bus stops are street stops, so ambiguous names (e.g. "PORT AUTHORITY BUS TERMINAL" = 4 stop IDs) return candidates instead of guessing — use a stop ID when in doubt.
Honest limits: bus departures are scheduled only in v1.2. BUSDATA live delays/alerts are NOT enabled (separate API, not verified), so nothing bus is ever labelled live. Because stop_times is 1.7M rows, the server streams it per query instead of loading it into memory (shapes.txt is never read): a bus departure query takes ~4–5 s locally, and the first bus query after a cold start takes ~5 s to load metadata. Verified locally 2026-10-28 ~20:48 ET: Port Authority stop 3511 → 20:48 bus 119, 190, 320; Newark Penn bus stop 43283 → 21:28/22:28/23:28 bus 108 to New York; trip 108 Clifton Ave at E 7th Ave → Pavillion Apartments Tower South 21:15 → 21:18. Rail tools are unchanged (17 routes, 285 lines total across rail + bus + PATH).
server.py is designed so each is one new provider (GTFS + GTFS-Realtime URLs + station map), not a rewrite.trip_between is same-trip only./mcp endpoint (definitive verification, see above).developer.njtransit.com/doc/NJTRANSIT_Rail_GTFSRT_V1.pdf — getToken / getGTFS / getAlerts / getTripUpdates / getVehiclePositions; 10 token calls/day, RT calls unlimited.datasource.njtransit.com — BUSDATA, RailData, GTFS-BUS, GTFS-RAIL catalog.https://www.njtransit.com/rail_data.zip (also listed by Mobility Database, Sep 15 2026 – Mar 13 2027).https://www.njtransit.com/bus_data.zip (263 routes, 16,563 stops, Oct 20 2026 – Apr 17 2027, checked 2026-10-28).https://path.transitdata.nyc/gtfsrt (community feed, ~5 s refresh; station IDs verified against the official PATH GTFS static feed).