MCP server for China Railway 12306 ticket availability: schedules and seats by Chinese station name.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
查询中国大陆12306火车票余票信息。参数from_city出发城市/车站中文名,to_city到达城市/车站中文名,date出发日期格式YYYY-MM-DD;留空默认明天。
到达城市或车站中文名,如 "北京"、"上海虹桥"
出发城市或车站中文名,如 "青岛"、"北京南"
出发日期,格式 YYYY-MM-DD;留空默认明天
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http 12306-train-mcp https://pianam.cn/train-mcp/mcp
查询中国大陆12306火车票余票信息。参数from_city出发城市/车站中文名,to_city到达城市/车站中文名,date出发日期格式YYYY-MM-DD;留空默认明天。
| Argument | Type | Description |
|---|---|---|
| date | string | 出发日期,格式 YYYY-MM-DD;留空默认明天 |
| to_city* |
| string |
| 到达城市或车站中文名,如 "北京"、"上海虹桥" |
| from_city* | string | 出发城市或车站中文名,如 "青岛"、"北京南" |
{
"type": "object",
"required": [
"from_city",
"to_city"
],
"properties": {
"date": {
"type": "string",
"default": "",
"description": "出发日期,格式 YYYY-MM-DD;留空默认明天"
},
"to_city": {
"type": "string",
"description": "到达城市或车站中文名,如 \"北京\"、\"上海虹桥\""
},
"from_city": {
"type": "string",
"description": "出发城市或车站中文名,如 \"青岛\"、\"北京南\""
}
},
"additionalProperties": false
}按关键词搜索12306车站名称,返回匹配的车站中文名列表。不确定城市有哪些车站时使用。
| Argument | Type | Description |
|---|---|---|
| keyword* | string | 关键词,如 "北京" |
{
"type": "object",
"required": [
"keyword"
],
"properties": {
"keyword": {
"type": "string",
"description": "关键词,如 \"北京\""
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.