Skip to main content
Glama
Kryzo
by Kryzo

SNCF API MCP 服务器

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

目录

Related MCP server: Optimized Memory MCP Server V2

概述

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 ) 创建

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kryzo/mcp-sncf'

If you have feedback or need assistance with the MCP directory API, please join our Discord server