实时交通数据服务器

一个基于Model Context Protocol (MCP)的服务器,通过IDFM PRIM API为AI助手提供巴黎公共交通实时数据访问功能。

  • by HeshamWM
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 HeshamWM/idfm-mcp-server

使用说明

Î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限制)

🚀 快速开始

先决条件

安装

  1. 克隆存储库

    git clone <your-repo-url>
    cd idfm-mcp-server
    
  2. 设置API密钥

    docker mcp secret set IDFM_API_KEY=your-api-key-here
    
  3. 构建Docker镜像

    docker build -t idfm-mcp-server .
    
  4. 测试服务器

    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次请求/天

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 使用真实的API数据进行测试
  5. 提交拉取请求

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件

🔗 资源

📞 支持

有关API相关问题,请联系IDFM支持。对于服务器问题,请打开GitHub问题。


内置于❤️ 巴黎公共交通社区