关于 tfl-mcp-server
tfl-mcp-server 将 TfL 实时交通信息通过 MCP 工具提供给 AI 助手,涵盖线路状态、到站信息、路线规划、自行车站点、拥挤度和票价,并支持 stdio 与无状态 Streamable HTTP。
主要功能
- 01线路状态与运营中断
- 02到站信息与路线规划
- 03自行车站点、拥挤度和票价
- 04交互式运营状态面板
- 05stdio 与 Streamable HTTP 传输
适用场景
- 01查询伦敦线路是否发生中断
- 02查看站点的下一班车
- 03规划两地之间的路线
MCP 相关
将 TfL Unified API 数据作为工具提供给 MCP 客户端,可查询线路状态、到站信息、路线、自行车站点、拥挤度和票价。支持 stdio 与无状态 Streamable HTTP。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e TFL_APP_KEY ghcr.io/oneill9/tfl-mcp-server:1.5.2TFL_APP_KEY密钥TfL API key — recommended for effective use. Without a key, TfL applies strict rate limits that will impact most real-world usage. Register free at https://api-portal.tfl.gov.uk/本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/oneill9/tfl-mcp-server:1.5.2stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
TfL MCP 服务
**免责声明:**这是一个由社区构建的项目,与伦敦交通局(TfL)无关联,也未得到其认可或与其建立联系。本项目使用公开提供的 TfL Unified API。
一个将 TfL(伦敦交通局)Unified API 封装为工具的 MCP 服务,让 Claude 等 AI 助手能够查询伦敦实时交通数据。
版本 2 是基于 Node.js 22 的单一实现,使用 MCP 2026-07-28 协议修订版。它支持面向本地宿主的 stdio、npm 和 MCPB,也支持通过 /mcp 提供无状态 Streamable HTTP,适用于远程部署。
**协议兼容性:**Streamable HTTP 仅支持新版 MCP
2026-07-28。stdio 入口点也接受 2025 年代的初始化请求,以支持 Codex 等桌面宿主,而现代 stdio 客户端仍会协商使用2026-07-28。不支持旧版 HTTP/SSE。
开始使用
第 1 步 — 添加到 Claude Desktop
打开 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
选项 A:Node.js MCPB(推荐)
从 GitHub Releases 下载 tfl-mcp-server.mcpb,并在 Claude Desktop 中安装。
选项 B:npm
安装 Node.js 22 或更高版本后,将 Claude Desktop 指向已发布的软件包:
{
"mcpServers": {
"tfl-mcp-server": {
"command": "npx",
"args": ["-y", "@oneill9/[email protected]"],
"env": { "TFL_APP_KEY": "your_key_here" }
}
}
}
选项 C:Docker
{
"mcpServers": {
"tfl-mcp-server": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "TFL_APP_KEY", "ghcr.io/oneill9/tfl-mcp-server:latest"]
}
}
}
第 2 步 — 添加 TfL API 密钥(推荐)
如果不使用密钥,TfL 会施加严格的速率限制,影响大多数实际使用场景。注册免费密钥,并通过 TFL_APP_KEY 环境变量传入。Docker 示例中的 -e TFL_APP_KEY 会将此值传入容器:
"env": { "TFL_APP_KEY": "your_key_here" }
第 3 步 — 重启 Claude Desktop 并开始提问
示例:“Central 线运行正常吗?”、“Oxford Circus 的下一班公交什么时候到?”
有关源码、Docker 和 Streamable HTTP 选项,请参阅 docs/installation.md。
工具
| 工具 | 描述 | TfL 端点 |
|---|---|---|
service_status | 按交通方式查询当前状态和服务中断情况 | GET /Line/Mode/{modes}/Status |
arrivals | 按名称查询站点的实时到站信息 | GET /StopPoint/{naptan}/Arrivals |
journey | 规划两地之间的行程 | GET /Journey/JourneyResults/{from}/to/{to} |
bike_points | 列出 Santander Cycles 自行车停靠站 | GET /BikePoint |
crowding | 按名称查询车站的实时拥挤程度 | GET /Crowding/{naptan}/Live |
fares | 查询两个指定站点之间的票价信息 | GET /StopPoint/{id}/FareTo/{targetId} |
**注意:**服务会在内部使用
/StopPoint/Search/{query}端点,自动将站点名称解析为 NaPTAN ID,供arrivals、crowding和fares工具使用。
MCP Apps UI
service_status 工具支持 MCP Apps,作为渐进增强功能。支持 UI 的宿主(例如 Claude Desktop)可以在文本回复旁呈现交互式服务状态面板。不支持 UI 的宿主仍会收到标准文本输出。
- UI 完全自包含(内嵌 HTML/CSS,无外部资源)
- 除文本备用内容外,还会返回结构化 JSON 数据
- 无需额外设置——会自动检测宿主是否支持
详情请参阅 docs/tools.md。
身份验证
MCPB 和默认容器模式使用 stdio 传输。可选的 Streamable HTTP 模式未实现 OAuth 或任何其他服务端身份验证;仅可在适当的可信访问层之后部署。
TfL API 使用简单的 API 密钥(TFL_APP_KEY),需将其作为环境变量提供。强烈建议使用密钥——如果没有密钥,TfL 会施加严格的速率限制,影响大多数实际使用场景。注册免费。使用此 MCP 服务无需 OAuth 流程、登录或 TfL 门户之外的账户。
配置
| 环境变量 | 默认值 | 说明 |
|---|---|---|
TFL_APP_KEY | (无) | TfL API 密钥——请在 api-portal.tfl.gov.uk 注册 |
TFL_APP_ID | (无) | TfL App ID——仅较早的 API 注册同时签发 ID 和密钥时需要 |
MCP_MAX_REQUEST_BODY_BYTES | 1048576 | Streamable HTTP 接受的 JSON 请求正文最大大小 |
MCP_REQUEST_TIMEOUT_MS | 30000 | Streamable HTTP 请求超时时间,单位为毫秒 |
MCP_HEADERS_TIMEOUT_MS | 10000 | Streamable HTTP 标头超时时间,单位为毫秒;不得超过请求超时时间 |
强烈建议使用 API 密钥——如果没有密钥,TfL 的严格速率限制会影响大多数实际使用场景。可在 api-portal.tfl.gov.uk 免费注册。
从源代码运行
需要 Node.js 22 或更高版本。请根据锁文件安装依赖,并在启动服务前构建。
cd node
npm ci
npm run build
node dist/index.js
这会启动 stdio 传输。若要使用无状态 Streamable HTTP:
cd node
HOST=127.0.0.1 PORT=8080 node dist/index.js --http
将 MCP 2026-07-28 客户端连接到 http://127.0.0.1:8080/mcp。如果要在其他主机名下提供服务,请将 MCP_ALLOWED_HOSTS 设置为以逗号分隔的主机名允许列表。
如需与 Claude Desktop 配合使用,请参阅 docs/installation.md。
测试
单元测试使用模拟 HTTP 服务——无需网络访问或 API 密钥:
cd node && npm test
Streamable HTTP 验收测试包含在 npm test 中。若要单独运行官方冻结版 MCP 2026-07-28 要求集(该集合之外的可选扩展探测不计分):
cd node && npm run test:conformance
一致性测试夹具通过共享的仅支持现代版本的 HTTP 适配器注册真实的生产 TfL 工具和资源。它还添加了裁判硬编码探测所需的仅用于测试的诊断工具、资源、提示词和流程;这些诊断项不会通过生产入口公开。
契约测试会调用在线 TfL API:
cd node && TFL_APP_KEY=your_key_here npm run contractTest
使用 bash scripts/test-distributions.sh 构建并对打包后的 npm CLI、MCPB 和容器发行版进行冒烟测试。Docker 不可用时,脚本会跳过容器检查。
支持
如有问题、错误报告或功能请求,请在 GitHub Issues 上提交 issue。
隐私政策
此 MCP 服务充当 AI 助手与 TfL Unified API 之间的本地代理。除将查询转发给 TfL 所必需的信息外,它不会收集、存储或传输任何个人数据。
- 数据收集: 不会收集分析数据或遥测数据。有限的运行诊断信息会写入标准错误,但服务器不会持久化这些信息;主机可能会根据自身的日志策略予以保留。
- 使用和存储: 查询会实时转发给 TfL,并立即返回响应。不会持久化任何查询历史或结果。
- 与第三方共享: 请求会转发给 TfL Unified API(
api.tfl.gov.uk)。有关 TfL 如何处理 API 使用数据,请参阅 TfL 的隐私政策。 - 数据保留: 服务器不会保留任何数据,也不会在请求之间保存状态。由主机管理的标准错误信息保留不受服务器控制。
- 联系: 如有隐私方面的顾虑,请在 https://github.com/oneill9/tfl-mcp-server/issues 提交问题。
完整隐私政策见 PRIVACY.md。
合规性
此服务器已接受审核,以确认其符合 Anthropic Software Directory Terms 和 Anthropic Software Directory Policy。完整的合规声明和维护者承诺请参阅 COMPLIANCE.md。
TfL API 参考
- Unified API:https://api.tfl.gov.uk/
- API 门户 / 密钥注册:https://api-portal.tfl.gov.uk/
- Swagger UI:https://api.tfl.gov.uk/swagger/ui/index.html
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。