关于 SF Bay Area Transit MCP
SF Bay Area Transit MCP 帮助 AI 应用规划湾区公共交通行程并查询站点近期班次。它提供易读的行程说明,并在兼容 MCP Apps 的应用中展示交互式详情,数据由 Transitous 提供。
主要功能
- 01搜索湾区地点和站点
- 02按出发或到达时间规划行程
- 03查询站点近期班次
- 04比较公共交通、步行和骑行
- 05在支持的应用中查看交互式行程详情
适用场景
- 01查询湾区地点之间的路线
- 02规划在指定时间前抵达的行程
- 03查看站点即将出发的班次
- 04比较公共交通、步行或骑行
MCP 相关
它向 MCP 客户端提供地点搜索、行程规划、站点班次和服务信息工具。远程连接支持 Streamable HTTP,本地连接支持 stdio。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.riv.lc/sf-transit/mcpclaude mcp add --transport http czekaj-sf-transit https://mcp.riv.lc/sf-transit/mcp{"mcpServers":{"czekaj-sf-transit":{"type":"http","url":"https://mcp.riv.lc/sf-transit/mcp"}}}在 Cursor 中打开{"servers":{"czekaj-sf-transit":{"type":"http","url":"https://mcp.riv.lc/sf-transit/mcp"}}}在 VS Code 中打开{"mcpServers":{"czekaj-sf-transit":{"type":"http","url":"https://mcp.riv.lc/sf-transit/mcp"}}}{"mcpServers":{"czekaj-sf-transit":{"serverUrl":"https://mcp.riv.lc/sf-transit/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍

