ttc-mcp
This server provides access to Toronto Transit Commission (TTC) data via the Model Context Protocol. Capabilities include:
Fare information: Retrieve current fares for different rider categories (adult, senior, youth, child) and payment types (PRESTO, cash, day pass, monthly), plus the 2‑hour transfer rule. Supports filtering by category and/or type.
Static schedules: Look up subway, streetcar, and bus routes, stops, and timetables.
Real‑time data: Get live vehicle positions and real‑time arrival predictions for buses and streetcars (subway real‑time is not published).
Service alerts: Read disruptions across all TTC modes.
Trip planning: Plan multi‑modal trips with transfers (in active development).
Deployment: Self‑hostable via Docker or Vercel, using stdio or Streamable HTTP transports.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ttc-mcpShow me the next streetcar arrivals at Queen and Spadina."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ttc-mcp
A Model Context Protocol server for the Toronto Transit Commission (TTC). Exposes subway, streetcar, and bus schedules, live vehicle positions, real-time arrivals, and service alerts to LLM clients — plus multi-modal trip planning with transfers.
Built entirely on TTC's official open feeds — no API key required:
Static GTFS (routes, stops, schedules) from open.toronto.ca
GTFS-Realtime (vehicle positions, trip updates, service alerts) from
bustime.ttc.ca
TypeScript · stdio + Streamable HTTP transports · self-hostable via Docker or Vercel.
Sibling project to go-planning-mcp (GO Transit / Metrolinx).
Status: in active development. Tracked via a wayfinder map under
.wayfinder/— most of the static-schedule surface (stops, routes, schedules) is implemented; real-time tools andplan_tripare landing incrementally. See the repo's open issues for exact status.
Scope notes
Real-time coverage (live positions & arrivals) is bus + streetcar only — TTC does not publish subway real-time. Subway is served from the static schedule plus service alerts.
Fares are a flat PRESTO fare with a 2-hour transfer window (no machine-readable fare data in the feed).
Related MCP server: BVG MCP Server
Self-hosting
Quick start (Docker)
docker run -p 3000:3000 ghcr.io/emilsoleymani/ttc-mcp:latestOr with the provided docker-compose.yml:
docker compose up -dThe image bakes a local libSQL file from TTC's live GTFS feed at build time, so it's self-contained — no external database needed. Once running, connect an MCP client to http://localhost:3000/mcp (Streamable HTTP), or curl http://localhost:3000/health for a liveness check.
Configuration
Var | Purpose | Default |
| Schedule DB connection: a |
|
| Turso auth token (only needed when | — |
| Overridable GTFS-Realtime base URL |
|
| Coalescing cache window for decoded RT feeds |
|
| Set |
|
| HTTP transport port |
|
Updating
The Docker image is self-contained, so picking up newer TTC schedule data means pulling a freshly-built image (the upstream GTFS Refresh workflow rebuilds and republishes on a weekly cadence, or trigger your own rebuild):
docker compose pull && docker compose up -dIf you instead point LIBSQL_URL at a shared Turso database, data freshness follows that database directly — no image update needed.
Building from source
git clone https://github.com/EmilSoleymani/ttc-mcp.git
cd ttc-mcp
npm ci
npm run ingest # downloads the live TTC feed, builds ./data/ttc.db
npm run build
npm run start:http # or: npm run start:stdioLicense
MIT © 2026 Emil Soleymani
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- Alicense-qualityDmaintenanceA Model Context Protocol (MCP) server that provides cached access to Munich Public Transport (MVG) disruption data.Creative Commons Zero v1.0 Universal
- Alicense-qualityDmaintenanceAn MCP server for interacting with the Berlin Public Transport (BVG) API to search for locations and plan journeys. It provides real-time access to departures, arrivals, trip details, and vehicle tracking within Berlin's transit network.MIT
- Alicense-qualityBmaintenanceMCP server that provides tools for querying live transit data (stops, departures, routes, vehicles, alerts) from any WP GTFS Pro site, enabling AI assistants to answer rider questions.14GPL 2.0
- AlicenseAqualityAmaintenanceMCP server for Atlanta MARTA real-time transit data, enabling queries about train arrivals and bus positions via natural language.4MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
MCP server for Mireye Earth — federal-source-cited geospatial data for any MCP-aware agent.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/EmilSoleymani/ttc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server