About Caltrain MCP
Caltrain MCP is an MCP server published by davidyen1124 in the Developer Tools category: caltrain timetables as a remote MCP server, with an interactive timetable view (MCP Apps) for ChatGPT, Claude and other MCP clients. Next.js on Vercel, official GTFS data.
The repository has 10 stars and 7 forks, with the last commit 20 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/davidyen1124/caltrain-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Caltrain MCP
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 2 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
Caltrain MCP
A remote MCP server that tells you exactly when the next Caltrain leaves, so you can be precisely informed about how late it is. It runs on Caltrain's official GTFS schedule, which means the disappointment is official too.
Server: https://caltrain-mcp-rho.vercel.app/mcp (Streamable HTTP, no auth). Live demo at caltrain-mcp-rho.vercel.app.

In ChatGPT and other MCP Apps hosts, answers come with an interactive timetable. Tap a train for its stops, or open the whole day with Express / Limited / Local filters and keep asking questions about what's on screen. Everywhere else you get the same answer as text.
What it knows
- The next trains between two stations, or the last ones that still get you there by 9.
- That the 12:05 AM train belongs to yesterday, that Thanksgiving runs a weekend schedule, and that South County doesn't do weekends.
- Where to change trains when there's no direct one.
- That
sf,sjand22ndare stations, because nobody types "San Francisco Caltrain Station".
Tools: next_trains, list_stations, and get_timetable (only the timetable view calls that one). All read-only.
Development
npm install
npm run dev # http://localhost:3000, MCP at /mcp
npm test
It's Next.js on Vercel:
- Schedule engine:
lib/schedule.ts. - Timetable view:
widget/, React, Tailwind and shadcn built into one HTML file. - Feed:
data/gtfs/. A weekly GitHub Action fetches a fresh one and opens a PR, and merging deploys it.
When the view changes, bump TIMETABLE_URI in lib/mcp/constants.ts. ChatGPT caches it harder than you'd think.
The old Python package on PyPI (uvx caltrain-mcp) still installs, but it's retired. Use the URL above.
License
LICENSE.md. Uses official Caltrain GTFS data; not affiliated with Caltrain. If the train is late, take it up with them.
README fetched from the repository 2 hours ago. The original is authoritative.