SF Bay Area Transit MCP
由 Lucas Czekaj 创建(X:@0xLCZ)。由 Reindex Ventures LLC 运营并发布。
使用你的 AI Agent 规划旧金山和湾区的行程。结果会显示步行路线、要乘坐的巴士或火车、换乘地点,以及出发和到达时间。
**免费使用。无需 API 密钥或身份验证。**连接支持远程 MCP 服务的 AI Agent 或应用,也可以在你的电脑上运行服务。MCP 可将 AI 应用连接到工具。支持 MCP Apps 的应用可以显示交互式行程详情。托管服务运行于 Cloudflare Workers Free。Transitous 提供行程规划、地点搜索和站点发车信息。
“我现在从 Ferry Building 去 Baker Beach 怎么走?”
“我明天早上 9 点前要到 Ferry Building。”
“比较公共交通和骑行,并且换乘不超过一次。”
“下一班从 Embarcadero BART 发车的是什么?”
“显示下一班从 Embarcadero 发车的 Muni N 线列车。”
默认提供方适用于轻量、非商业的开源用途。这是一项社区服务,不保证可用性。请参阅提供方详情。
开始使用
连接到托管服务
-
在 AI Agent 的 MCP 或连接器设置中,添加远程服务,并使用官方托管 URL:
https://mcp.riv.lc/sf-transit/mcp -
如果系统询问,请将身份验证设为无。
-
提问:“我现在从 Ferry Building 去 Baker Beach 怎么走?”
用户指南和 IT 审核介绍了设置、工具权限、数据处理、支持和服务限制。地点搜索、行程坐标,以及请求中的站点 ID 和出发时间会发送至 Transitous;请参阅隐私政策。
从 GitHub 安装本地服务
需要 Node.js 22.12 或更高版本,以及 Git。
对于 Claude Desktop,将以下内容添加到其 MCP 配置中。这会从此公开代码库安装服务并启动服务:
{
"mcpServers": {
"sf-transit": {
"command": "npx",
"args": [
"--yes",
"--package=git+https://github.com/czekaj/sf-transit-mcp.git",
"sf-transit-mcp"
]
}
}
}
重启 Claude Desktop 并请求规划行程。对于 Claude Code:
claude mcp add sf-transit -- npx --yes --package=git+https://github.com/czekaj/sf-transit-mcp.git sf-transit-mcp
运行本地副本
git clone https://github.com/czekaj/sf-transit-mcp.git
在项目目录中:
npm ci --ignore-scripts
npm run build
对于 Claude Desktop,请将下方示例替换为本地副本的完整路径:
{
"mcpServers": {
"sf-transit": {
"command": "node",
"args": ["/absolute/path/to/sf-transit-mcp/dist/stdio.js"]
}
}
}
重启 Claude Desktop。对于 Claude Code,注册同一个本地服务:
claude mcp add sf-transit -- node /absolute/path/to/sf-transit-mcp/dist/stdio.js
服务无需凭据或环境变量即可启动。在行程请求中提供出发地址,或使用对话中已有的地址。此服务不会保存家庭地址。如果有多个匹配地点,请在规划行程前选择目标地点。
**隐私:**地点搜索、行程坐标,以及请求中的站点 ID 和出发时间会发送至 Transitous。Transitous 的隐私政策说明,请求 URL 最多会记录两天。本应用的代码不会记录或保存地址或行程结果。你的 AI 应用和托管服务提供商有各自的数据保留政策。项目隐私政策说明了谁会接收数据以及数据如何处理。
如需帮助,请参阅支持或提交 GitHub 问题。安全或隐私问题请发送至 [email protected];请参阅安全。
功能说明
| 工具 | 用途 |
|---|---|
search_places | 查找匹配的湾区地址、地标和站点,并提供其坐标。 |
plan_trip | 规划立即出发、指定时间后出发或在截止时间前到达的行程。 |
get_stop_departures | 获取所选湾区站点即将发车的信息,并在可用时提供实时预估。 |
get_service_info | 查看当前时间、数据来源、致谢信息和服务限制,无需联系 Transitous。 |
公共交通行程包括步行前往和离开站点。你可以限制换乘次数、请求轮椅路线选项,或比较公共交通、步行和骑自己的自行车。结果包含易读的说明和应用可显示的数据。
**MCP 兼容性:**支持版本为 2026-07-28 的协议;远程连接使用 Streamable HTTP,本地连接使用 stdio。也支持较早的版本。本地测试会检查当前和较早版本的连接流程。请参阅经过测试的版本和客户端限制。
时间使用 America/Los_Angeles,即湾区所在的太平洋时区,并包含夏令时调整。行程时间和出发前的等待时间会分别显示。每段公交、火车或渡轮行程都会标明时刻表时间或实时预测。服务提供方不会报告预测数据的新旧程度。实时预测可能已过时。
交互式行程
在支持 MCP Apps 的应用(包括 Claude)中,plan_trip 还会显示交互式行程详情:
- 比较行程选项,包括出发和到达时间、换乘次数及步行时间。
- 打开行程详情,查看站点、出行方向、站台、步行路段和换乘等待时间。
- 查看哪些公共交通时间是实时预估,哪些依据时刻表。
- 选择“刷新”以更新同一行程。“立即出发”会更新为当前时间;指定的出发时间或到达截止时间保持不变。
选择行程并打开详情时,使用的是已返回的结果。刷新会重新请求行程,并采用与普通行程搜索相同的请求限制。视图不会自动更新,也不会加载外部地图。不支持 MCP Apps 的应用会收到易读的行程说明和相同的结果数据。
交互视图支持浅色和深色主题、窄屏、键盘控制,以及应用支持时的全屏详情。视图会按顺序显示行程选项和行程的各个部分。不包含街道地图。
在 Claude 中显示的 Ferry Building → Baker Beach 行程。选择截图可查看原尺寸图片。
Transitous 列出了 Muni、BART、Caltrain、AC Transit、VTA、SamTrans 和区域渡轮的数据来源。可用行程和预测取决于当前提供的数据。地点搜索仅限湾区。步行说明描述地点与站点之间的连接路线,不提供逐向导航。轮椅路线选项适用于步行和换乘路线。车辆是否无障碍可能未知;请查看每段公共交通信息。数据无法确认电梯当前是否运行,也不保证入口和路线无障碍。结果不包含票价、车票、服务提醒或共享单车可用情况。
下一班车
查询某个站点即将出发的班次,即可打开出发信息板。在行程详情的上车步骤中,选择 此站点的下一班车。每条出发信息都会标明实时预估时间或计划时间,以及路线、目的地、运营机构、站台、取消和上车信息(如有提供)。
信息板分三列显示服务、目的地和出发时间。实时或计划状态显示在时间下方。服务名称会完整显示;只有当显示的日期或时间与预估出发时间不同时,才会显示计划时间对比。
选择“刷新”可重新请求该信息板。这不会更改已选行程。路线和目的地筛选器只会缩小已加载的结果范围,不会获取更多班次。系统不会自动轮询或重试。获取时间显示的是获取结果的时间,而不是运营机构上次更新预测的时间。时间均使用太平洋时间。
以下截图展示的是交互视图,其中使用了示例数据,并非当前班次。
选择截图可查看原始尺寸。有关视觉设计的历史和数据源的调查结果,请参阅设计说明和实时到站研究。
Cloudflare 托管
同一份代码使用 Streamable HTTP 在 /sf-transit/mcp 提供远程 MCP 连接。现有的 /mcp 连接仍可正常工作。它不使用 Containers、数据库、存储绑定、API 密钥、OAuth 或后台任务。在自己的计算机上运行服务,可以免去单独的托管服务。Workers Free 提供免费托管额度。部署服务的人需要拥有 Cloudflare 账户;连接到 MCP 端点的人则不需要。
在本地构建并预览:
npm run build:worker
npm run dev:worker
build:worker 会在本地构建,但不会部署。本地测试 URL 为 http://localhost:8787/sf-transit/mcp。
要发布到自己的 Cloudflare 账户,请检查 wrangler.jsonc,使用 Workers Free 账户,并自行运行 Wrangler 的部署命令。将远程 MCP 客户端连接到生成的 https://<worker>.<subdomain>.workers.dev/sf-transit/mcp URL,无需身份验证。在云端运行的 Agent 无法使用计算机上的 localhost URL。
对于 Claude 远程连接器,请在 wrangler.jsonc 中将 vars.PUBLIC_MCP_URL 设为准确的连接器 URL,包含 /sf-transit/mcp,且末尾不加斜杠。Claude 为交互视图使用单独的网址。服务器会根据此 URL 计算该地址。无需注册视图的网址。本地使用或希望应用选择默认地址时,请将值留空。如果连接器 URL 发生变化,也请更新此值。
Reindex Ventures LLC 的生产配置指向 https://mcp.riv.lc/sf-transit/mcp。wrangler.jsonc 中名为 production 的环境会配置 sf-transit-mcp Worker、公司的主机名,以及重定向到 https://reindexventures.com 的根路径。代码仓库仍为 czekaj/sf-transit-mcp。
对于 Cloudflare 连接的 Git 构建,请使用 npm run build:widget 作为构建命令,并使用 npx wrangler deploy --env production 作为部署命令。生产环境 URL 变量来自此配置;无需手动设置 URL 变量,也无需使用其他配置文件。默认配置没有自定义域名,因此各个 fork 都可以独立部署。请参阅 Cloudflare 部署指南。
在本地检查维护者配置,但不进行部署:
npm run build:worker:production
公开部署必须遵守 Transitous 的使用政策。在服务大量用户或发送大量自动化流量之前,请与其维护者协调。每个运行中的服务器或 Worker 实例每分钟最多向 Transitous 发出 20 次请求,最近 24 小时内最多发出 600 次请求。实例重启后,这些限制会重置,且不会限制所有实例的请求总量。服务不会在后台请求更新,也不会自动重试。查询站点出发信息会向 Transitous 发出一次请求。普通的公交搜索会向 Transitous 发出一次请求。比较不同交通方式时,每种方式会发出一次请求。
开发
npm run check
npm run build:worker
测试使用虚构示例和模拟的服务响应,不会调用实时交通 API。Worker 构建和类型生成均在本地运行。更改 Wrangler 配置后,请重新生成类型:
npm run types:worker
使用虚构交通服务和公共场所示例预览交互式视图:
npm run preview:widget
打开 http://127.0.0.1:8798。预览通过隔离框架中的 MCP Apps 连接运行。控件展示浅色和深色主题、窄屏、无结果以及刷新失败等情况。它不会发起任何交通 API 请求。编辑视图后,请重新构建并加载。npm run build:widget 会生成其 HTML,并创建一个根据文件内容标识的 MCP 资源。生成的文件不会提交。
MCP 连接、Transitous 请求和显示代码彼此独立。请求和响应遵循 Transitous 链接的 MOTIS API 版本。贡献和测试指南请参阅 CONTRIBUTING.md。
Claude 提交材料包含上架文案、审核人员说明、已批准的截图素材,以及剩余的发布要求。上架文案仍是草稿。使用服务提供方仍须遵循 Transitous 已发布的政策;符合条件的轻量使用无需另行事先批准。
托管服务已作为 io.github.czekaj/sf-transit-mcp 列入官方 MCP Registry。【发布指南】(docs/mcp-registry.md)记录了已验证的提交、离线清单验证、手动发布工作流,以及后续发布所需的审批。
组件预览还包含独立的 BART、Muni 和 Caltrain 出发信息板,以及从行程详情打开的信息板,均使用虚构示例。Caltrain 示例用于检查较长的服务名称和重复的计划时间。
项目美术素材
SF 图标融合了金门大桥、交通线路端点和一辆有轨电车。原始 AI 生成的 PNG 文件为 assets/route-monogram.png,其生成提示词也存放在旁边。MCP 服务、工具和资源的描述包含 PNG 图标,并遵循 MCP 图标规范。应用可自行决定是否显示该图标。
Worker 还会在 /sf-transit/icon.png 提供 512 × 512 的 PNG,供要求填写托管图标 URL 的目录表单使用。部署后,公司的 URL 为 https://mcp.riv.lc/sf-transit/icon.png。它直接提供图片,不需要身份验证,也不会重定向;使用现有 Worker,无需单独的图片托管服务。
运行 npm run build:branding,即可根据原始素材生成徽标、不同尺寸的图标和 assets/social-preview.png。脚本会裁剪并调整所选图片的尺寸,不会调用图片服务。如果源图片发生变化,请在 scripts/build-branding.mjs 中调整裁剪和尺寸设置。社交预览图尺寸为 1280 × 640,用于 GitHub 的 Settings → Social preview。提交此图片不会更改该设置。美术素材采用项目的 MIT 许可证。
许可证和致谢
代码:MIT。交通和地图数据仍遵循各自的许可证。
Transitous 提供的路线规划 · Transitous 数据源 · © OpenStreetMap 贡献者 · 湾区数据由 511.org 提供
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。



