小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
1
最近更新:2个月前

一个用于德国铁路时刻表 API 的 Model Context Protocol (MCP) 服务器

smithery badge

DB Timetable MCP Server

一个针对 Deutsche Bahn Timetable API 的 Model Context Protocol (MCP) 服务器。该服务器提供 MCP 工具和资源,用于访问列车时刻表数据、车站信息和列车变更。

署名义务:

本项目提供的 Deutsche Bahn 列车时刻表数据根据 Creative Commons Attribution 4.0 International License (CC BY 4.0) 公开可用。

有关 API 和许可条件的更多信息,请访问 developers.deutschebahn.com。API 请求受许可证条款约束。

功能

  • 当前时刻表: 获取某车站的当前时刻表数据
  • 时刻表变更: 跟踪最新的变更
  • 计划时刻表: 访问特定时间点的计划时刻表数据
  • 车站搜索: 根据名称或代码搜索车站

前置条件

  • Node.js 18 或更高版本
  • DB Timetable API 的 API 访问凭据(Client-ID 和 Client-Secret)

安装

  1. 克隆仓库:

    复制代码
    git clone <repository-url>
    cd db-mcp
  2. 安装依赖项:

    复制代码
    npm install
  3. 编译 TypeScript 代码:

    复制代码
    npm run build

配置

在项目的根目录中创建一个 .env 文件,包含以下环境变量:

复制代码
DB_TIMETABLE_CLIENT_ID=your-client-id
DB_TIMETABLE_CLIENT_SECRET=your-client-secret
TRANSPORT_TYPE=stdio
PORT=8080
SSE_ENDPOINT=/sse
LOG_LEVEL=info

配置选项

  • DB_TIMETABLE_CLIENT_ID: DB API 的客户端 ID(必需)
  • DB_TIMETABLE_CLIENT_SECRET: DB API 的客户端密钥(必需)
  • TRANSPORT_TYPE: MCP 服务器的传输类型 (stdiosse, 默认: stdio)
  • PORT: SSE 服务器的端口(默认: 8080
  • SSE_ENDPOINT: SSE 连接的端点(默认: /sse
  • LOG_LEVEL: 日志级别 (debug, info, warn, error, 默认: info)

使用

启动服务器

在 stdio 模式下(适用于 CLI 测试和调试):

bash 复制代码
npm start

在 SSE 模式下(适用于 Web 客户端):

bash 复制代码
TRANSPORT_TYPE=sse npm start

使用 Inspect 模式测试

可以使用 FastMCP Inspector 测试服务器:

bash 复制代码
npx fastmcp inspect path/to/index.js

MCP 工具

服务器提供以下工具:

  1. getCurrentTimetable: 获取某车站的当前时刻表数据

    • 参数: evaNo - 车站的 EVA 编号(例如 Frankfurt Hbf 的 8000105)
  2. getRecentChanges: 获取某车站的当前变更

    • 参数: evaNo - 车站的 EVA 编号(例如 Frankfurt Hbf 的 8000105)
  3. getPlannedTimetable: 获取某车站的计划时刻表数据

    • 参数:
      • evaNo - 车站的 EVA 编号(例如 Frankfurt Hbf 的 8000105)
      • date - 日期格式为 YYMMDD(例如 230401 表示 2023 年 4 月 1 日)
      • hour - 时间格式为 HH(例如 14 表示 14 点)
  4. findStations: 根据搜索模式查找车站

    • 参数: pattern - 搜索模式(例如 "Frankfurt" 或 "BLS")

MCP 资源

服务器提供以下资源:

  1. 当前时刻表数据: db-api:timetable/current/{evaNo}
  2. 当前时刻表变更: db-api:timetable/changes/{evaNo}
  3. 计划时刻表数据: db-api:timetable/planned/{evaNo}/{date}/{hour}
  4. 车站搜索: db-api:station/{pattern}

开发

项目结构

复制代码
db-mcp/
├── src/
│   ├── api/             # API 客户端和类型定义
│   ├── tools/           # MCP 工具
│   ├── resources/       # MCP 资源
│   ├── utils/           # 辅助函数
│   ├── config.ts        # 配置文件
│   └── index.ts         # 主入口点
├── dist/                # 编译后的文件
├── .env                 # 环境变量
├── package.json
├── tsconfig.json
└── README.md

NPM 脚本

  • npm run build: 编译 TypeScript 代码
  • npm start: 启动服务器
  • npm run dev: 在开发模式下启动服务器,支持自动重载
  • npm test: 运行测试

可扩展性

潜在扩展功能

  1. 数据处理和增强
    • 语义化时刻表数据处理:将 XML 转换为带有语义增强的结构化 JSON
    • 延误和运营中断的历史数据分析
    • 多模式交通连接集成
  2. 扩展 MCP 工具
    • 车站间路线规划
    • 基于 AI 的延误和负载预测
    • 旅行中断分析
    • 车站和连接的无障碍检查

许可证

MCP Server: MIT License

DB Timetable API: Creative Commons Attribution 4.0 International License