tfl mcp
MCP服务器 伦敦交通局统一API --stdio上的线路、行程、停靠点、到达点、自行车点、占用率、道路中断等。
安装
bunx @daanrongen/tfl-mcp工具(共80件)
| 域 | 工具 | 覆盖范围 |
|---|---|---|
| 事故状态 | accident_stats | 按年份分列的道路交通事故 |
| 空气质量 | air_quality | 实时污染预测(NO2、O3、PM10、PM2.5、SO2) |
| BikePoint | bike_points_all, bike_point_search, bike_point_by_id | 桑坦德自行车可用性 |
| 驾驶室 | cabwise_search | 附近有执照的出租车和小型出租车 |
| 旅程 | journey_plan, journey_modes | 全行程计划器(所有模式) |
| 线路 | 14个工具 | 状态、路线、中断、到达、时间表、停车顺序 |
| 模式 | mode_active_service_types, mode_arrivals | 跨模式服务信息 |
| 占用率 | 5个工具 | 停车场、自行车停放处、电动汽车充电连接器 |
| 地方 | 7个工具 | 搜索、地理查找、邮政编码街道、地点类型 |
| 道路 | 8个工具 | TLRN状态、中断、关闭、道路施工 |
| 搜索 | 5个工具 | 全文TfL网站/数据搜索 |
| 停止点 | 17个工具 | 搜索、到达、中断、拥挤、路线、出租车招呼站、停车场 |
| 车辆 | 3个工具 | ULEZ合规性、排放附加费、车辆到达跟踪 |
配置
API密钥(可选但推荐)
在以下网址注册免费密钥 https://api-portal.tfl.gov.uk/。如果没有,请求的速率限制在~500/天。
设置
克劳德桌面版
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"tfl": {
"type": "stdio",
"command": "bunx",
"args": ["@daanrongen/tfl-mcp"],
"env": {
"TFL_API_KEY": "your-key-here"
}
}
}
}克劳德代码CLI
claude mcp add tfl bunx -- @daanrongen/tfl-mcp -e TFL_API_KEY=your-key-here发展
bun install
bun run dev # run with --watch
bun test # run test suite
bun run build # bundle to dist/main.js
bun run inspect # open MCP Inspector in browser就地检查
bun run inspect 启动 MCP检查员 反对当地建筑:
bun run build && bun run inspect这将在浏览器中打开检查器UI,您可以在其中交互式调用任何工具并检查请求/响应形状。
行程规划器——位置ID
最常见的故障模式是将自由文本名称传递给 journey_plan,这导致TfL返回300消歧响应。该工具优雅地处理了这一点,并返回了建议值 parameterValue 要重试的ID。
首选ID格式(从最可靠到最不可靠):
| 格式 | 示例 | 注释 |
|---|---|---|
| ICS代码 | 1000129 | 最可靠--使用以下输出 stoppoint_search |
确认ID。 940GZZLUVIC | 适用于地铁/火车站 | |
| 邮政编码 | N1C4TB | 始终明确解决 |
| 坐标 | 51.5308,-0.1238 | 始终明确无误 |
| 自由文本 | King's Cross | 可能引发歧义 |
公用站ICS代码:
| 车站 | ICS代码 |
|---|---|
| 圣潘克拉斯国王十字教堂 | 1000129 |
| 维多利亚 | 1000248 |
| 滑铁卢 | 1000254 |
| 伦敦桥 | 1000135 |
| 帕丁顿 | 1000184 |
| 利物浦街 | 1000134 |
| 尤斯顿 | 1000078 |
| 金丝雀码头 | 1001006 |
| 布里克斯顿 | 1000023 |
| 斯特拉特福德 | 1000222 |
建筑
src/
├── config.ts # Effect Config — TFL_API_KEY
├── main.ts # Entry point — ManagedRuntime + StdioServerTransport
├── domain/
│ ├── TflClient.ts # Context.Tag service interface
│ └── errors.ts # TflError, TflDisambiguationError
├── infra/
│ ├── TflClientLive.ts # Layer.effect — HTTP client with disambiguation handling
│ └── TflClientTest.ts # In-memory test adapter
└── mcp/
├── server.ts # McpServer wired to ManagedRuntime
├── utils.ts # formatSuccess, formatError, formatDisambiguation
└── tools/ # One module per TfL domain (13 files)许可证
麻省理工学院
