这是一个用于德国铁路时刻表API的模型上下文协议(MCP)服务器。该服务器提供了访问时刻表数据、车站信息和列车变更的MCP工具和资源。
命名义务:
该项目提供了德国铁路的时刻表数据,这些数据在知识共享署名4.0国际许可(CC BY 4.0)下公开可见。
有关API和许可条款的更多信息,请参见developers.deutschebahn.com。API请求受许可条款约束。
克隆仓库:
git clone <repository-url>
cd db-mcp
安装依赖项:
npm install
编译TypeScript代码:
npm run build
在项目根目录创建一个.env文件,并添加以下环境变量:
DB_TIMETABLE_CLIENT_ID=你的客户端ID
DB_TIMETABLE_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测试和调试):
npm start
在SSE模式下(用于Web客户端):
TRANSPORT_TYPE=sse npm start
可以使用FastMCP Inspector来测试服务器:
npx fastmcp inspect path/to/index.js
服务器提供以下工具:
getCurrentTimetable调用某个车站的当前时刻表数据
evaNo - 车站的EVA编号(例如,法兰克福中央车站的EVA编号为8000105)getRecentChanges调用某个车站的当前变更
evaNo - 车站的EVA编号(例如,法兰克福中央车站的EVA编号为8000105)getPlannedTimetable调用某个车站的计划时刻表数据
evaNo - 车站的EVA编号(例如,法兰克福中央车站的EVA编号为8date - 日期,格式为YYMMDD(例如,2023年4月1日为230401)hour - 小时,格式为HH(例如,14点为14)FindStations根据搜索模式查找车站
pattern - 搜索模式(例如:"Frankfurt" 或 "BLS")服务器提供以下资源:
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 run build:编译TypeScript代码npm start:启动服务器npm run dev:以开发模式启动服务器并自动重新加载npm test:执行测试潜在扩展
MCP服务器:MIT许可证
DB Timetable API:知识共享署名4.0国际许可