← 返回目录
1

12306 MCP Server

社区
基于 MCP 的 12306 火车票实时查询服务
GitHub 源仓库 ↗
★ 386 Stars 分类 · 其他 非常热门
66FMRS · C

这是一个 MIT 许可的第三方开源 MCP 服务端,把 12306 的公开查询能力(余票、票价、车站、经停、换乘、时间)标准化为 7 个 MCP 工具,支持 Stdio 与 Streamable HTTP 双传输并提供 Docker 部署,还内置了 /health、/schema/tools 等运维端点,工程结构清晰、文档较完整。它并非 12306 官方产品,也不提供购票类操作,且作者明确声明仅供学习研究、禁止商业使用,因此适合个人出行查询与 MCP 开发学习,不适合作为有 SLA 要求的商业系统。

可靠性
11/20
安全与权限
13/20
维护活跃度
13/20
文档质量
15/20
安装易用性
14/20
查看 FMRS 评分方法 →

12306 MCP Server 是一个基于 Model Context Protocol (MCP) 的高性能火车票查询后端系统,通过标准化接口转发 12306 官方公开数据,提供余票、票价、车站、经停、换乘与时间六大类查询能力。项目为 MIT 许可的第三方开源项目,并非 12306 官方产品。它同时支持 Stdio(本地客户端)与 Streamable HTTP(远程部署,默认 8000 端口)两种传输模式,两者共享同一核心实例,并提供 Docker 镜像部署方式。

工具能力

query-tickets
余票 / 车次 / 座席 / 时刻一站式查询,支持按车次过滤
query-ticket-price
实时查询各车次各席别票价
search-stations
车站模糊搜索,支持中文 / 拼音 / 简拼 / 三字码
query-transfer
中转换乘方案查询,返回完整路径与等待时间
get-train-route-stations
查询指定列车的全部经停站与到发时刻
get-train-no-by-train-code
由车次号获取官方唯一编号
get-current-time
获取当前时间与相对日期,辅助选择出行日期

安装接入

  1. 准备环境:Python >= 3.10, < 3.14,并确保可访问 12306 官方接口。
  2. Stdio 模式(本地客户端推荐):执行 uvx mcp-server-12306,或在客户端配置中写入 {"mcpServers": {"12306": {"command": "uvx", "args": ["mcp-server-12306"]}}};也可使用 pip / pipx 安装。
  3. Streamable HTTP 模式:安装后运行 mcp-12306,或从源码运行 uv run python scripts/start_server.py,服务默认监听 8000 端口,客户端配置 URL 为 http://localhost:8000/mcp。
  4. Docker 部署:docker run -d -p 8000:8000 --name mcp-server-12306 drfccv/mcp-server-12306:latest
  5. 可选配置:通过环境变量或 .env 设置 SERVER_HOST(默认 0.0.0.0)、SERVER_PORT(默认 8000)、DEBUG(默认 false)、LOG_LEVEL(默认 INFO)。
claude_desktop_config.json
{
  "mcpServers": {
    "12306": {
      "command": "uvx",
      "args": ["mcp-server-12306"]
    }
  }
}

选型与风险

适合谁

  • 需要在中国境内做火车出行规划的个人用户
  • 希望把 12306 查询能力接入 Claude Desktop、Cursor 等 MCP 客户端的开发者
  • 需要自建远程 HTTP MCP 服务或使用 Docker 部署的团队
  • 用于学习与研究 MCP 服务端实现的开发者

不适合谁

  • 需要官方购票、改签、退票或支付能力的场景(本项目仅提供查询)
  • 商业用途或对可用性、稳定性有 SLA 要求的正式生产系统
  • 对上游接口波动零容忍、要求数据绝对实时的关键业务
  • 期望获得 12306 官方支持与背书的用户

所需权限

  • 网络访问权限:需可访问 12306 官方接口
  • 本地文件读取:读取内置车站数据等静态资源
  • HTTP 模式下的端口监听:默认绑定 0.0.0.0:8000
  • 读取项目根目录 .env 文件(若使用)

风险与副作用

  • 第三方非官方项目,仅聚合与转发 12306 公开接口,上游接口变更或限流可能导致查询失败
  • README 明确声明仅供学习研究,严禁商业用途;使用造成的后果由使用者承担
  • 以 0.0.0.0 暴露 HTTP 端口可能被同网络其他主机访问,且项目未描述任何鉴权机制
  • 频繁调用上游接口可能触发限流,甚至影响使用者账号
  • 查询结果依赖上游数据,可能存在延迟或不准确,不应作为唯一决策依据

常见排障

  1. 确认 Python 版本满足 >= 3.10, < 3.14
  2. 确认运行环境可正常访问 12306 官方接口
  3. Stdio 模式下检查客户端配置中的命令与参数是否正确(uvx / pipx / uv)
  4. HTTP 模式下访问 /health 检查服务状态、已加载车站数与活跃会话数
  5. HTTP 模式下访问 /schema/tools 核对工具 Schema 是否正常加载
  6. 端口冲突时通过 SERVER_PORT 调整监听端口,并用 DEBUG 与 LOG_LEVEL=DEBUG 提升日志详细程度
  7. 车站数据异常时可运行 scripts/update_stations.py 更新车站数据

使用场景

在 AI 助手中对话式查询指定日期、区间的火车余票与座席情况
对比同一线路各车次各席别的实时票价
按中文、拼音、简拼或三字码搜索全国车站
在没有直达车时查询官方中转换乘方案
查询某趟列车的全部经停站与到发时刻
获取当前时间与相对日期,辅助确定出行日期

支持客户端

Claude Desktop完整支持
Cursor完整支持