SNCF API MCP Server

by Kryzo
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Uses pandas for station lookup functionality via CSV database of European train stations with coordinates

  • Provides access to the French National Railway's (SNCF) API services for journey planning, station information, schedule checking, and disruption monitoring across France

SNCF API MCP 服务器

该项目为 SNCF API 提供了一个模块化的 Python 包装器,其 MCP 服务器接口可与 Claude Desktop 无缝集成,实现法国各地的智能旅程规划和火车信息检索。

目录

概述

SNCF MCP 服务器为法国国家铁路 (SNCF) 的 API 服务提供了全面的接口,使您能够:

  • 规划法国各城市之间的火车旅程
  • 获取有关火车站的详细信息
  • 查看出发和到达时刻表
  • 监控服务中断
  • 查找附近的地点和交通选择

结构组织如下:

  • sncf_api/ - SNCF API 交互的主包
    • __init__.py - 包初始化
    • config.py配置设置
    • client.py - 基本 API 客户端
    • api.py - 结合所有模块的主 API 接口
    • search.py - 搜索相关端点
    • journey.py - 旅程规划终点
    • stations.py - 与车站相关的端点
    • networks.py - 网络和传输模式端点
    • disruptions.py - 与中断相关的端点
    • station_finder.py - 通过坐标高效查找车站
    • csv_station_finder.py - 使用 CSV 数据库查找站点
    • vehicle_journey.py详细的火车旅程信息
  • sncf_server.py - 包含所有工具端点的 MCP 服务器实现
  • train_stations_europe.csv - 带有坐标的欧洲火车站数据库

特征

  • 智能行程规划:规划法国任意城市之间的行程,自动选择车站
  • 综合车站详情:获取有关车站的详细信息,包括:
    • 可用的交通类型(火车、公共汽车、有轨电车)
    • 附近地点和兴趣点
    • 坐标和可达性信息
  • 实时时刻表:获取最新的出发和到达信息
  • 中断监控:随时了解服务中断情况
  • 智能车站查找:按城市名称、车站名称或坐标定位车站
  • 回退机制:主要城市的硬编码坐标确保即使 API 搜索失败也能保证可靠性
  • 详细日志记录:用于调试和监控的全面日志记录

安装

先决条件

  • Python 3.6+
  • pip(Python 包管理器)

步骤 1:克隆存储库

git clone https://github.com/yourusername/sncf-mcp-new.git cd sncf-mcp-new

第 2 步:安装依赖项

pip install -r requirements.txt

如果缺少 requirements.txt 文件,请安装以下软件包:requests mcp

pip install requests pandas mcp

获取 API 密钥

在使用该服务器之前,您需要从 SNCF 获取 API 密钥:

  1. 访问SNCF API 门户
  2. 创建账户或登录
  3. 订阅“Navitia”API服务
  4. 完成注册流程
  5. 一旦获得批准,您将在帐户信息中心收到 API 密钥

API 密钥看起来像一个 UUID 字符串(例如, 01293485-3NS3-3242-23AZ-3241324512 )。

配置

设置Claude桌面

