返回市场
麦普圣赛夫

麦普圣赛夫

作者:Kryzo10 星标更新:2025-03-20

项目介绍

SNCF API MCP Server

该项目提供了一个模块化的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 - 欧洲火车站数据库,包含坐标

特性

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

安装

先决条件

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

第一步:克隆仓库

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

获取API密钥

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

  1. 访问SNCF API门户
  2. 创建账户或登录
  3. 订阅“Navitia”API服务
  4. 完成注册过程
  5. 批准后,您将在账户仪表板中收到API密钥

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

配置

设置Claude Desktop

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

  1. 如果尚未安装,请安装Claude Desktop
  2. 打开Claude Desktop配置
    • 导航到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替换为您实际的安装目录路径。

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

可用的MCP工具

一旦配置完成,以下工具将可用于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:可选的直接车站ID
  • include_transport_types:是否包含交通工具类型分析
  • include_nearby_places:是否包含附近地点信息
  • nearby_distance:搜索附近地点的半径(米)
  • nearby_count:返回的最大附近地点数量

示例提示给Claude:

格勒诺布尔的主要火车站有哪些交通方式?

get_station_schedule

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

参数:

  • city_name:要搜索车站的城市名称
  • station_name:可选的具体车站名称
  • station_id:可选的直接车站ID
  • count:要返回的发车/到达次数
  • 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工具来:

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

获取车站信息

要获取车站的详细信息:

里昂站有哪些设施和交通方式?

Claude将使用get_station_details工具提供:

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

检查列车时刻表

要查看即将发车或到达的情况:

今天从波尔多到巴黎的下一班火车什么时候离开?

Claude将使用get_station_schedule工具显示:

  1. 波尔多即将发车的列车
  2. 目的地信息
  3. 当可用时的站台详情
  4. 实时状态更新

监控中断

要检查服务中断:

今天是否有任何中断影响巴黎到里昂的路线?

Claude将使用check_disruptions工具来:

  1. 查找相关中断
  2. 解释对服务的影响
  3. 提供有关受影响列车的附加详情

故障排除

常见问题

“未提供API密钥”

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

“未找到该城市的车站”

  • 尝试使用更具体的城市名称
  • 对于较小的城市,尝试使用附近较大城市的名称
  • 系统为法国主要城市提供了硬编码坐标,这应该能可靠地工作

“无法连接到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 Server!请随时提交拉取请求或为错误和功能请求打开问题。

许可证

本项目根据MIT许可证发布 - 详情请参阅LICENSE文件。

致谢

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

创建者:Christian Delage (dr.christian.delage@gmail.com)