关于 Transit MCP
Transit MCP 是面向通用 Agent 的只读公共交通 MCP 服务,覆盖纽约、华盛顿特区和旧金山湾区。它结合时刻表与实时信息,支持行程规划、无障碍路径及车辆状态查询。
主要功能
- 01跨区域行程规划
- 02实时与计划发车信息
- 03线路、车站及服务告警查询
- 04无障碍路线与电梯故障信息
- 05车辆位置与状态查询
- 06纽约、华盛顿特区及湾区覆盖
适用场景
- 01规划跨线路或跨交通方式的出行
- 02查询某站前往指定目的地的下一班车
- 03出发前确认线路中断或电梯故障
- 04查看列车或公交车的位置与去向
MCP 相关
该 MCP 服务通过 Streamable HTTP 提供 18 个工具,涵盖路线规划、发车、服务状态、站点查找和车辆状态。它还提供 transit:// 资源模板及预设提示词。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://transitmcp.com/mcpclaude mcp add --transport http com-transitmcp-transit https://transitmcp.com/mcp{"mcpServers":{"com-transitmcp-transit":{"type":"http","url":"https://transitmcp.com/mcp"}}}在 Cursor 中打开{"servers":{"com-transitmcp-transit":{"type":"http","url":"https://transitmcp.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-transitmcp-transit":{"type":"http","url":"https://transitmcp.com/mcp"}}}{"mcpServers":{"com-transitmcp-transit":{"serverUrl":"https://transitmcp.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Transit MCP
Transit MCP 是一款免费、匿名、只读的模型上下文协议服务,可让你的 AI 回答交通出行问题:怎么去那里、下一班列车什么时候到、有没有线路故障、我的公交车在哪里。这是一个业余项目,通用 Agent(ChatGPT、Claude、Muse、Instinct 等)都可以直接接入。
服务范围包括:
- **纽约:**地铁、长岛铁路、Metro-North 和纽约市公交车。
- **华盛顿特区:**Metrorail 和 Metrobus。
- **旧金山湾区:**511 SF Bay 区域数据源中的所有运营商,包括 BART、Muni、Caltrain、AC Transit、VTA、SamTrans 和渡轮。这里支持出发信息、警报和车辆状态,也支持行程规划。
Metro MCP 现已更名为 Transit MCP。
过去 7 天内已处理近 100,000 次请求。
连接
生产环境端点为 https://transitmcp.com/mcp。无需登录。无需客户端凭据、Bearer 令牌或 OAuth 流程;Transit MCP 不会收集客户端凭据。过时的 Authorization 标头会被忽略。
此前使用的端点 https://metro-mcp.anuragd.me/mcp 将继续提供支持,并指向同一个 Worker。
目录
- OpenAI (ChatGPT/Codex)
- Claude 目录
- 官方 MCP 注册表 (
com.transitmcp/transit-mcp) - Smithery
Claude
claude mcp add --transport http transit-mcp https://transitmcp.com/mcp
Codex
codex mcp add transit-mcp https://transitmcp.com/mcp
通用 Streamable HTTP 客户端
{
"mcpServers": {
"transit-mcp": {
"type": "http",
"url": "https://transitmcp.com/mcp"
}
}
}
Agent 技能
skills/transit-mcp/SKILL.md 会指导 Agent 了解哪个工具能回答哪类问题、如何处理一个名称可能代表多个地点的情况,以及如何在出发前重新核实行程计划,及时向乘客更新信息。可使用 Agent 的技能工具安装(例如 npx skills add Aarekaz/transit-mcp),也可以将此文件复制到其技能文件夹中。
POST /mcp 是推荐使用的无状态 Streamable HTTP 端点。POST 和 OPTIONS /sse 是兼容别名;旧版 GET SSE、DELETE、会话消息 URL 和带斜杠的变体均会返回 405。
提供的功能
此代码库注册了 18 个 MCP 工具:13 个兼容的 DC/NYC 工具,以及五项全局功能:find_transit、plan_trip、get_departures、get_service_status 和 get_vehicle_status。兼容工具会直接调用 WMATA 和 MTA,查询到站信息、服务事件、车站、线路、公交车、列车、换乘和车辆位置。
三个地区都提供这五项全局工具。以下是它们的功能:
plan_trip会使用已发布的时刻表和实时预测,规划站点之间的行程,或从地图坐标出发、包含短途步行的行程。在纽约和 DC,它会自行搜索轨道网络。在任何地方,包括旧金山湾区和公交线路,你都可以在routes中指定要乘坐的线路(最多四条),它会查找这些线路上的实际行程、站点、换乘和步行路线。如果无法自行搜索,它会说明原因并返回routeHints:每个终点附近的线路,以及同时服务两端的线路。每条行程都会经过独立验证器检查,并附带乘客可照着走的简单steps。- 地点名称会按乘客输入的内容使用。一个地点的名称(Penn Station、SFO、街道两侧的两个站点)会涵盖该地点的所有站点。不同地点的同名名称(“Broadway”)会在
plan_trip中分别给出从每个地点出发的最佳行程,在reading中标注并在notice中说明;其他工具则会提出一个问题。没有任何工具会向用户显示表单。 - 使用
get_departures并指定toStop,即可回答“从 A 到 B 的下一班车是什么”:只列出会继续驶往该站点的行程,并显示每班车抵达该站点的时间。 get_departures会合并时刻表和实时行程更新。在纽约市,这包括改道列车和时刻表中没有的列车;这类列车会标记为已观测,而不会被丢弃。你可以直接传入站名;像 Times Sq-42 St 或 14 St-Union Sq 这样的车站综合体会视为一个地点,并列出其中所有线路的出发信息;如果确实是不同站点但名称相同,则会将它们作为选项返回。get_service_status会返回各城市、线路、站点或行程对应的运营机构发布的提醒,以及当地电梯和自动扶梯停运信息:包括各项设施是否位于无障碍通行路线、是否有备用电梯,以及 MTA 建议的绕行方式。- 使用
plan_trip并设置accessibility: "step_free",会规划只在无需走楼梯即可到达站台的地点上下车和换乘的行程,并避开因当前电梯停运而无法通行的站点。站点通行信息来自 WMATA 的 GTFS 和 MTA 的站点列表(包括仅一个方向无障碍的站点);如果实时电梯报告缺失或已过时,它会如实说明,而不会猜测。 find_transit可查找站点、停靠点、线路和列车 ID。站点的排序优先级高于街边停靠点,轨道交通优先级高于公交;每个候选结果都会说明其类型(车站、站台或街边停靠点)、交通方式和线路。部分经过审核的地名也可用,例如 SFO、Union Square、Penn Station、Grand Central 和 Dulles。- 名称识别符合人们的输入习惯:“King Street”可找到 King St-Old Town,“42nd Street Times Square”可找到 Times Sq-42 St,拼错的“Crystl Cty”也能找到对应地点。DC 站点也支持 WMATA 发布的名称(“Chinatown”、“Convention Center”、“Adams Morgan”)。如果没有指定地区,系统会在所有地区搜索该名称;不带参数调用
find_transit会列出各地区及其支持的功能。找不到匹配项时,系统会返回suggestions,列出最接近的名称,但绝不会将其视为匹配结果。 - 从第一个问题开始就能获得实时数据,而不只是第二个问题:协调器会在收到运营机构的数据源后,立即返回某站点的出发信息。乘客看到的时间采用运营机构所在地的当地时间,并包含时区偏移量(
18:32-04:00)。 get_vehicle_status可显示列车和公交车的位置:在线路上、在从出发信息板或规划行程中获取的指定日期行程上,或在某个站点(车站综合体中的每个站点)。每辆列车都会报告其列车 ID(MTA 的 ID,例如1A 1023 207/FAR,或 WMATA 的编号)、当前停靠或正驶往的站点、上一站以及目的地。DC 列车附有 GPS 坐标。MTA 发布的是站点信息,而非坐标,因此,停在站点的纽约市列车会标记在该站点,而两站之间的列车则不会提供坐标,不会进行猜测。 纽约市覆盖范围还包括长岛铁路(Long Island Rail Road)、Metro-North 和纽约市公交车,华盛顿特区则包括 Metrobus。行程会使用所有交通方式,包括公交车,并在 Penn Station、Grand Central 和 Atlantic Terminal 等车站步行换乘;长岛铁路和 Metro-North 的出发信息会显示站台轨道编号。网络规划器会搜索由 cron 在 R2 中构建的精简时刻表,然后精确规划并验证拟议线路(参见src/transit/planner/network-plan.ts)。纽约市公交车的预测、位置和警报来自 MTA Bus Time;未配置其密钥(MTA_BUS_API_KEY)的可自托管 Worker 仅根据时刻表提供纽约市公交车信息。
当 WMATA 或 MTA 发布的时刻表确实发生变化时,系统会在边缘节点重建时刻表。对于 MTA 大约每小时重新发布一次时刻表的纽约市地铁,昨天、今天或明天的变更会在五分钟内完成构建,更远日期的变更则最多等待六小时。511 SF Bay 的时刻表会自动存储并离线构建。如果某次更新会导致当天的大部分服务被移除,系统会拒绝该更新;如果更新会降低实时匹配效果,则会回滚。底层实现一文在文档页面中提供了更详细的说明和示意图。华盛顿特区和纽约市全域公共交通记录了验证过程。SF Bay 数据来自 511 SF Bay 及参与运营方,每个结果都会注明来源。
如实说明限制
- 深夜时段,如果步行范围内没有任何运行中的交通服务,
plan_trip将无法找到行程,并改为返回routeHints。 - 纽约市地铁站间路段没有坐标;MTA 报告的是车站位置,而非 GPS 位置。
- 长时间无请求后,首次调用可能需要数秒,以便加载时刻表。
- 原有的 13 个工具仍保留不变,以兼容旧客户端。
它还提供四个 transit:// URI 模板(车站、路线、事件和带版本的实体)以及三个预设提示词(service-briefing、commute-planner 和 accessibility-check)。请使用 plan_trip 规划行程;不要根据出发信息自行拼接路线。全域结果会区分 realtime、scheduled_only 和 unavailable,并包含来源时间戳、版本、原因、来源标注以及 JSON 文本回退内容。
支持 Apps 的主机可以渲染供华盛顿特区和纽约市 13 个工具使用的 Transit Board 资源。请参见 Apps 验证记录。
运行时与安全边界
- 协议: 无状态 Streamable HTTP,使用 MCP
2026-07-28。服务不会声明会话、可恢复性或服务端推送。 - 请求信任: 公共源站以及 host/origin 允许列表会在启动时验证。签名的 MRTR 请求状态编解码器绑定到 MCP 方法,并在五分钟后过期。
- 取消: 客户端断开连接时,会将请求取消信号传递给 MCP 处理程序和上游公共交通数据获取操作。
- 缓存: 发现信息和工具元数据可公开缓存 24 小时。车站和路线资源可公开缓存;事件和带版本的实体资源不可公开缓存。旧版 WMATA 和 MTA 工具仍使用各自提供方的缓存。全域工具读取带版本的构件和快照,处理请求时不会获取上游提供方的数据。
- 速率限制: 按 Cloudflare 位置,以每个来源 IP 密钥每 60 秒约 300 个请求为限。共享出口 IP 会将多个客户端归为一组,且限流执行存在最终一致性。这是用于防止滥用的保护机制,并非专属用户配额。
- 回滚: 不活跃的
MetroMcpAgent类和原始v1Durable Object 迁移仍保留,以便回滚。稳定化期间不要添加删除迁移。
部署你自己的服务
客户端访问无需身份验证。自托管的 Worker 仍需要自己的 WMATA 和 511 SF Bay API 密钥,以及至少 32 字节的稳定 MCP_REQUEST_STATE_KEY,用于签名 MRTR 状态。
bun install --frozen-lockfile
cp .dev.vars.example .dev.vars
bun run dev
请同时使用仓库中已跟踪的环回源、主机名允许列表和 ENVIRONMENT=development 配置值。不要将 .dev.vars 纳入源代码管理。生产和预览环境各自使用独立的源、允许列表、状态密钥、WMATA 和 511 密钥、工件存储桶以及 MCP_RATE_LIMITER 绑定。
在批准部署之前,只运行试运行:
production_out=$(mktemp -d /tmp/transit-mcp-production.XXXXXX)
preview_out=$(mktemp -d /tmp/transit-mcp-preview.XXXXXX)
node node_modules/wrangler/bin/wrangler.js deploy --dry-run --env "" --outdir "$production_out"
node node_modules/wrangler/bin/wrangler.js deploy --env preview --dry-run --outdir "$preview_out"
验证
运行 bun run build && bun run test && bun run test:apps。一致性运行器会启动并停止专用的隔离本地 Worker,使用已安装的固定版本裁判,并通过映射的真实测试对冻结的产品配置进行门禁检查。完整的官方评分会单独报告,不代表产品配置通过:
./scripts/run-conformance.sh
请参阅全球交通验证,了解当前证据和未通过的上线门禁;参阅旧金山湾区推广,了解启用前提;参阅安全架构,了解请求边界。较早的 MCP 2026 记录仅为历史证据,不代表此分支的验收结果。
支持与法律信息
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。