要将 SNCF MCP 工具与 Claude Desktop 集成:

  1. 如果你还没有安装 Claude Desktop
  2. 打开 Claude 桌面配置
    • 导航至 Claude 桌面设置
    • 打开配置文件(通常位于%APPDATA%\Claude\claude_desktop_config.json
{ "sncf": { "command": "py", "args": [ "c:\\Users\\ChristianELHAJJ\\sncf-mcp-new\\sncf_server.py", "--api-key={YOUR-API-KEY}" ], "cwd": "c:\\Users\\ChristianELHAJJ\\sncf-mcp-new" },

path/to/sncf-mcp-new替换为安装目录的实际路径。

  1. 保存配置文件并重新启动Claude Desktop

可用的 MCP 工具

配置完成后,Claude Desktop 将可以使用以下工具:

旅程规划

plan_journey_by_city_names

计划一次法国两座城市之间的旅程。

参数:

  • from_city :出发城市名称(例如“巴黎”)
  • to_city :目的地城市名称(例如“马赛”)
  • datetime :可选出发或到达时间(格式:YYYYMMDDTHHMMSS)
  • datetime_represents :“出发”或“到达”(默认值:“出发”)
  • include_station_details :是否包含详细的车站信息

克劳德的示例提示:

Plan a train journey from Paris to Lyon tomorrow morning at 8 AM.

车站信息

get_station_details

获取有关某个城市火车站的全面详细信息。

参数:

  • city_name :搜索车站的城市名称
  • station_name :可选具体车站名称
  • station_id :可选的直接车站 ID
  • include_transport_types :是否包含传输类型分析
  • include_nearby_places :是否包含附近地点信息
  • nearby_distance :搜索附近地点的半径(以米为单位)
  • nearby_count :返回的附近地点的最大数量

克劳德的示例提示:

What transport options are available at the main train station in Grenoble?

get_station_schedule

获取车站的出发和到达时刻表。

参数:

  • city_name :搜索车站的城市名称
  • station_name :可选具体车站名称
  • station_id :可选的直接车站 ID
  • count :出发/到达返回的人数
  • datetime :可选的开始日期时间
  • duration :可选持续时间(以秒为单位)
  • data_freshness :数据新鲜度级别(实时或base_schedule)

克劳德的示例提示:

Show me the next 5 train departures from Paris Gare de Lyon.

中断监控

check_disruptions

检查 SNCF 运输网络当前是否存在中断。

参数:

  • coverage :覆盖区域(默认值:“sncf”)
  • count :返回的最大中断次数
  • station_id :特定车站的可选过滤器
  • line_id :特定线路的可选过滤器
  • since :仅此日期之后有效的中断
  • until :仅在此日期之前有效的中断
  • fetch_train_details :是否获取受影响列车的更多详细信息

克劳德的示例提示:

Are there any current disruptions affecting trains to Marseille?

使用示例

规划旅程

你可以让克劳德规划法国任意两座城市之间的旅程:

I need to travel from Paris to Nice next Friday at 2 PM. Can you find me a train?

Claude 将使用plan_journey_by_city_names工具来:

  1. 查找两个城市的主要车站
  2. 规划它们之间的最佳旅程
  3. 向您提供出发/到达时间、持续时间和连接详情

获取车站信息

要获取有关电台的详细信息:

What facilities and transport options are available at Gare de Lyon in Paris?

Claude 将使用get_station_details工具提供:

  1. 基本站点信息(名称、ID、坐标)
  2. 可用的交通类型(火车、公共汽车、有轨电车)
  3. 附近地点和兴趣点

查看火车时刻表

要查看即将出发或到达的航班:

When are the next trains leaving from Bordeaux to Paris today?

Claude 将使用get_station_schedule工具来显示:

  1. 即将从波尔多出发
  2. 目的地信息
  3. 平台详细信息(可用时)
  4. 实时状态更新

监控中断

要检查服务中断:

Are there any disruptions affecting the Paris to Lyon route today?

Claude 将使用check_disruptions工具来执行以下操作:

  1. 查找相关的中断
  2. 解释对服务的影响
  3. 提供有关受影响列车的更多详细信息

故障排除

常见问题

“未提供 API 密钥”

  • 确保已将 SNCF API 密钥添加到 Claude Desktop 配置中
  • 检查 MCP 服务器配置中是否正确引用了环境变量

“未找到该城市的车站”

  • 尝试使用更具体的城市名称
  • 对于较小的城市,请尝试使用附近较大城市的名称
  • 该系统已对法国主要城市进行了硬编码坐标,应该可以可靠运行

“无法连接到 SNCF API”

  • 检查您的互联网连接
  • 验证您的 API 密钥是否有效且未过期
  • SNCF API 可能正在停机;请稍后再试

“初始化 CSV 电台查找器时出错”

  • 确保 train_stations_europe.csv 文件位于正确的位置
  • 检查文件权限以确保文件可读

高级功能

硬编码坐标

该系统包含法国主要城市的硬编码坐标,以确保即使 API 搜索失败也能保证可靠性:

  • 巴黎 (48.853, 2.348)
  • 马赛 (43.303, 5.380)
  • 里昂 (45.760, 4.860)
  • 图卢兹 (43.611, 1.454)
  • 尼斯 (43.704, 7.262)
  • 南特 (47.217, -1.542)
  • 斯特拉斯堡 (48.585, 7.735)
  • 波尔多 (44.826, -0.556)
  • 里尔 (50.638, 3.072)
  • 雷恩 (48.103, -1.672)
  • 格勒诺布尔 (45.192, 5.716)

运输类型分析

get_station_details工具可以分析和分类车站可用的交通类型:

  • 长途列车(TGV、Intercités)
  • 区域列车(TER)
  • 当地交通(公交车、电车、地铁)
  • 其他服务(出租车、共享单车)

附近地点搜索

车站详情工具可以找到车站附近的兴趣点:

  • 其他交通站点
  • 公共设施
  • 兴趣点
  • 地址点

此功能对于计划从车站出发继续旅行的旅客特别有用。


贡献

欢迎为改进 SNCF MCP 服务器做出贡献!欢迎提交 PR 或提交问题报告,以解决错误或提出功能请求。

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

致谢

  • SNCF 提供 API
  • Navitia 团队提供全面的公共交通 API
  • Claude AI 提供智能集成功能

由 Christian delage ( dr.christian.delage@gmail.com ) 创建

ID: uvbp7vugox