SNCF Train Journey Planner

SNCF Train Journey Planner

🚀 SNCF 服务器指南

本指南详细介绍了如何使用基于 Navitia 的 SNCF 公共交通 API 构建和配置一个 MCP(多式联运协调平台)服务器。MCP 服务器可协调多种运输方式的整合,助力用户规划复杂的旅行路线。

🚀 快速开始

本指南将引导你完成基于 Navitia 的 SNCF 公共交通 API 的 MCP 服务器的构建与配置,以实现多种运输方式的协调整合。

✨ 主要特性

  • 站点搜索工具:支持基于 API 的站点查找和硬编码坐标查询。
  • 线路规划工具:提供基本线路规划和复杂行程优化功能,支持多目的地和时间窗口。
  • 调度查询工具:可查询实时列车时刻表和历史数据。
  • 扰乱监控工具:能进行实时扰乱检测和历史扰乱分析。
  • 硬编码坐标:系统内置法国主要城市的地理坐标,保障网络分区时可靠运行。
  • 运输类型分析:可分析和分类站点可用的运输类型。
  • 附近地点搜索:能查找站点附近的兴趣点。

📦 安装指南

安装依赖项

  1. Python 环境:需要 Python 3.8 或更高版本。
  2. Navitia SDK:通过 pip 安装 Navitia 的官方 SDK。
    pip install navitia-python
    
  3. 地理数据文件
    • 下载欧罗巴地区的火车站点 CSV 文件 train_stations_europe.csv

服务器配置

  1. 创建 MCP 配置文件
    • 配置 Navitia 的应用 ID 和密钥。
      NAVITIA_APP_ID = 'your_app_id'
      NAVITIA_APP_KEY = 'your_app_key'
      
  2. 初始化数据库
    • 使用提供的 SQL 脚本创建必要的数据库表。
      python init_db.py
      

💻 使用示例

基础用法

站点搜索工具

# 基于 API 的站点查找
stations = find_stations_by_city('Paris')

# 硬编码坐标查询
from hardcoded_coordinates import get_major_cities_coords
coords = get_major_cities_coords('Paris')  # (48.853, 2.348)

线路规划工具

# 基本线路规划
response = plan_journey('Paris', 'Marseille')
print(response.journeys)  # 输出行程详情

调度查询工具

# 实时列车时刻表
schedule = get_train_schedule('Gare de Lyon', 'Paris')
print(schedule.upcoming_trains)

# 历史数据检索
historical_data = fetch_historical_schedule('Bordeaux', '2023-10-26T00:00/2023-10-27T23:59')

扰乱监控工具

# 实时扰乱检测
disruptions = check_disruptions('Paris', 'Lyon')
for disruption in disruptions:
print(disruption.impact, disruption.description)

# 历史扰乱分析
historical_disruptions = get_historical_disruptions('Marseille', '2023-10-25T00:00/2023-10-27T23:59')

高级用法

线路规划工具 - 复杂行程优化

# 支持多目的地和时间窗口
response = plan_complex_journey(['Marseille', 'Nice'], '2023-10-27T14:00')

📚 详细文档

硬编码坐标

系统内置了法国主要城市的地理坐标,确保在网络分区时仍能可靠运行:

  • 巴黎 (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)
  • 昆stras (48.103, -1.672)
  • 格勒诺布尔 (45.192, 5.716)

运输类型分析

get_station_details 工具可以分析和分类站点可用的运输类型:

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

附近地点搜索

站点详细信息工具可以查找站点附近的兴趣点:

  • 其他交通停靠站
  • 餐饮设施
  • 旅游景点
  • 商业区域

🔧 技术细节

故障排除与维护

  1. 错误处理:实现适当的异常捕捉和日志记录机制。
  2. 性能优化:使用缓存技术减少重复查询。
  3. 监控工具:集成系统健康监测功能,及时发现并解决问题。

安全注意事项

  1. 凭据管理:确保 Navitia 的应用 ID 和密钥安全,避免泄露。
  2. 网络防护:使用 HTTPS 保障数据传输安全。
  3. 访问控制:实施身份验证和授权机制,限制未授权访问。

📄 许可证

本项目遵循 MIT 许可证,具体条款请参考 LICENSE 文件。

🔗 文档与资源

🤝 贡献与支持

  • 问题报告:在 GitHub 仓库中提交 issue。
  • 代码贡献: Fork 仓库并提出 Pull Request。
  • 社区支持: 加入相关技术论坛或 Slack 频道。

📞 联系方式

如有任何问题或建议,请联系:

  • 电子邮箱:support@sncf.com
  • 电话:+33 1 23 45 67 89

⚠️ 重要提示

本指南中的代码示例和配置细节仅供参考,实际使用中请根据具体需求调整。

  • 0 关注
  • 0 收藏,24 浏览
  • system 提出于 2025-10-04 12:48

相似服务问题

相关AI产品