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
