Skip to main content
Glama

TfL MCP 服务器

免责声明: 这是一个社区构建的项目。它与伦敦交通局(TfL)无关联、未经其认可,也不受其支持。本项目使用公开可用的 TfL Unified API。

GitHub release License: MIT

一个 MCP 服务器,将 TfL(伦敦交通局)Unified API 以工具的形式暴露出来,使 Claude 等 AI 助手能够查询伦敦实时交通数据。

版本 2 是使用 MCP 2026-07-28 协议修订版的单一 Node.js 22 实现。它支持用于本地主机的 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/tfl-mcp-server@2.0.0"],
      "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。

Related MCP server: TFL MCP Server for Poke

工具

工具

描述

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 界面

service_status 工具包含 MCP Apps 支持,作为渐进增强功能。支持界面的主机(例如 Claude Desktop)可以在文本响应旁边渲染交互式服务状态面板。不支持界面的主机继续接收标准文本输出。

  • 界面是自包含的(内联 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 — 仅对同时发放 ID 和密钥的旧版 API 注册需要

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 或更高版本。在启动服务器之前,请从 lockfile 安装依赖并构建。

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 提交 issue。

完整隐私政策可在 PRIVACY.md 查看。

合规性

此服务器已根据 Anthropic 软件目录条款 和 Anthropic 软件目录政策 进行了合规性审查。完整的合规声明和维护者承诺请参阅 COMPLIANCE.md。

TfL API 参考

Related MCP Connectors

Related MCP Servers