该项目提供了一个模块化的Python封装器,用于SNCF API,并具有一个与Claude Desktop无缝集成的MCP服务器接口,以实现智能行程规划和法国全境的列车信息检索。
SNCF MCP Server 提供了对法国国家铁路公司(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 - 欧洲火车站数据库,包含坐标git clone https://github.com/yourusername/sncf-mcp-new.git
cd sncf-m
pip install -r requirements.txt
如果缺少requirements.txt文件,请安装以下包:
requests
mcp
pip install requests pandas mcp
在使用此服务器之前,需要从SNCF获取API密钥:
API密钥看起来像一个UUID字符串(例如,01293485-3NS3-3242-23AZ-3241324512)。
要将SNCF MCP工具与Claude Desktop集成:
%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替换为您实际的安装目录路径。
一旦配置完成,以下工具将可用于Claude Desktop:
plan_journey_by_city_names规划法国两个城市之间的行程。
参数:
from_city:出发城市名称(例如,“巴黎”)to_city:目的地城市名称(例如,“马赛”)datetime:可选的出发或到达时间(格式:YYYYMMDDTHHMMSS)datetime_represents:“departure”或“arrival”(默认:“departure”)include_station_details:是否包含详细的车站信息示例提示给Claude:
计划明天早上8点从巴黎到里昂的火车旅程。
get_station_details获取某个城市内火车站的详细信息。
参数:
city_name:要搜索车站的城市名称station_name:可选的具体车站名称station_id:可选的直接车站IDinclude_transport_types:是否包含交通工具类型分析include_nearby_places:是否包含附近地点信息nearby_distance:搜索附近地点的半径(米)nearby_count:返回的最大附近地点数量示例提示给Claude:
格勒诺布尔的主要火车站有哪些交通方式?
get_station_schedule获取车站的发车和到达时间表。
参数:
city_name:要搜索车站的城市名称station_name:可选的具体车站名称station_id:可选的直接车站IDcount:要返回的发车/到达次数datetime:可选的时间起点duration:可选的持续时间(秒)data_freshness:数据新鲜度级别(实时或基础时间表)示例提示给Claude:
显示巴黎里昂站接下来的5个火车发车时间。
check_disruptions检查SNCF运输网络中的当前中断情况。
参数:
coverage:覆盖区域(默认:“sncf”)count:要返回的最大中断数量station_id:可选的特定车站过滤器line_id:可选的特定线路过滤器since:仅返回此日期之后有效的中断until:仅返回此日期之前有效的中断fetch_train_details:是否获取受影响列车的附加详情示例提示给Claude:
目前是否有任何中断影响到前往马赛的火车?
您可以要求Claude规划法国任意两城市之间的行程:
我需要在下周五下午2点从巴黎到尼斯。你能帮我找到一列火车吗?
Claude将使用plan_journey_by_city_names工具来:
要获取车站的详细信息:
里昂站有哪些设施和交通方式?
Claude将使用get_station_details工具提供:
要查看即将发车或到达的情况:
今天从波尔多到巴黎的下一班火车什么时候离开?
Claude将使用get_station_schedule工具显示:
要检查服务中断:
今天是否有任何中断影响巴黎到里昂的路线?
Claude将使用check_disruptions工具来:
train_stations_europe.csv文件位于正确的位置系统为法国主要城市提供了硬编码坐标,即使API搜索失败也能确保可靠性:
get_station_details工具可以分析并分类车站可用的交通工具类型:
车站详情工具可以找到车站附近的兴趣点:
此功能对于计划从车站继续行程的旅客特别有用。
欢迎贡献以改进SNCF MCP Server!请随时提交拉取请求或为错误和功能请求打开问题。
本项目根据MIT许可证发布 - 详情请参阅LICENSE文件。
创建者:Christian Delage (dr.christian.delage@gmail.com)