SF Bay Area Transit MCP

io.github.czekaj由 GitHub 账号 czekaj 发布v0.1.0更新于 Nov 7, 2026

Plan San Francisco and Bay Area transit trips and check upcoming stop departures. Free, no API keys.

已验证Streamable HTTP可网页运行位置与生活效率与工作流

概览

AI 生成的概览

通过免费托管端点规划旧金山湾区公共交通行程、查询站点即将发车的班次,并支持地点搜索。

可以做什么
  • 搜索湾区地址、地标和公交站点及其坐标
  • 规划立即出发、指定出发时间或指定到达截止时间的行程,含步行、换乘及计划或实时时间
  • 查询所选站点的即将发车班次,含实时预估、取消和乘车限制信息
  • 读取服务信息,如当前时间、数据来源和请求限额
适用场景
适合让助手回答湾区出行问题:门到门公交路线、到达截止时间、换乘次数限制、无障碍路线,或某个站点接下来有哪些班次。
运行要求
远程 Streamable HTTP 端点,无需认证、API 密钥或环境变量。也可从 GitHub 本地运行,需要 Node.js 22.12 或更高版本及 Git。地点搜索仅限湾区。
安装前请注意
地点搜索、行程坐标、站点 ID 和发车时间会发送给 Transitous,其隐私政策称请求网址最多记录两天。实时预估可能已过时,且提供方不报告其更新时间。结果不含票价、车票、服务公告和共享单车信息,无障碍信息也不保证准确。该提供方为社区服务,仅面向轻量非商业用途,不保证可用性。

安装

在 SourceWeft 中

  1. 打开 控制台中的 SF Bay Area Transit MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.czekaj%2Fsf-transit-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "sf-bay-area-transit": {
      "type": "http",
      "url": "https://mcp.riv.lc/sf-transit/mcp"
    }
  }
}

README

[SF Bay Area Transit MCP]

SF Bay Area Transit MCP

Created by Lucas Czekaj (X: @0xLCZ). Operated and published by Reindex Ventures LLC.

Use your AI agent to plan trips in San Francisco and the Bay Area. Results show where to walk, which buses or trains to take, where to transfer, and when to depart and arrive.

Free to use. No API keys or authentication. Connect an AI agent or app that supports remote MCP servers, or run the server on your computer. MCP connects AI apps to tools. Apps that support MCP Apps can display interactive trip details. The hosted service runs on Cloudflare Workers Free. Transitous provides trip planning, place search, and stop departures.

“How do I get from the Ferry Building to Baker Beach, leaving now?”

“I need to reach the Ferry Building by 9 tomorrow morning.”

“Compare transit with cycling, and avoid more than one transfer.”

“What departs next from Embarcadero BART?”

“Show the next Muni N departures at Embarcadero.”

The default provider is for light, noncommercial, open-source use. It is a community service, and availability is not guaranteed. See provider details.

Get started

Connect to the hosted service

  1. In your AI agent's MCP or connector settings, add a remote server with the official hosted URL:

    text
    https://mcp.riv.lc/sf-transit/mcp
  2. Set authentication to None if asked.

  3. Ask: “How do I get from the Ferry Building to Baker Beach, leaving now?”

The user guide and IT review explain setup, tool permissions, data handling, support, and service limits. Place searches, trip coordinates, and requested stop IDs and departure times are sent to Transitous; see the privacy policy.

Install a local server from GitHub

Requires Node.js 22.12 or newer and Git.

For Claude Desktop, add this to its MCP configuration. It installs the server from this public repository and starts it:

json
{  "mcpServers": {    "sf-transit": {      "command": "npx",      "args": [        "--yes",        "--package=git+https://github.com/czekaj/sf-transit-mcp.git",        "sf-transit-mcp"      ]    }  }}

Restart Claude Desktop and ask for a trip. For Claude Code:

sh
claude mcp add sf-transit -- npx --yes --package=git+https://github.com/czekaj/sf-transit-mcp.git sf-transit-mcp

Run a local copy

sh
git clone https://github.com/czekaj/sf-transit-mcp.git

From the project directory:

sh
npm ci --ignore-scriptsnpm run build

For Claude Desktop, replace the example below with the full path to your local copy:

json
{  "mcpServers": {    "sf-transit": {      "command": "node",      "args": ["/absolute/path/to/sf-transit-mcp/dist/stdio.js"]    }  }}

Restart Claude Desktop. For Claude Code, register the same local server:

sh
claude mcp add sf-transit -- node /absolute/path/to/sf-transit-mcp/dist/stdio.js

The server starts without credentials or environment variables. Include your starting address in the trip request, or use an address already in your conversation. This service does not save a home address. When several places match, choose the intended place before planning the trip.

Privacy: place searches, trip coordinates, and requested stop IDs and departure times go to Transitous. Its privacy policy says request URLs are logged for up to two days. This application's code does not log or save addresses or trip results. Your AI app and hosting providers have their own retention practices. The project privacy policy explains who receives the data and how it is handled.

