Île de France移动MCP服务器
A. 模型上下文协议(MCP)服务器 通过IDFM PRIM API为人工智能助手提供实时巴黎公共交通数据访问。
🚇 概述
这个基于Docker的MCP服务器使像Claude这样的人工智能助手能够访问由法兰西岛Mobilités管理的巴黎公共交通网络(地铁、RER、公共汽车、有轨电车、Transilien火车)的实时信息。
主要特点
- 实时出发:获取任何交通站点的下一次出发时间
- 交通中断:监控整个网络的服务警报和中断
- Docker集成:使用Docker Desktop作为容器化MCP服务器运行
- 安全的API管理:使用Docker MCP工具包的秘密管理
- SIRI协议支持:与官方IDFM PRIM API兼容
🛠️ 技术
- Python 3.11 使用FastMCP框架
- 码头工人 多阶段构建的集装箱化
- SIRI(实时信息服务接口) 协议
- HTTPX 用于异步HTTP请求
- 模型上下文协议 用于AI助手集成
📋 可用工具
| 工具 | 状态 | 描述 |
|---|---|---|
get_next_departures | ✅ 工作 | 特定站点的实时出发时间 |
get_traffic_info | ✅ 工作 | 服务中断和网络消息 |
search_stops | ❌ 有限的API | 停止搜索(解释了API限制) |
search_routes | ❌ 有限的API | 行程规划(解释了API限制) |
get_line_info | ❌ 有限的API | 线路信息(解释了API限制) |
🚀 快速开始
先决条件
- 启用MCP工具包的Docker桌面
- 来自的IDFM PRIM API密钥 prim.iledefrance-mobilites.fr
安装
- 克隆存储库
git clone
cd idfm-mcp-server- 设置API密钥
docker mcp secret set IDFM_API_KEY=your-api-key-here- 构建Docker镜像
docker build -t idfm-mcp-server .- 测试服务器
echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":1}' | \
docker run --rm -i -l x-secret:IDFM_API_KEY=/tmp/api_key.txt -e IDFM_API_KEY_FILE=/tmp/api_key.txt idfm-mcp-server💡 使用示例
使用克劳德桌面
问自然语言问题,比如:
- *“下一班火车在沙特尔站是什么?”*
- *“RER A线上有任何中断吗?”*
- *“显示STIF站的出发时间:停靠点:Q:41304:”*
直接API调用
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_next_departures",
"arguments": {
"stop_id": "STIF:StopPoint:Q:41304:",
"max_results": "5"
}
},
"id": 1
}🔧 配置
Docker MCP秘密
服务器从Docker MCP机密中读取API密钥:
# Set the secret
docker mcp secret set IDFM_API_KEY=your-key-here
# Run with secret mounting
docker run -l x-secret:IDFM_API_KEY=/tmp/api_key.txt -e IDFM_API_KEY_FILE=/tmp/api_key.txt idfm-mcp-server环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
IDFM_API_KEY | 直接API密钥(回退) | 空 |
IDFM_API_KEY_FILE | API密钥文件的路径 | 为空 |
🏗️ 建筑
Claude Desktop → MCP Protocol → Docker Container → IDFM PRIM API
↓
Docker MCP Secrets服务器实现MCP协议,在AI助手和IDFM传输数据之间提供安全、标准化的接口。
📊 API限制
IDFM PRIM API经过发展,目前支持:
- ✅ SIRI协议:实时监控和中断数据
- ❌ NavItia协议:历史搜索端点已被弃用
此服务器提供诚实的错误消息,解释这些限制,并建议不可用功能的替代方案。
🔒 安全
- API密钥安全存储在Docker MCP机密中
- 容器中的非root用户执行
- 没有API密钥记录或暴露
- 限速意识(每天100万次监控请求)
🐛 故障排除
常见问题
Claude中未出现的工具:
- 验证Docker镜像构建成功:
docker images | grep idfm - 检查MCP服务器注册
- 重新启动克劳德桌面
身份验证错误:
- 验证密码:
docker mcp secret ls - 确保API密钥在PRIM门户有效
- 检查容器是否具有秘密访问权限
无出发数据:
- 验证停止ID格式(使用SIRI格式:
STIF:StopPoint:Q:XXXXX:) - 某些站点可能没有实时数据
- 检查服务时间表(周末/节假日减少)
停止ID格式
API需要符合SIRI的特定停止ID:
- ✅
STIF:StopPoint:Q:41304:(Châtelet-Les Halles) - ❌
stop_area:IDFM:71571(旧NavItia格式)
📈 速率限制
- 停止监控:1000000次请求/天
- 通用访问:20000次请求/天
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 使用真实的API数据进行测试
- 提交拉取请求
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件
🔗 资源
📞 支持
有关API相关问题,请联系IDFM支持。对于服务器问题,请打开GitHub问题。
______________________________________________________________________
*内置于❤️ 巴黎公共交通社区*
