Labsco
MCP SERVER

Caltrain MCP Server

by davidyen1124

Ask when the next train leaves — "diridon" to "sf" is enough to name the stations.

Travel Booking, Transit & Navigation
Summary
It reads the published timetable, and it is forgiving about how you name a station.

Answers come from the GTFS files Caltrain publishes — stops, trips, stop times and the service calendar — so this is the schedule, not live train positions. The station matching is what makes it usable in conversation: sf resolves to San Francisco and diridon to San Jose Diridon without you spelling either out.

What it is

A Caltrain schedule server built on Caltrain's own GTFS feed. It answers departure questions between any two stations on the line.

What you get
  • Upcoming departures between two stations — next_trains, with an optional when_iso for a specific time
  • All 31 Caltrain stations, from San Francisco to Gilroy — list_stations
  • Forgiving station matching: full names, short names, abbreviations like sf, and partial matches like diridon
  • Weekday and weekend service handled through the GTFS calendar
Requirements

Nothing beyond an MCP client: uvx caltrain-mcp installs and runs the published package. Running from source instead needs uv sync and a GTFS fetch through scripts/fetch_gtfs.py.

Setup effort

One command — uvx caltrain-mcp