article
README
🚀 SNCF 服务器指南
本指南详细介绍了如何使用基于 Navitia 的 SNCF 公共交通 API 构建和配置一个 MCP(多式联运协调平台)服务器。MCP 服务器可协调多种运输方式的整合,助力用户规划复杂的旅行路线。
🚀 快速开始
本指南将引导你完成基于 Navitia 的 SNCF 公共交通 API 的 MCP 服务器的构建与配置,以实现多种运输方式的协调整合。
✨ 主要特性
- 站点搜索工具:支持基于 API 的站点查找和硬编码坐标查询。
- 线路规划工具:提供基本线路规划和复杂行程优化功能,支持多目的地和时间窗口。
- 调度查询工具:可查询实时列车时刻表和历史数据。
- 扰乱监控工具:能进行实时扰乱检测和历史扰乱分析。
- 硬编码坐标:系统内置法国主要城市的地理坐标,保障网络分区时可靠运行。
- 运输类型分析:可分析和分类站点可用的运输类型。
- 附近地点搜索:能查找站点附近的兴趣点。
📦 安装指南
安装依赖项
- Python 环境:需要 Python 3.8 或更高版本。
- Navitia SDK:通过 pip 安装 Navitia 的官方 SDK。
pip install navitia-python - 地理数据文件:
- 下载欧罗巴地区的火车站点 CSV 文件
train_stations_europe.csv。
- 下载欧罗巴地区的火车站点 CSV 文件
服务器配置
- 创建 MCP 配置文件:
- 配置 Navitia 的应用 ID 和密钥。
NAVITIA_APP_ID = 'your_app_id' NAVITIA_APP_KEY = 'your_app_key'
- 配置 Navitia 的应用 ID 和密钥。
- 初始化数据库:
- 使用提供的 SQL 脚本创建必要的数据库表。
python init_db.py
- 使用提供的 SQL 脚本创建必要的数据库表。
💻 使用示例
基础用法
站点搜索工具
# 基于 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)
- 当地交通(公共汽车、有轨电车、地铁)
- 其他服务(出租车、自行车共享)
附近地点搜索
站点详细信息工具可以查找站点附近的兴趣点:
- 其他交通停靠站
- 餐饮设施
- 旅游景点
- 商业区域
🔧 技术细节
故障排除与维护
- 错误处理:实现适当的异常捕捉和日志记录机制。
- 性能优化:使用缓存技术减少重复查询。
- 监控工具:集成系统健康监测功能,及时发现并解决问题。
安全注意事项
- 凭据管理:确保 Navitia 的应用 ID 和密钥安全,避免泄露。
- 网络防护:使用 HTTPS 保障数据传输安全。
- 访问控制:实施身份验证和授权机制,限制未授权访问。
📄 许可证
本项目遵循 MIT 许可证,具体条款请参考 LICENSE 文件。
🔗 文档与资源
🤝 贡献与支持
- 问题报告:在 GitHub 仓库中提交 issue。
- 代码贡献: Fork 仓库并提出 Pull Request。
- 社区支持: 加入相关技术论坛或 Slack 频道。
📞 联系方式
如有任何问题或建议,请联系:
- 电子邮箱:support@sncf.com
- 电话:+33 1 23 45 67 89
⚠️ 重要提示
本指南中的代码示例和配置细节仅供参考,实际使用中请根据具体需求调整。
扫码联系在线客服