SNCF API MCP服务器
该项目为SNCF API提供了一个模块化Python包装器,带有MCP服务器接口,与Claude Desktop无缝集成,用于法国各地的智能行程规划和列车信息检索。
目录
- 设置Claude桌面 - 环境变量
概述
法国国营铁路公司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文件,请安装以下软件包: 请求: 主控程序
pip install requests pandas mcp获取API密钥
在使用此服务器之前,您需要从SNCF获取API密钥:
- 访问 法国国营铁路公司API门户网站
- 创建帐户或登录
- 订阅“Navitia”API服务
- 完成注册流程
- 一旦获得批准,您将在帐户仪表板中收到您的API密钥
API密钥看起来像UUID字符串(例如。, 01293485-3NS3-3242-23AZ-3241324512).
配置
设置Claude桌面
要将SNCF MCP工具与Claude Desktop集成,请执行以下操作:
- 安装克劳德桌面 如果你还没有
- 打开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 带有安装目录的实际路径。
- 保存配置文件 并重新启动克劳德桌面
可用的MCP工具
配置后,Claude Desktop将可以使用以下工具:
行程规划
plan_journey_by_city_names
计划一次法国两座城市之间的旅行。
参数:
from_city:出发城市名称(例如“巴黎”)to_city:目的地城市名称(例如“马赛”)datetime:可选出发或到达时间(格式:YYYYMMDDTHHMMSS)datetime_represents:“出发”或“到达”(默认为“出发”)include_station_details:是否包括详细的车站信息
Claude的示例提示:
Plan a train journey from Paris to Lyon tomorrow morning at 8 AM.车站信息
get_station_details
获取城市火车站的详细信息。
参数:
city_name:要搜索车站的城市名称station_name:可选的特定电台名称station_id:可选的直接站IDinclude_transport_types:是否包括运输类型分析include_nearby_places:是否包括附近地点信息nearby_distance:以米为单位搜索附近地点的半径nearby_count:附近可返回的最大数量
Claude的示例提示:
What transport options are available at the main train station in Grenoble?get_station_schedule
获取车站的出发和到达时间表。
参数:
city_name:要搜索车站的城市名称station_name:可选的特定电台名称station_id:可选的直接站IDcount:返回的出发/到达次数datetime:可选日期时间开始duration:可选持续时间(秒)data_freshness:数据新鲜度级别(实时或base_schedule)
Claude的示例提示:
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:是否获取受影响列车的更多详细信息
Claude的示例提示:
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?克劳德将使用 plan_journey_by_city_names 工具用于:
- 查找这两个城市的主要车站
- 规划他们之间的最佳旅程
- 向您展示出发/到达时间、持续时间和转机详情
获取车站信息
要获取有关电台的详细信息,请执行以下操作:
What facilities and transport options are available at Gare de Lyon in Paris?克劳德将使用 get_station_details 工具提供:
- 基本站信息(名称、ID、坐标)
- 可用的交通方式(火车、公共汽车、有轨电车)
- 附近景点
检查列车时刻表
要查看即将出发或到达的航班:
When are the next trains leaving from Bordeaux to Paris today?克劳德将使用 get_station_schedule 工具显示:
- 即将从波尔多出发
- 目的地信息
- 平台详细信息(如有)
- 实时状态更新
监控中断
检查服务中断:
Are there any disruptions affecting the Paris to Lyon route today?克劳德将使用 check_disruptions 工具用于:
- 查找相关中断
- 解释对服务的影响
- 提供有关受影响列车的更多详细信息
故障排除
常见问题
“未提供API密钥”
- 确保您已将您的SNCF API密钥添加到Claude Desktop配置中
- 检查MCP服务器配置中是否正确引用了环境变量
“找不到城市的车站”
- 尝试使用更具体的城市名称
- 对于较小的城市,尝试使用附近较大城市的名称
- 该系统对法国主要城市的坐标进行了硬编码,应该可以可靠地工作
“无法连接到SNCF API”
- 检查您的互联网连接
- 验证您的API密钥是否有效且未过期
- 法国国营铁路公司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、城际列车)
- 区域列车(TER)
- 当地交通(公共汽车、有轨电车、地铁)
- 其他服务(出租车、共享单车)
附近地点搜索
车站详细信息工具可以找到车站附近的兴趣点:
- 其他交通站点
- 公共设施
- 兴趣点
- 地址点
此功能对于计划从车站继续旅行的旅行者特别有用。
______________________________________________________________________
贡献
欢迎为改进SNCF MCP服务器做出贡献!请随时提交pull请求或打开bug和功能请求的问题。
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
致谢
- 提供API的SNCF
- Navitia团队的综合公共交通API
- Claude AI的智能集成能力
由克里斯蒂安·德莱奇创作(dr.christian.delage@gmail.com)
