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 分