NJ Transit rail, bus and PATH schedules via MCP (scheduled, plus live PATH)
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http nj-transit-mcp https://nj-transit-mcp.vercel.app/mcp
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.
| Argument | Type | Description |
|---|---|---|
| system | string |
{
"type": "object",
"properties": {
"system": {
"type": "string",
"default": "all"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| line | any | |
| limit | integer | |
| system | string | |
| station* | string | |
| towards | any |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| query* | string | |
| system | string |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string"
},
"system": {
"type": "string",
"default": "all"
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| system | string |
{
"type": "object",
"properties": {
"system": {
"type": "string",
"default": "all"
}
},
"additionalProperties": false
}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).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| origin* | string | |
| system | string | |
| destination* | string |
{
"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
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.