Transit MCP
Real-time DC Metro and NYC Subway arrivals, alerts, stations, and DC buses. Read-only, no login.
- 01Stars
- 5
- 02Version
- 6.0.0
- 03License
- MIT
- 04Review
- Passed
- Language
- TypeScript
- Last commit
- 19h ago
- Forks
- 1
- Open issues
- 0
- Registry update
- Oct 17, 2026
Connect
remote$claude mcp add --transport http transit https://transitmcp.com/mcpHeaders
Nothing to configure — it works as is.
Security review
Review passedReviewed 2h ago.
- tools
- 13 tools scanned
- metadata
- scanned
No findings.
Tools
13get_station_predictions
Get real-time train arrival predictions for a transit station. Supports DC Metro and NYC Subway. Accepts a station name or an exact station ID; if a name matches several stations, the result lists the candidates to choose from.
search_stations
Search for transit stations by name or code. Supports DC Metro and NYC Subway.
get_stations_by_line
Get all stations on a specific transit line. Supports DC Metro and NYC Subway.
get_all_stations
Get the complete list of transit stations with coordinates for one city. Large result; prefer search_stations or get_stations_by_line when looking for specific stations.
get_station_transfers
Get transfer connections and nearby stations from a transit station. NYC Subway only.
get_incidents
Get current transit incidents and service advisories for DC Metro or NYC Subway.
get_elevator_incidents
Get current elevator and escalator outages. DC Metro only.
get_bus_predictions
Get real-time bus arrival predictions for a DC Metro bus stop.
get_bus_routes
Get all DC Metro bus routes with route IDs and descriptions.
get_bus_stops
Get DC Metro bus stops. Returns all stops or filters by lat/lon/radius.
get_bus_positions
Get real-time positions of DC Metro buses, optionally filtered by route.
get_train_positions
Get real-time positions of all trains on the DC Metro system.
get_route_info
Get detailed information about a transit route including service patterns. NYC Subway only.
Transit MCP
Transit MCP is an anonymous, read-only Model Context Protocol server for live DC Metro and NYC Subway information.
Metro MCP is now Transit MCP. The new home is transitmcp.com and the docs now live at transitmcp.com/docs. It is the same server with the same docs. The old endpoint
https://metro-mcp.anuragd.me/mcpand the old site will continue to be supported and keep working.
Connect
The production endpoint is https://transitmcp.com/mcp. No login is required. No client credentials, bearer token, or OAuth flow is required; Transit MCP does not collect client credentials. Stale Authorization headers are ignored.
The previous endpoint, https://metro-mcp.anuragd.me/mcp, remains available and serves the same Worker.
Claude
claude mcp add --transport http transit-mcp https://transitmcp.com/mcp
Codex
codex mcp add transit-mcp https://transitmcp.com/mcp
Generic Streamable HTTP client
{
"mcpServers": {
"transit-mcp": {
"type": "http",
"url": "https://transitmcp.com/mcp"
}
}
}
POST /mcp is the recommended stateless Streamable HTTP endpoint. POST and OPTIONS /sse are a compatibility alias; legacy GET SSE, DELETE, session-message URLs, and slash variants return 405.
What it provides
Transit MCP exposes 13 MCP tools across WMATA and MTA data, including arrivals, service incidents, stations, elevator outages, bus operations, train positions, transfer detail, and route information.
It also provides three transit:// URI templates (stations, routes, and incidents) and three canned templates (service-briefing, commute-planner, and accessibility-check). Tool calls are read-only, idempotent, and open-world. Every result includes typed structuredContent and a JSON text fallback.
An Apps-capable host can render the Transit Board resource for all 13 tools. Clients without Apps support receive the same text fallback and structured result; the Apps enhancement does not alter a transit call. See the Apps verification record.
Runtime and safety boundaries
- Protocol: MCP
2026-07-28stateless Streamable HTTP. The server does not advertise sessions, resumability, or server push. - Request trust: public origin and host/origin allowlists are validated at startup. The signed MRTR request-state codec is bound to the MCP method and expires after five minutes.
- Cancellation: client disconnects propagate request cancellation to MCP handlers and upstream transit fetches.
- Caching: discovery and tool metadata are publicly cacheable for 24 hours. Station and route resources are public-cacheable; live incident resources are not. WMATA uses Cloudflare edge cache windows appropriate to each feed, while MTA real-time feeds use a 30-second in-memory cache.
- Rate limiting: roughly 300 requests per 60-second window per source-IP key per Cloudflare location. Shared egress IPs group clients, and enforcement is eventually consistent. This is abuse protection, not a dedicated user quota.
- Rollback: the inactive
MetroMcpAgentclass and originalv1Durable Object migration remain for rollback. Do not add a deletion migration during stabilization.
Deploy your own
Client access is anonymous. A self-hosted Worker still needs its own WMATA API key and a stable MCP_REQUEST_STATE_KEY of at least 32 bytes for signed MRTR state.
bun install --frozen-lockfile
cp .dev.vars.example .dev.vars
bun run dev
Use the checked-in loopback origin, hostname allowlists, and ENVIRONMENT=development values together. Keep .dev.vars out of source control. Production and preview use their own origins, allowlists, state keys, WMATA keys, and MCP_RATE_LIMITER bindings.
Before an approved deployment, run only dry-runs:
bunx wrangler deploy --dry-run --outdir /tmp/metro-mcp-production
bunx wrangler deploy --env preview --dry-run --outdir /tmp/metro-mcp-preview
Verification
Run the suite with bun run test. The direct conformance runner requires only a target URL:
export MCP_CONFORMANCE_TARGET_URL=https://metro-mcp-preview.anuragd.me/mcp
./scripts/run-conformance.sh
See MCP 2026 verification for protocol coverage and security architecture for the public-request and rate-limit boundaries.
Support and legal
License
MIT. See LICENSE.
From the server's repository — third-party content, read it before running anything it suggests.
More in Travel & maps
Lviv Public Transport
io.github.vbhjckfd
Lviv public transport MCP: stops, timetables, routes, and live vehicle positions. No API key.
sixflags-mcp
io.github.chrischall
Six Flags MCP for Claude — live wait times, park hours, shows, and day planning
nyumba-mcp
io.github.gabrielmahia
Kenya housing guides: rents, tenant rights, permits, affordable housing, mortgage estimate.
mazingira-mcp
io.github.gabrielmahia
Kenya environment guides: NEMA permits, climate data sources, protected areas, climate adaptation.
Mubboo Flights Search
flights.mubboo
Look up airport codes and prepare flight search links. No live fares or bookings.
TicketGlide Travel Guides
com.ticketglide
Find attraction and day-trip guides with sources and dates, and create travel search links.
Listing from the official MCP Registry · repository facts from GitHub, 2h ago.