For help, see Support or open a GitHub issue. Send security or privacy reports to [email protected]; see Security.

What it does

ToolPurpose
search_placesFind matching Bay Area addresses, landmarks, and stops, with their coordinates.
plan_tripPlan trips leaving now, departing after a time, or arriving by a deadline.
get_stop_departuresGet upcoming departures at a selected Bay Area stop, with live estimates where available.
get_service_infoRead the current time, data sources, credits, and service limits without contacting Transitous.

Transit trips include walking to and from stops. You can limit transfers, request the wheelchair routing option, or compare transit with walking or using your own bicycle. Results include readable instructions and data the app can display.

MCP compatibility: supports protocol version 2026-07-28 over Streamable HTTP for remote connections and stdio for local connections. Older versions are also supported. Local tests check both current and older connection procedures. See the tested versions and client limitations.

Times use America/Los_Angeles, the Bay Area's Pacific timezone, including daylight-saving changes. Travel time and the wait before departure are shown separately. Each bus, train, or ferry section identifies timetable times or live predictions. The provider does not report how old its predictions are. A live prediction may be out of date.

Interactive journeys

In apps that support MCP Apps, including Claude, plan_trip also displays interactive trip details:

  • Compare trip options with departure and arrival times, transfers, and walking time.
  • Open trip details for stops, travel directions, platforms, walking sections, and transfer waits.
  • See which transit times are live estimates and which follow the schedule.
  • Select Refresh to update the same trip. “Leaving now” updates to the current time; a specified departure time or arrival deadline stays fixed.

Selecting a trip and opening details use the results already returned. Refresh requests the trip again and uses the same request limits as an ordinary trip search. The view does not update automatically or load external maps. Apps without MCP Apps support receive readable trip instructions and the same result data.

The interactive view supports light and dark themes, narrow screens, keyboard controls, and fullscreen details where the app supports them. It shows trip options and each part of the trip in order. It does not include a street map.

[Claude showing Ferry Building to Baker Beach route options and a detailed walking and Muni journey]

A Ferry Building → Baker Beach trip displayed in Claude. Select the screenshot to view it at full size.

Transitous lists data sources for Muni, BART, Caltrain, AC Transit, VTA, SamTrans, and regional ferries. Available trips and predictions depend on the data currently supplied. Place search is limited to the Bay Area. Walking instructions describe connections between places and stops, without turn-by-turn directions. The wheelchair routing option applies to walking and transfer paths. Vehicle accessibility may be unknown; check each transit section. The data does not confirm current elevator operation or guarantee accessible entrances and paths. Results do not include fares, tickets, service alerts, or bike-share availability.

Next departures

Ask for upcoming departures at a stop to open a departure board. In trip details, select Next departures at this stop at a boarding step. Each departure identifies a live estimate or scheduled time, plus the route, destination, agency, platform, cancellation, and boarding information when supplied.

The board shows service, destination, and departure time in three columns. Live or scheduled status appears beneath the time. Service names stay complete, and a scheduled comparison appears only when its displayed date or time differs from the departure estimate.

Select Refresh to request that board again. This does not change the selected trip. Route and destination filters narrow the results already loaded; they do not fetch more departures. There is no automatic polling or retry. Retrieved shows when the result was fetched, not when the agency last updated its predictions. Times use Pacific time.

The screenshots below show the interactive view with example data, not current departures.

[BART departure board showing colored line names, destinations, and example live and scheduled times]

[Muni departure board showing an example scheduled departure followed by live estimates]

[Trip details showing an example departure board opened at the selected boarding stop]

Select a screenshot to view it at full size. See the design notes and live-arrivals research for the visual design history and data-source findings.

Cloudflare hosting

The same code serves remote MCP connections at /sf-transit/mcp using Streamable HTTP. Existing /mcp connections continue to work. It uses no Containers, databases, storage bindings, API keys, OAuth, or background jobs. Running the server on your computer avoids a separate hosting service. Workers Free provides a free hosting allowance. The person deploying the service needs a Cloudflare account; people connecting to the MCP endpoint do not.

Build and preview locally:

sh
npm run build:workernpm run dev:worker

build:worker builds locally without deploying. The local test URL is http://localhost:8787/sf-transit/mcp.

To publish to your own Cloudflare account, review wrangler.jsonc, use a Workers Free account, and run Wrangler's deploy command yourself. Connect your remote MCP client to the resulting https://<worker>.<subdomain>.workers.dev/sf-transit/mcp URL, with no authentication. An agent running in the cloud cannot use your computer's localhost URL.

For a Claude remote connector, set vars.PUBLIC_MCP_URL in wrangler.jsonc to the exact connector URL, including /sf-transit/mcp, with no trailing slash. Claude uses a separate web address for the interactive view. The server calculates that address from this URL. You do not need to register the view's address. Leave the value empty for local use or to let the app choose its default address. If the connector URL changes, update this value too.

