关于 bostonmove
bostonmove 是面向波士顿出行者及本地 Agent 的只读命令行工具和 MCP 服务,整合 MBTA 实时信息、Bluebikes 车桩数据与行程选项。
主要功能
- 01查询 MBTA 实时发车与服务提醒
- 02查看 Bluebikes 自行车和空桩
- 03搜索附近的交通站点与车站
- 04规划步行、骑行和公共交通行程
- 05输出含来源和时间戳的 JSON
适用场景
- 01查看下一班车及站点提醒
- 02查找附近的自行车、电动自行车或空桩
- 03比较波士顿地点间的出行方案
MCP 相关
MCP 服务提供查询发车、提醒、自行车可用量、附近站点和规划行程的五种工具。MCP 客户端可据此读取 MBTA 与 Bluebikes 的公共实时数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| place | string | 是 | 大波士顿地区的车站或站点名称、MBTA 站点 ID、地址或地标,或 'lat,lon'。 |
| radius_m | integer | 否 | 搜索半径,单位为米。 |
详细介绍
bostonmove
使用波士顿实时公共数据规划出行:MBTA 列车发车信息和服务提醒、Bluebikes 自行车与空闲车桩数量,以及门到门出行选项:步行、Bluebikes、搭乘一条 MBTA 线路,或在地铁线路间换乘一次。它既是命令行工具,也是 MCP 服务,Claude Code、Claude Desktop、Cursor 和其他 Agent 都能用它根据真实数据回答“下一班车什么时候来”或“Kendall 附近有车桩吗”。它只读取公共数据。
$ bostonmove plan "Northeastern" "Harvard"
Northeastern University → Harvard (4424 m straight line)
27 min Green Line E to Medford/Tufts: board at Northeastern University (0 min walk) now, ride 10, off at Park Street; then Red Line to Alewife: leaves 16:22, ride 9, off at Harvard (arrive ~16:31)
28 min Orange Line to Oak Grove: board at Massachusetts Avenue (6 min walk) in 6 min, ride 6, off at Downtown Crossing; then Red Line to Alewife: leaves 16:20, ride 11, off at Harvard (arrive ~16:31)
29 min Bluebikes from Forsyth St at Huntington Ave (13 bikes) to Church St (1 docks) (arrive ~16:33)
40 min 1 to Harvard: board at Massachusetts Ave @ St Botolph St (7 min walk) in 15 min, ride 23, off at Massachusetts Ave opp Holyoke St (arrive ~16:43)
69 min walk, about 5751 m (arrive ~17:12)
· Walking and cycling times are estimates from straight-line distance; transit times are from MBTA live predictions, or the timetable when there are none.
· MBTA options are one route, or one change between subway and light-rail lines with 3 min to change; changes involving buses aren't planned (mbta.com/trip-planner does them).
安装
uvx bostonmove plan "South Station" "Kendall" # run once without installing
uv tool install bostonmove # or: pipx install bostonmove / pip install bostonmove
将其添加到 Claude Code:
claude mcp add --scope user bostonmove -- uvx bostonmove mcp
或者在任何 MCP 客户端的配置中添加(Claude Desktop、Cursor):
{ "mcpServers": { "bostonmove": { "command": "uvx", "args": ["bostonmove", "mcp"] } } }
如果客户端找不到 uvx,请将 which uvx(macOS、Linux)或 where uvx(Windows)输出的完整路径用作 command。
MBTA API 密钥(可选,免费)。 不使用密钥时,MBTA 每分钟允许 20 次请求,规划两三次行程就可能用完。使用从 api-v3.mbta.com 获取的密钥后,限额为 1,000 次。将 MBTA_API_KEY 设为环境变量,或在 MCP 配置中通过 "env": {"MBTA_API_KEY": "..."} 传入。达到限额时,bostonmove 会提示;plan_trip 仍会返回步行和 Bluebikes 选项。
工具
| MCP 工具 | CLI | 可回答的问题 |
|---|---|---|
next_departures | bostonmove next "Park Street" [--route Red] | 某站点按线路和方向查询即将发车的列车:MBTA 有预测信息时显示实时数据,否则显示时刻表,以及该站点的服务提醒 |
service_alerts | bostonmove alerts [--route Orange] [--stop X] | 当前生效的延误、停运、接驳车、绕行和关闭信息,按严重程度从高到低排列 |
bike_availability | bostonmove bikes "Kendall" [--need bike|ebike|dock] | 附近有自行车、电动自行车和空闲车桩的 Bluebikes 站点 |
find_nearby | bostonmove near "Fenway Park" | 地点附近的 MBTA 车站和站点,以及 Bluebikes 站点 |
plan_trip | bostonmove plan A B | 步行、Bluebikes 和 MBTA 出行选项(乘坐一条线路,或在地铁线路间换乘一次),以及抵达时间 |
地点可以是车站名称(Park Street、Kendall、Northeastern)、MBTA 站点 ID(place-pktrm、110)、Bluebikes 站点名称、地址或地标(Fenway Park、360 Huntington Ave),也可以是 lat,lon。每项结果都包含 sources 和 as_of。在任何 CLI 命令后添加 --json,即可获取完整结果。
数字是如何得出的
- 出发时间是 MBTA 的实时预测。如果站点没有实时预测(深夜时段,或线路不发布预测),则使用时刻表,并将每个时间标记为计划时间。
- 公共交通行程时间:等待时间取自实时预测;乘车时间根据该行程在两个站点各自的预测时间(或时刻表)计算;两端的步行时间为估算值。无法及时步行赶上的出发班次会被跳过。
- 换乘:如果没有地铁或轻轨线路可以直达,bostonmove 会查找起点附近的一条线路和目的地附近的一条线路,要求两条线路共用一个车站(Park Street、Downtown Crossing、State、Haymarket……),按步行距离和乘坐站数为线路组合排序,并用实时出发信息计算最佳的两个方案。第二班列车必须在第一班抵达至少 3 分钟后出发。
- 步行和骑行均为估算值:街道距离按直线距离 × 1.3 计算,步行速度为 5 km/h,骑行速度为 14 km/h。它们会标记为
estimate。 - 自行车数量以 Bluebikes 数据源的更新时间为准(约每分钟刷新一次);你抵达前,自行车或车桩可能已被使用。此数据源中的自行车数量包含电动自行车,因此
classic = bikes - ebikes。 - 行程提醒仅包含与该段行程相关的提醒:线路上的严重程度为 5 或更高的提醒,或上车、换乘、下车站点的任何提醒。
限制
- 最多一次换乘,且仅限地铁和轻轨线路之间(Red、Orange、Blue、Green Line 各支线、Mattapan)。不规划公交转列车、公交转公交、通勤铁路或两次换乘的行程;此类行程请使用 mbta.com/trip-planner。
- 每次规划会发出 4 至 16 次 MBTA 请求。在无密钥限制下,bostonmove 最多等待 20 秒,让请求计数重置,而不会直接失败;超过此时限后,它会省略 MBTA 方案并说明原因。
- 搜索行程两端 800 m 范围内的站点和自行车站。
- 名称会优先匹配 MBTA 和 Bluebikes 站点,然后使用 OpenStreetMap 在大波士顿地区内进行地理编码。含义不明确的名称可能会定位到错误地点;结果会始终说明解析到的位置。
数据与致谢
- MBTA 数据来自 MBTA V3 API,遵循 MassDOT Developers License Agreement。bostonmove 与 MBTA 无关联,也未获其认可。
- Bluebikes 数据来自公开的 GBFS feed,遵循 Bluebikes data license。与 Bluebikes 或 Lyft 无关联。
- 地点搜索由 OpenStreetMap Nominatim 提供,数据 © OpenStreetMap 贡献者(ODbL)。查询遵循其使用政策:每秒最多一次,使用可识别的 User-Agent,并将结果缓存 30 天。
变化缓慢的数据(站点列表、线路的站点顺序、地理编码地点)会在磁盘上缓存一天,路径为
~/.cache/bostonmove(可通过 BOSTONMOVE_CACHE_DIR 更改路径,通过 BOSTONMOVE_NO_CACHE=1 关闭缓存)。实时数据会在内存中缓存不到一分钟。
开发
uv sync
uv run pytest # offline: replays recorded real responses with the clock frozen
uv run pytest -m live # against the real APIs
uv run python tests/record_fixtures.py # re-record the fixtures
MIT 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。