Skip to main content
Glama

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 and plan_trip are 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:latest

Or with the provided docker-compose.yml:

docker compose up -d

The 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

LIBSQL_URL

Schedule DB connection: a file:... path (the Docker image's baked-in local file) or a libsql://...turso.io Turso URL

file:./data/ttc.db

LIBSQL_AUTH_TOKEN

Turso auth token (only needed when LIBSQL_URL points at Turso)

GTFS_RT_BASE_URL

Overridable GTFS-Realtime base URL

https://bustime.ttc.ca/gtfsrt

RT_CACHE_TTL_SECONDS

Coalescing cache window for decoded RT feeds

25

CACHE_ENABLED

Set false to disable RT response caching entirely

true

PORT

HTTP transport port

3000

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 -d

If 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:stdio

License

MIT © 2026 Emil Soleymani

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
15hResponse time
Release cycle
Releases (12mo)
Commit activity
Issues opened vs closed

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

  • A
    license
    -
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides cached access to Munich Public Transport (MVG) disruption data.
    Creative Commons Zero v1.0 Universal
  • A
    license
    -
    quality
    D
    maintenance
    An 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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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