Reindex Ventures LLC's production configuration targets https://mcp.riv.lc/sf-transit/mcp. The named production environment in wrangler.jsonc configures the sf-transit-mcp Worker, its company hostname, and a root redirect to https://reindexventures.com. The repository remains czekaj/sf-transit-mcp.

For Cloudflare's connected Git build, use npm run build:widget as the build command and npx wrangler deploy --env production as the deploy command. Production URL variables come from this configuration; no manual URL variables or alternate configuration file are needed. The default configuration has no custom domain, so forks can deploy independently. See the Cloudflare deployment guide.

Check the maintainer configuration locally without deploying:

sh
npm run build:worker:production

A public deployment must follow Transitous's usage policy. Coordinate with its maintainers before serving many users or sending substantial automated traffic. Each running server or Worker instance limits Transitous requests to 20 in the previous minute and 600 in the previous 24 hours. These limits reset when an instance restarts and do not limit total requests across all instances. The service does not request updates in the background or retry automatically. A stop-departure request makes one Transitous request. A normal transit search makes one Transitous request. Comparing transport modes makes one request per mode.

Development

sh
npm run checknpm run build:worker

Tests use fictional examples and simulated service responses. They do not call live transit APIs. Worker builds and type generation run locally. After changing Wrangler configuration, regenerate types:

sh
npm run types:worker

Preview the interactive view with fictional transit services and public-place examples:

sh
npm run preview:widget

Open http://127.0.0.1:8798. The preview uses the MCP Apps connection in an isolated frame. Controls show light and dark themes, narrow screens, empty results, and failed refreshes. It makes no transit API requests. Rebuild and reload after editing the view. npm run build:widget creates its HTML and an MCP resource identified by the file contents. Generated files are not committed.

The MCP connection, Transitous requests, and display code are separate. Requests and responses follow the MOTIS API version linked by Transitous. See CONTRIBUTING.md for contribution and testing guidance.

The Claude submission materials contain listing copy, reviewer instructions, approved screenshot assets, and the remaining launch requirements. The listing is a draft. Provider use remains subject to Transitous's published policy; qualifying light use does not require separate prior approval.

The hosted service is listed in the official MCP Registry as io.github.czekaj/sf-transit-mcp. The publication guide records the verified submission, offline manifest validation, manual publishing workflow, and approvals required for later publications.

The widget preview also includes standalone BART, Muni, and Caltrain departure boards and a board opened from trip details, all using fictional examples. The Caltrain example checks long service names and duplicate scheduled times.

Project artwork

The SF icon combines the Golden Gate Bridge, transit route endpoints, and a streetcar. Its original AI-generated PNG is assets/route-monogram.png, with the generation prompt alongside it. MCP server, tool, and resource descriptions include a PNG icon, following the MCP icons specification. Apps choose whether to display it.

The Worker also serves the 512 × 512 PNG at /sf-transit/icon.png for directory forms that require a hosted icon URL. After deployment, the company URL is https://mcp.riv.lc/sf-transit/icon.png. It serves the image directly without authentication or a redirect, using the existing Worker rather than a separate image-hosting service.

Run npm run build:branding to create the logo, icon sizes, and assets/social-preview.png from the original artwork. The script crops and resizes the selected image; it does not call an image service. If the source image changes, adjust the cropping and sizing in scripts/build-branding.mjs. The social preview is a 1280 × 640 image for GitHub's Settings → Social preview. Committing it does not change that setting. Artwork uses the project's MIT license.

License and credits

Code: MIT. Transit and map data retain their own licenses.

Routing by Transitous · Transitous data sources · © OpenStreetMap contributors · Bay Area data provided by 511.org

来源:README.md,提交 4383312

工具

4

search_places

Find Bay Area places

Find matching Bay Area addresses, landmarks, or transit stops and their map coordinates. Including the city helps distinguish places with the same name. Returns a list when more than one place matches. No API key. The search text is sent to Transitous.

输入参数limitquery必填

plan_trip

Plan a Bay Area trip

Find complete trips with walking, transit, transfers, scheduled and predicted times, and total travel time. Use coordinates from the selected search result. Omit times for leaving now; otherwise supply departureTime OR arrivalTime with a UTC offset. Transit trips include walking to and from stops. Add walk or bicycle to modes to compare walking or cycling without transit. Coordinates are sent to Transitous. No API key.

输入参数limitmodesorigin必填wheelchairarrivalTimedestination必填maxTransfersdepartureTime

get_stop_departures

Next Bay Area departures

Show upcoming departures at a selected Bay Area transit stop, including live predictions where available, scheduled times, cancellations, and boarding restrictions. Use the stop ID and coordinates from a search_places STOP result or plan_trip stop. Omit departureTime for now. Stop ID and time are sent to Transitous. No API key.

输入参数stop必填limitdepartureTime

get_service_info

Transit service information

Read the current time, available tools, data sources, and service limits without contacting a routing service.

无需输入参数。

版本历史

1
  1. v0.1.0最新Nov 7, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分