
Db Timetable Mcp
一个用于德国铁路时刻表 API 的 Model Context Protocol (MCP) 服务器
概述
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)
安装
-
克隆仓库:
git clone <repository-url> cd db-mcp
-
安装依赖项:
npm install
-
编译 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 服务器的传输类型 (stdio
或sse
, 默认: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 工具
服务器提供以下工具:
-
getCurrentTimetable: 获取某车站的当前时刻表数据
- 参数:
evaNo
- 车站的 EVA 编号(例如 Frankfurt Hbf 的 8000105)
- 参数:
-
getRecentChanges: 获取某车站的当前变更
- 参数:
evaNo
- 车站的 EVA 编号(例如 Frankfurt Hbf 的 8000105)
- 参数:
-
getPlannedTimetable: 获取某车站的计划时刻表数据
- 参数:
evaNo
- 车站的 EVA 编号(例如 Frankfurt Hbf 的 8000105)date
- 日期格式为 YYMMDD(例如 230401 表示 2023 年 4 月 1 日)hour
- 时间格式为 HH(例如 14 表示 14 点)
- 参数:
-
findStations: 根据搜索模式查找车站
- 参数:
pattern
- 搜索模式(例如 "Frankfurt" 或 "BLS")
- 参数:
MCP 资源
服务器提供以下资源:
- 当前时刻表数据:
db-api:timetable/current/{evaNo}
- 当前时刻表变更:
db-api:timetable/changes/{evaNo}
- 计划时刻表数据:
db-api:timetable/planned/{evaNo}/{date}/{hour}
- 车站搜索:
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
: 运行测试
可扩展性
潜在扩展功能
- 数据处理和增强
- 语义化时刻表数据处理:将 XML 转换为带有语义增强的结构化 JSON
- 延误和运营中断的历史数据分析
- 多模式交通连接集成
- 扩展 MCP 工具
- 车站间路线规划
- 基于 AI 的延误和负载预测
- 旅行中断分析
- 车站和连接的无障碍检查
许可证
MCP Server: MIT License
DB Timetable API: Creative Commons Attribution 4.0 International License