- name
- MCP 12306 火车票
- description
- 12306 火车票查询、余票查询、车次查询工具。基于MCP协议的官方火车票查询服务,支持实时票价、余票、车次时刻等信息查询。
- triggers
- ["火车票","查询火车","12306","购票","余票","车次","高铁"]
- mcp
- {"command":"uvx","args":["mcp-server-12306"]}
# 12306 火车票查询 MCP 技能
## 功能说明
12306 MCP Server 提供中国铁路12306官方网站的火车票查询功能:
- 🚄 **车次查询**:查询两站之间的所有车次
- 💺 **余票查询**:实时查询各座位类型的余票情况
- 💰 **票价查询**:获取各座位类型的票价信息
- ⏰ **时刻表**:查询列车发车和到达时间
- 🔄 **中转查询**:支持中转方案推荐
## 工具列表
### 1. search_trains - 车次查询
**功能描述**:查询指定日期两站之间的所有车次
**参数说明**:
| 参数 | 类型 | 必需 | 说明 |
|------|------|------|------|
| from_station | string | ✅ | 出发站(站名或电报码) |
| to_station | string | ✅ | 到达站(站名或电报码) |
| date | string | ✅ | 出发日期(YYYY-MM-DD) |
| purpose_codes | string | ❌ | 票种:ADULT(成人)/ STUDENT(学生) |
**使用示例**:
```json
{
"from_station": "北京",
"to_station": "上海",
"date": "2026-03-10",
"purpose_codes": "ADULT"
}
```
### 2. query_ticket - 余票查询
**功能描述**:查询指定车次的余票情况
**参数说明**:
| 参数 | 类型 | 必需 | 说明 |
|------|------|------|------|
| train_no | string | ✅ | 车次号 |
| from_station | string | ✅ | 出发站 |
| to_station | string | ✅ | 到达站 |
| date | string | ✅ | 出发日期 |
**返回字段**:
- 各座位类型的余票数量(商务座、一等座、二等座等)
- 座位类型代码和名称
- 是否可购买标志
### 3. get_station_code - 站点代码查询
**功能描述**:获取站点名称对应的电报码
**参数**:
- `station_name`: 站点名称
**用途**:车次查询需要使用站点电报码
## 配置方式
### 方式一:NPX 运行(推荐)
```json
{
"mcpServers": {
"12306-mcp": {
"command": "npx",
"args": ["-y", "12306-mcp"]
}
}
}
```
### 方式二:HTTP 服务模式
```bash
npx -y 12306-mcp --port 3000
```
```json
{
"mcpServers": {
"12306-mcp": {
"url": "http://localhost:3000/mcp"
}
}
}
```
### 方式三:Docker 部署
```bash
docker run -i --rm 12306-mcp
```
## 使用场景
### 1. 查询车次
```
用户:帮我查一下明天从北京到上海的高铁
助手:[调用 search_trains 工具查询车次列表]
```
### 2. 查看余票
```
用户:G1次列车还有票吗?
助手:[调用 query_ticket 查询余票情况]
```
### 3. 学生票查询
```
用户:帮我查学生票
助手:[设置 purpose_codes=STUDENT 查询]
```
## 触发时机
- 用户询问火车票、高铁相关信息
- 需要查询列车时刻表
- 需要了解余票情况
- 计划出行需要购票信息
## 座位类型说明
| 代码 | 名称 | 说明 |
|------|------|------|
| SWZ | 商务座 | 最高级别座位 |
| ZY | 一等座 | - |
| ZE | 二等座 | 常见座位 |
| GR | 高级软卧 | 卧铺 |
| RW | 软卧 | 卧铺 |
| YW | 硬卧 | 卧铺 |
| RZ | 软座 | - |
| YZ | 硬座 | 最经济 |
## 最佳实践
### 1. 先查站点代码
```python
# 查询站点代码
station_code = get_station_code("北京西") # 返回: BXP
# 使用站点代码查询车次
trains = search_trains(
from_station="BXP",
to_station="SHH",
date="2026-03-10"
)
```
### 2. 日期格式
- 使用 YYYY-MM-DD 格式
- 可查询未来15天内的车票
### 3. 查询时机
- 早上8点更新最新数据
- 节假日票源紧张,建议提前查询
## 注意事项
⚠️ **重要提示**:
1. 本工具仅提供查询功能,不支持在线购票
2. 数据来源于12306官网,实时性可能有延迟
3. 节假日期间查询频率建议适度控制
4. 学生票需确认学生资质有效
## 常见问题
### Q: 查询返回空结果?
**A**: 可能原因:
- 日期超出可查询范围(15天内)
- 站点名称不正确
- 该日期无车次运行
### Q: 如何区分站点代码?
**A**: 使用 get_station_code 工具查询:
- 北京站 → BJP
- 北京西站 → BXP
- 上海站 → SHH
- 上海虹桥站 → AOHHQ
### Q: 余票显示"有"但无法购买?
**A**: 可能原因:
- 网络延迟导致数据未同步
- 车票已被其他用户锁定
- 需要登录12306账号才能购买
## 官方资源
- **项目地址**: https://github.com/Joooook/12306-mcp
- **许可证**: MIT License
- **维护状态**: 活跃维护中
---
*更新时间: 2026-03-08*
*版本: 1.0*
View on GitHub