NJ Transit + PATH MCP
An open-source Model Context Protocol server that provides AI agents with tools to query NJ Transit rail and bus schedules, as well as PATH train times. It supports tools for searching stations, finding next departures, and retrieving trip details between locations using official GTFS data.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://nj-transit-mcp.vercel.app/mcpWhat its tools do
6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Uptime 100% over 90 days
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Query next NJ Transit train departures
- Find trip details between stations
- Search for NJ Transit bus stops
- Get PATH train schedules
Source and maintenance
- Last repository push
- Maintenance checked
Protocol and capabilities
- Server
- nj-transit 4.1.5
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 6 advertised
- Resources
- 0 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"subscribe": false,
"listChanged": true
}
}Tools
6 advertised
search_stations — Find NJ Transit, bus, and PATH stations
Find 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 use with next_departures / trip_between.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string"
},
"system": {
"type": "string",
"default": "all"
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"title": "Find NJ Transit, bus, and PATH stations",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}next_departures — Next departures from a station
Next 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 arrivals, no key needed. Times are America/New_York. NOTE: New Jersey Transit has no subway. For a subway-like ride use system='path', or NJ light rail lines HBLR / NLR / River Line.
{
"type": "object",
"required": [
"station"
],
"properties": {
"line": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"limit": {
"type": "integer",
"default": 10
},
"system": {
"type": "string",
"default": "nj_transit"
},
"station": {
"type": "string"
},
"towards": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"title": "Next departures from a station",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}trip_between — Next same-trip trains or buses between two stations
Next 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).
{
"type": "object",
"required": [
"origin",
"destination"
],
"properties": {
"limit": {
"type": "integer",
"default": 5
},
"origin": {
"type": "string"
},
"system": {
"type": "string",
"default": "nj_transit"
},
"destination": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"title": "Next same-trip trains or buses between two stations",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}lines — List all routes
All 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.
{
"type": "object",
"properties": {
"system": {
"type": "string",
"default": "all"
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"title": "List all routes",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}service_alerts — Service alerts
Service 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.
{
"type": "object",
"properties": {
"system": {
"type": "string",
"default": "all"
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"title": "Service alerts",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}server_status — Server status and data freshness
What 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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"title": "Server status and data freshness",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}Prompts
0 advertised
Resources
0 advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-02: 3 of 3 checks answered
- 2026-11-03: 4 of 4 checks answered
- 2026-11-04: 4 of 4 checks answered
- 2026-11-05: 4 of 4 checks answered
- 2026-11-06: 4 of 4 checks answered
- 2026-11-07: 2 of 2 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 843 ms
- 95th percentile latency
- 843 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · repository · passed · metadata changed · updated
- · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
- · probe · passed · 843 ms · metadata changed · 6 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http nj-transit-path-mcp https://nj-transit-mcp.vercel.app/mcpCodex
codex mcp add nj-transit-path-mcp --url https://nj-transit-mcp.vercel.app/mcpCursor
{
"mcpServers": {
"nj-transit-path-mcp": {
"url": "https://nj-transit-mcp.vercel.app/mcp"
}
}
}Cline
{
"mcpServers": {
"nj-transit-path-mcp": {
"type": "streamableHttp",
"url": "https://nj-transit-mcp.vercel.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"nj-transit-path-mcp": {
"type": "http",
"url": "https://nj-transit-mcp.vercel.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http nj-transit-path-mcp https://nj-transit-mcp.vercel.app/mcpClaude Desktop
https://nj-transit-mcp.vercel.app/mcpWindsurf
{
"mcpServers": {
"nj-transit-path-mcp": {
"serverUrl": "https://nj-transit-mcp.vercel.app/mcp"
}
}
}Let your agent find its tools
Find servers like NJ Transit + PATH MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.