🚂 TchouTchou MCP-法国列车搜索ChatGPT
一个ChatGPT应用程序,允许您使用 交互式视觉界面 包括地图、实时时间表和路线比较。
 ](https://www.npmjs.com/package/@shyzus/tchoutchou-mcp) ](https://www.npmjs.com/package/@shyzus/tchoutchou-mcp) 
______________________________________________________________________
⚠️ 免责声明
这个项目是独立的、非官方的。
- ❌ 无关联 与SNCF、Keolis或Kisio Digital合作
- ❌ 没有赞助 由这些组织
- ✅ 用途 公共数据 从 纳维蒂亚 API
- ✅ 教育和实用目的项目
交通数据来自Navitia API,该API汇集了法国交通网络的开放数据。
🎯 这是怎么一回事?
此应用程序允许 ChatGPT 访问SNCF运输数据并在 交互式React界面 直接在谈话中。
✨ 特性
- 🔍 车站搜索 -通过自动补全功能查找法国的任何车站
- 📍 地址搜索 -将地址或地点转换为GPS坐标(提名)
- 🗺️ 附近景点 -从GPS位置查找最近的交通站点
- 🚄 实时时间表 -通过交互式界面实时了解下一次出发和到达情况
- 🗺️ 路线计算 -连接完成旅程
- 📊 视觉界面 -ChatGPT中集成的React组件:
- JourneyViewer:带自适应缩放的交互式地图,带标签的路线比较 - 离港旅客:带时刻表、延误、站台和路线图的出发表 - Arrivals查看器:到达表,包括出发地、时间表、延误和路线图 - 地址地图查看器:在交互式地图上显示一个点 - 所有地图的全屏模式 - 时间表、连接和中间站点的详细信息
💬 使用示例
在ChatGPT中,只需问:
“给我找一列明天早上8点左右从巴黎到里昂的火车。”
ChatGPT将:
- 搜索巴黎和里昂站
- 计算可用路线
- 显示交互式界面 带地图和时间表
______________________________________________________________________
🏗️ 架构:ChatGPT MCP应用程序
什么是ChatGPT应用程序?
ChatGPT应用程序 (通过 应用软件开发工具包)允许您通过以下方式扩展ChatGPT:
- 自定义工具 (调用外部API)
- 视觉界面 (对话中的React组件)
- 实时数据 (最新信息)
它是如何工作的?
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ ChatGPT │ ◄─────► │ MCP Server │ ◄─────► │ SNCF API │
│ │ JSON │ (Node.js) │ HTTP │ (Navitia) │
│ + React UI │ ─────► │ + React UI │ │ │
└─────────────┘ └──────────────┘ └──────────────┘- ChatGPT 通过呼叫您的MCP服务器 模型上下文协议
- MCP服务器 从SNCF API获取数据
- React接口 在ChatGPT中自动显示结果
MCP协议
MCP(模型上下文协议)是Anthropic创建的一个开放标准,允许LLM安全地访问外部数据和工具。它由以下人员使用:
- ChatGPT(通过Apps SDK)
- 克劳德桌面
- 光标
- 其他MCP客户端
______________________________________________________________________
🚀 快速开始
与光标/克劳德桌面/扭曲一起使用
最简单的方法 -安装连接到远程服务器的npm客户端:
{
"mcpServers": {
"tchoutchou": {
"command": "npx",
"args": ["-y", "@shyzus/tchoutchou-mcp"]
}
}
}配置文件位置:
- 光标:
~/.cursor/mcp.json(macOS/Linux)或%APPDATA%\Cursor\mcp.json(Windows) - 克劳德桌面:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) - 曲速:在扭曲AI设置中
______________________________________________________________________
与ChatGPT一起使用
生产服务器已经可用并准备就绪!
服务器URL: https://tchoutchou-mcp.rankorr.red/mcp
ChatGPT配置
- 拥有一个订阅的ChatGPT帐户 (ChatGPT Plus、团队或企业)
- 在浏览器中打开ChatGPT → Go to 设置 (⚙️)
- 转到“应用程序和连接器”
- 启用开发者模式:
- 在 “高级设置”,启用 开发者模式 - 回去
- 创建新应用程序:
- 这 “创建” 按钮现在出现在右上角 - 点击它 - 填写表格: - 名字“TchouTchou SNCF”(或其他名称) - 图像:添加图标/图像(可选) - 服务器URL: https://tchoutchou-mcp.rankorr.red/mcp - 认证:选择 “无” - 点击 “创建”
- 应用程序现在可用 在ChatGPT中,当您要求ChatGPT使用它时,它将自动激活
测试一下!
在ChatGPT中提问:
“给我找一列明天早上从巴黎到里昂的火车”
或者直接测试:
“使用TchouTchou SNCF查找从蒙彼利埃圣罗克出发的下一班航班”
交互式界面应该出现! 🎉
对于开发人员-本地安装
# 1. Clone the project
git clone https://github.com/Shyzkanza/tchoutchou-mcp.git
cd tchoutchou-mcp
# 2. Install dependencies
npm install
cd web && npm install && cd ..
# 3. Build
npm run build
# 4. Use locally
npx @modelcontextprotocol/inspector node dist/index.js______________________________________________________________________
📱 部署和开发
🔒 CI/CD机密配置: 要使用GitHub Actions和Portainer自动部署到VPS,请参阅 SECRETS.md 用于GitHub secrets配置。
💡 在ChatGPT中使用该应用程序,请参阅 🚀 快速开始 以上部分为完整说明。
选项1:使用ngrok进行本地测试(用于开发)
1.启动HTTP服务器
npm run start:http服务器启动于 http://localhost:3000
2.与ngrok接触
在一个 新终端:
# Install ngrok if necessary
brew install ngrok # macOS
# or download from https://ngrok.com/download
# Expose port 3000
ngrok http 3000你会得到一个公共URL,比如:
https://abc123.ngrok-free.dev重要:请注意完整的URL /mcp 最后: https://abc123.ngrok-free.dev/mcp
3.在ChatGPT中配置应用程序
按照中的配置说明进行操作 🚀 快速开始 部分,使用您的ngrok URL(https://your-url.ngrok-free.dev/mcp)而不是生产URL。
______________________________________________________________________
选项2:部署自己的服务器(适用于开发人员)
备注:如果您只想使用该应用程序,请参阅 🚀 快速开始 使用已经可用的生产服务器的部分。
该项目包括一个GitHub Actions工作流,可以自动部署到带有Docker和Portainer的VPS。
使用GitHub操作进行VPS部署
- 配置GitHub机密 根据 SECRETS.md
- 推到
main分支 - GitHub操作将自动:
- ✅ 测试TypeScript代码 - ✅ 发布到npm(@shyzus/tchoutchou-mcp) - ✅ 通过Portainer部署到您的VPS - ✅ 检查健康状况
益处:
- 每次推送时自动部署
- 免费SSL与Traefik+让我们加密
- 综合健康监测
- 集中式日志
其他云平台
您还可以部署在:
- 铁路 -从GitHub自动部署
- 渲染 -使用免费SSL的托管服务
- Fly.io -具有全球部署的边缘计算
- 谷歌云运行 -无服务器,自动扩展
请参阅 Apps SDK部署指南 了解更多详情。
在ChatGPT中配置您的服务器
部署后:
- 注意您的服务器URL:
https://your-domain.com/mcp - 按照中的说明进行操作 🚀 快速开始
______________________________________________________________________
🧪 本地测试(不含ChatGPT)
使用Cursor(您正在使用的IDE)
MCP服务器已在Cursor中工作!问我一个关于火车的问题,我会用服务器。
使用克劳德桌面
- 安装 克劳德桌面
- 在中配置
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"tchoutchou-mcp": {
"command": "node",
"args": [
"/absolute/path/to/tchoutchou-mcp/dist/index.js"
]
}
}
}- 重新启动克劳德桌面
- MCP图标🔌 出现在左下角
与MCP检查员一起
npx @modelcontextprotocol/inspector node dist/index.js打开web界面以测试所有工具。
______________________________________________________________________
📂 项目结构
tchoutchou-mcp/
├── src/ # MCP server code
│ ├── index.ts # MCP server (stdio for Cursor/Claude)
│ ├── http-server.ts # HTTP server (for ChatGPT)
│ ├── types.ts # TypeScript types
│ ├── client/
│ │ └── sncfApiClient.ts # SNCF Navitia API client
│ └── tools/
│ ├── searchStations.ts # 🔍 Station search
│ ├── searchAddress.ts # 📍 Address search (Nominatim)
│ ├── placesNearby.ts # 🗺️ Nearby points of interest (GPS)
│ ├── departures.ts # 🚄 Departure times (+ UI)
│ ├── arrivals.ts # 🚄 Arrival times (+ UI)
│ ├── journeys.ts # 🗺️ Route calculation (+ UI)
│ └── addressMap.ts # 🗺️ Address map display (+ UI)
│
├── web/ # React interface for ChatGPT
│ ├── src/
│ │ ├── component.tsx # Entry point with routing
│ │ ├── JourneyViewer.tsx # Journey component
│ │ ├── DeparturesViewer.tsx # Departures component
│ │ ├── ArrivalsViewer.tsx # Arrivals component
│ │ ├── AddressMapViewer.tsx # Address map component
│ │ ├── MapView.tsx # Leaflet interactive map
│ │ ├── hooks.ts # window.openai hooks
│ │ ├── types.ts # React types
│ │ └── utils.ts # Date/duration formatting
│ └── dist/
│ └── component.js # Bundle (generated)
│
├── dist/ # Compiled code (generated)
├── package.json # Server dependencies
├── tsconfig.json # TypeScript config
└── README.md # This file______________________________________________________________________
🛠️ 可用命令
# Development
npm run dev # Dev mode with hot-reload (stdio)
npm run dev:http # Dev mode HTTP server
# Production
npm run build # Compile server + UI
npm run build:ui # Compile UI only
npm run start # Start stdio server
npm run start:http # Start HTTP server (port 3000)______________________________________________________________________
🔧 高级配置
环境变量
创建一个 .env 文件:
PORT=3000 # HTTP server port
SERVER_URL=https://your-app.com # Public URL (optional)定制SNCF API
SNCF API(Navitia)是公开的,但您可以获得更多请求的密钥:
- 在上创建帐户 我很高兴。
- 获取您的API代币
- 修改
src/client/sncfApiClient.ts:
const SNCF_API_TOKEN = 'your-token-here';添加其他交通网络
Navitia API支持所有法国运输:
coverage/fr-idf-法兰西岛(地铁、RER、巴士)coverage/fr-sw-西南- 等等
在中添加新工具 src/tools/!
______________________________________________________________________
🎨 自定义界面
修改React UI
主要文件:
web/src/component.tsx-带条件路由的入口点web/src/JourneyViewer.tsx-旅程界面web/src/DeparturesViewer.tsx-出发界面web/src/ArrivalsViewer.tsx-到达界面web/src/AddressMapViewer.tsx-地址映射界面web/src/MapView.tsx-可重复使用的传单地图组件web/src/utils.ts-日期/持续时间格式
修改后:
npm run build:ui # Recompile the UI
# Restart the server主题与风格
该界面使用内联CSS以实现兼容性。要添加全局样式,请在中修改HTML src/http-server.ts:
const html = `
/* Your global styles */
...`;添加功能
可能添加的示例:
- 💰 价格显示
- ⭐ 最喜欢的电台
- 🔔 延迟警报
- 📅 节省行程
- 🎫 预订链接
______________________________________________________________________
📚 资源和文件
正式文件
- OpenAI应用软件开发工具包 -完整的ChatGPT应用指南
- 应用软件开发工具包-MCP服务器 -服务器配置
- 应用软件开发工具包-自定义用户体验 -React组件
- 模型上下文协议 -MCP规范
- MCP SDK TypeScript -Node.js SDK
- 法国国营铁路公司Navitia API -运输API文件
社区
- MCP服务器存储库 -官方示例
- OpenAI应用程序示例 -应用程序示例
______________________________________________________________________
🐛 调试与故障排除
服务器无法启动
# Check that Node.js is installed
node --version # Must be 18+
# Check that dependencies are installed
npm install
cd web && npm install && cd ..
# Full rebuild
npm run build用户界面在ChatGPT中不显示
- 检查ngrok日志 -查看ChatGPT是否正在发出请求
- 检查服务器 -
http://localhost:3000/health必须回应 - 刷新连接器 在ChatGPT中(设置→ Apps → 刷新)
- 检查CSP -允许的域
src/http-server.ts
CORS错误
服务器允许开发中的所有源。在生产中,限制 src/http-server.ts:
res.setHeader('Access-Control-Allow-Origin', 'https://chatgpt.com');日志
服务器日志显示在终端中。更多详情:
console.log('MCP Request:', jsonRpcRequest.method);______________________________________________________________________
🚀 将此项目用作模板
这个项目是 完整模板 用于使用React界面创建自己的ChatGPT应用程序。
要创建自己的应用程序:
- 复制此项目
- 更换法国国营铁路公司API 使用API
- 修改工具 在
src/tools/ - 自定义React UI 在
web/src/ - 部署!
可能的应用程序示例
- 🎬 电影院 -使用影院地图搜索电影和放映时间
- 🍽️ 餐厅 -带菜单和照片的预订
- 🏨 酒店 -图库搜索和可用性
- 📦 交付 -实时地图包裹跟踪
- 📰 新闻 -集成阅读器的文章
- 🎵 音乐 -ChatGPT中的音频播放器
- 📊 分析 -图表和仪表板
可能性是无限的! 🚀
______________________________________________________________________
📝 许可证
麻省理工学院-免费用于您的个人或商业项目。
______________________________________________________________________
🙏 学分和归属
- 运输数据 - Navitia API -来自法国交通网络的开放数据
- 地图 - 开放街景地图 通过 传单
- MCP协议 - Anthropic
- 应用软件开发工具包 - 开放人工智能
数据和许可证
运输数据来自Navitia API,该API汇总了:
- SNCF 数据(TGV,Intercété,TER)
- 区域交通数据
- 理论和实时时间表
这些数据是由交通运营商作为开放数据倡议的一部分提供的。
______________________________________________________________________
📞 支持
如有任何疑问:
- 📖 检查 Apps SDK文档
- 💬 在GitHub上打开一个问题
- 📧 联系团队
______________________________________________________________________
使用您的ChatGPT应用程序,祝您旅途愉快! 🚂✨
