mcpField
T
tfl-mcp-server

tfl-mcp-server

本地服务
github.com/oneill9地图与出行14 周前更新

关于 tfl-mcp-server

tfl-mcp-server 将 TfL 实时交通信息通过 MCP 工具提供给 AI 助手,涵盖线路状态、到站信息、路线规划、自行车站点、拥挤度和票价,并支持 stdio 与无状态 Streamable HTTP。

主要功能

  1. 01线路状态与运营中断
  2. 02到站信息与路线规划
  3. 03自行车站点、拥挤度和票价
  4. 04交互式运营状态面板
  5. 05stdio 与 Streamable HTTP 传输

适用场景

  1. 01查询伦敦线路是否发生中断
  2. 02查看站点的下一班车
  3. 03规划两地之间的路线

MCP 相关

将 TfL Unified API 数据作为工具提供给 MCP 客户端,可查询线路状态、到站信息、路线、自行车站点、拥挤度和票价。支持 stdio 与无状态 Streamable HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"oneill9-tfl": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TFL_APP_KEY",
"ghcr.io/oneill9/tfl-mcp-server:1.5.2"
],
"env": {
"TFL_APP_KEY": "<TFL_APP_KEY>"
}
}
}
}
启动命令docker run -i --rm -e TFL_APP_KEY ghcr.io/oneill9/tfl-mcp-server:1.5.2
需要配置的环境变量
TFL_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/oneill9/tfl-mcp-server:1.5.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

TfL MCP 服务

TfL MCP 服务 logo

**免责声明:**这是一个由社区构建的项目,与伦敦交通局(TfL)无关联,也未得到其认可或与其建立联系。本项目使用公开提供的 TfL Unified API。

GitHub release License: MIT

一个将 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_BYTES1048576Streamable HTTP 接受的 JSON 请求正文最大大小
MCP_REQUEST_TIMEOUT_MS30000Streamable HTTP 请求超时时间,单位为毫秒
MCP_HEADERS_TIMEOUT_MS10000Streamable 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 参考

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。