China 12306 Train Tickets MCP について
China 12306 Train Tickets MCPは、中国鉄道の列車時刻と残席を駅・日付で調べる読み取り専用サーバーです。ホスト型エンドポイントを利用でき、セルフホストにも対応します。
主な機能
- 01列車時刻と座席の空席照会
- 02駅名のあいまい検索
- 03中国語の都市名・駅名で検索
- 04認証不要のホスト型エンドポイント
- 05PythonとDockerでのセルフホスト
活用シーン
- 01中国の駅間の列車を調べる
- 02発車時刻と座席クラスの空席を比較する
- 03検索に使う正確な駅名を探す
MCP 対応
Streamable HTTPを通じて、空席照会と駅検索のツールをMCPクライアントに提供します。公開エンドポイントは認証不要で、セルフホストも可能です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.pianam.cn/train-mcp/mcpclaude mcp add --transport http cn-pianam-mcp-12306-train https://mcp.pianam.cn/train-mcp/mcp{"mcpServers":{"cn-pianam-mcp-12306-train":{"type":"http","url":"https://mcp.pianam.cn/train-mcp/mcp"}}}Cursor で開く{"servers":{"cn-pianam-mcp-12306-train":{"type":"http","url":"https://mcp.pianam.cn/train-mcp/mcp"}}}VS Code で開く{"mcpServers":{"cn-pianam-mcp-12306-train":{"type":"http","url":"https://mcp.pianam.cn/train-mcp/mcp"}}}{"mcpServers":{"cn-pianam-mcp-12306-train":{"serverUrl":"https://mcp.pianam.cn/train-mcp/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
中国 12306 列車チケット MCP
任意の MCP クライアントから、中国鉄道 12306 のチケット空席状況を検索できます。中国語の駅名と日付を指定して、列車の時刻表と残席を確認できます。読み取り専用で、予約やアカウントは不要です。
- 30 秒で試す:無料の公開 MCP エンドポイントがすでに稼働しています。URL を MCP クライアントに貼り付けるだけです(インストール不要、API キー不要)。
- またはセルフホスト:Python ファイル 1 つで動作し、標準ライブラリの HTTP と FastMCP を使用するため、有料の依存関係はありません。
⚡ ホスト済みエンドポイントを使用する(セットアップ不要)
https://mcp.pianam.cn/train-mcp/mcp
トランスポート:Streamable HTTP(MCP 2025-03-26 互換)。認証は不要です。
🔌 クライアントの設定
クライアントの mcpServers 設定(Claude Desktop の claude_desktop_config.json、Cursor の mcp.json、Cline、Cherry Studio など)に、次の内容を追加します。
{
"mcpServers": {
"12306-train": {
"type": "http",
"url": "https://mcp.pianam.cn/train-mcp/mcp"
}
}
}
"type": "http"を受け付けないクライアント(Cherry Studio の一部のバージョンや古い Cline など)では、同じ項目の"url"だけを指定してください。
🧰 ツール
| ツール | パラメーター | 戻り値 |
|---|---|---|
query_train_tickets(from_city, to_city, date="") | from_city / to_city:"青岛"、"北京南" などの中国語の都市名または駅名。date:YYYY-MM-DD。空の場合は明日が指定されます。12306 の予約可能期間は通常 15 日です。 | 列車番号、出発駅・到着駅と時刻、所要時間、座席クラスごとの残席(ビジネスクラス/一等席/二等席、軟臥/硬臥、硬座、無座)を含む列車一覧。 |
search_station(keyword) | keyword:例 "北京"。 | 駅名をあいまい検索します(最大 30 件を返します:北京、北京南、北京西、北京北など)。利用する駅がわからない場合に便利です。 |
📡 データソース、キャッシュ、制限
- データは12306 独自の公開クエリエンドポイント(
kyfw.12306.cn/otn/leftTicket/...)から取得します。読み取り専用のクエリのみで、このサーバーではチケットを予約できません。公式の 12306 アプリ/ウェブサイトから購入してください。 - 駅コード表はローカルに 7 日間キャッシュされ、チケットのクエリは 300 秒間キャッシュされます。
- API キーもログインも不要です。
- ホスト済みエンドポイントには、IP あたり毎分 200 リクエストのレート制限があります。
🐢 セルフホスト
git clone https://github.com/boy-373/12306-train-mcp.git
cd 12306-train-mcp
pip install -r requirements.txt
python train_mcp_server.py
# the server listens on 127.0.0.1:8003 by default; override with:
# MCP_HOST=0.0.0.0 MCP_PORT=9000 python train_mcp_server.py
# MCP_ALLOWED_HOSTS="your-domain.com,127.0.0.1:*"
# MCP_ALLOWED_ORIGINS="https://your-domain.com"
MCP クライアントの接続先を http://127.0.0.1:8003/mcp に設定します。
API キーやアカウントは不要です。
🐳 Docker でセルフホスト
オプション A — ビルド済みイメージを取得する(最速、ビルド不要):
docker run -d -p 8000:8000 --name 12306-train-mcp ghcr.io/boy-373/12306-train-mcp:latest
オプション B — ソースからビルドする:
git clone https://github.com/boy-373/12306-train-mcp.git
cd 12306-train-mcp
docker build -t 12306-train-mcp .
docker run -d -p 8000:8000 --name 12306-train-mcp 12306-train-mcp
MCP クライアントの接続先を http://127.0.0.1:8000/mcp に設定します。
コンテナーはデフォルトで 0.0.0.0:8000 をリッスンします(-e MCP_PORT=9000 で変更し、それに応じて -p も調整してください)。API キーやアカウントは不要です。
train_stations.json— 同梱の 12306 駅名 → 電信コード表(12306 から 7 日ごとに自動更新)。
🗂️ ファイル
train_mcp_server.py— MCP サーバー(FastMCP、Streamable HTTP トランスポート)。rate_limit.py— 軽量な IP ごとのスライディングウィンドウ方式レート制限ミドルウェア(デフォルトは毎分 200 リクエスト)。requirements.txt—mcp、uvicorn、starlette。server.json— 公式 MCP Registry マニフェスト(リモートサーバーのエントリー。mcp-publisherで公開できる状態です)。smithery.yaml/glama.json— ディレクトリー掲載用のメタデータ。
🧯 パラメーターガイドとよくあるエラー(呼び出しに失敗した場合はこちらをご覧ください)
query_train_tickets(from_city, to_city, date="")
| パラメーター | 指定する値 | 備考 |
|---|---|---|
from_city / to_city | 中国語の駅名または都市名。例:"青岛"、"北京"、"上海虹桥" | 都市に主要駅が1つしかない場合は都市名で指定できます。複数の駅がある都市では、正確な駅名を指定してください。不明な場合は、まず search_station("北京") を呼び出してください。北京/北京南/北京西/北京北…が返されます。 |
date | YYYY-MM-DD 形式。例:"2026-09-20" | 省略可能です。空の場合は明日がデフォルトになります。12306の発売前期間は15日間です(それより先の日付では、エラーまたは結果なしになります)。 |
HTTP 400エラーまたはエラー結果が返される理由:
- 日付形式が正しくない — 厳密に
YYYY-MM-DD形式で指定する必要があります(2026/09/20、2026年9月20日、Sep 20はすべて失敗します)。 - 駅名が見つからない — 入力ミス、ピンイン(
"qingdao")、またはコード表にない曖昧な通称が原因です。解決方法:キーワードを指定してsearch_stationを呼び出し、返された正確な駅名をコピーしてください。 - 複数の駅がある都市で都市名を指定している — 例:
"北京"は通常「北京」駅に解決されますが、特定の駅を利用する場合は"北京南"/"北京西"を明示的に指定してください。 - 日付が15日間の発売前期間を過ぎている — 12306では、該当する乗車券はまだ発売されていません。
正しい呼び出し例:
query_train_tickets(from_city="青岛", to_city="北京", date="2026-09-20")
query_train_tickets(from_city="北京南", to_city="上海虹桥") # date omitted -> tomorrow
search_station(keyword="上海") # -> 上海/上海南/上海虹桥/上海西…
成功すると、车次总数 と 车次 のリスト(列車番号、出発駅/到着駅と時刻、所要時間、座席クラスごとの残席数)が返されます。認識されない駅名を指定した場合は、{"error": "出发站「…」无法识别,可用 search_station 工具查车站名"} が返されます。正確な駅名に置き換えて再度呼び出してください。
🧯 パラメーターの説明とよくあるエラー(呼び出しに失敗した場合はこちらをご覧ください)
query_train_tickets(from_city, to_city, date="") のパラメーター説明
| パラメーター | 指定する値 | 注意事項 |
|---|---|---|
from_city / to_city | 中国語の駅名または都市名。例:"青岛"、"北京"、"上海虹桥" | 都市に主要駅が1つしかない場合は都市名で指定できます。複数の駅がある都市では、具体的な駅名を指定することをおすすめします。不明な場合は、まず search_station("北京") を呼び出してください。北京/北京南/北京西/北京北などの正確な駅名が返されます。 |
date | YYYY-MM-DD 形式。例:"2026-09-20" | 空欄にできます。空欄の場合は明日がデフォルトです。12306の発売前期間は通常15日間で、期間を過ぎた日付を指定すると、検索に失敗するか結果が返されません。 |
400エラーまたはエラー結果が返されるよくある原因:
- 日付形式の誤り:厳密に
YYYY-MM-DD形式で指定する必要があります。2026/09/20、2026年9月20日、Sep 20などの形式では失敗します。 - 駅名が存在しない:入力ミス、ピンイン(例:
"qingdao")、またはコード表にない通称は認識されません。解決方法:まずsearch_stationでキーワード検索し、返された正確な駅名をコピーしてください。 - 複数の駅がある都市で一般的な都市名を指定している:例:
"北京"は通常「北京」駅に一致します。特定の駅を利用する場合は、"北京南"、"北京西"などを明示的に指定してください。 - 日付が15日間の発売前期間を過ぎている:12306では、該当する乗車券はまだ発売されていないため、検索に失敗したことを示すメッセージが返されます。
正しい呼び出し例:
query_train_tickets(from_city="青岛", to_city="北京", date="2026-09-20")
query_train_tickets(from_city="北京南", to_city="上海虹桥") # date 留空 -> 默认明天
search_station(keyword="上海") # 返回 上海/上海南/上海虹桥/上海西…
呼び出しに成功すると、车次总数 と 车次 のリスト(列車番号、出発駅/到着駅と時刻、所要時間、座席クラスごとの残席数)が返されます。駅名が認識されない場合は、{"error": "出发站「…」无法识别,可用 search_station 工具查车站名"} が返されます。正確な駅名に置き換えて再試行してください。
🇨🇳 中国語での使用方法
ひとことで言うと:中国語の駅名を入力するだけで、12306の空席を検索できます。データは12306の公式公開検索インターフェースから取得しており、読み取り専用です。
オンライン直結 URL(無料、キー不要、すぐに使えます):https://mcp.pianam.cn/train-mcp/mcp
MCP クライアント(Claude Desktop / Cursor / Cherry Studio / Cline など)の設定に追加してください。
{
"mcpServers": {
"12306-train": {
"type": "http",
"url": "https://mcp.pianam.cn/train-mcp/mcp"
}
}
}
ツール:
query_train_tickets(from_city, to_city, date):空席を検索します。出発駅/到着駅には中国語の都市名または駅名(「青岛」「北京南」など)を指定します。日付はYYYY-MM-DD形式で、空欄の場合は明日がデフォルトです。列車番号、出発時刻と到着時刻、所要時間、および商务座/一等座/二等座/软卧/硬卧/硬座/无座などの残席数が返されます。search_station(keyword):都市にどのような駅があるか不明な場合に、駅名をあいまい検索します(例:「北京」では北京/北京南/北京西/北京北などが返されます)。- 空席検索のみ対応しており、乗車券の購入はできません。12306の発売前期間は通常15日間です。
サービスの特長:すべて公開インターフェースからデータを取得し、登録や支払いは不要です。サーバー側でメモリーキャッシュを使用し、失敗時は自動でフォールバック/予備経路に切り替えます。1つの IP アドレスにつき、1分間に200回まで利用できます。
ローカルでのデプロイ:
git clone https://github.com/boy-373/12306-train-mcp.git
cd 12306-train-mcp
pip install -r requirements.txt
python train_mcp_server.py
# 默认监听 127.0.0.1:8003,可用环境变量 MCP_HOST / MCP_PORT / MCP_ALLOWED_HOSTS / MCP_ALLOWED_ORIGINS 覆盖
Docker によるセルフホスト:
# 方式一:直接拉预构建镜像(最快,无需构建)
docker run -d -p 8000:8000 --name 12306-train-mcp ghcr.io/boy-373/12306-train-mcp:latest
# 方式二:从源码构建
git clone https://github.com/boy-373/12306-train-mcp.git && cd 12306-train-mcp
docker build -t 12306-train-mcp .
docker run -d -p 8000:8000 --name 12306-train-mcp 12306-train-mcp
# MCP 地址填:http://127.0.0.1:8000/mcp
コンテナーはデフォルトで 0.0.0.0:8000 をリッスンします(-e MCP_PORT=端口 で変更できます)。API キーやアカウントは不要です。
📄 ライセンス
MIT © 2026 boy-373
Smithery 経由でインストール
Smithery に対応したクライアント(Claude Desktop、Cursor など)にワンクリックでインストールできます。
または、次のコマンドを実行してください。
npx -y @smithery/cli install 1561852680/12306-train-mcp --client claude
🔌 あらゆる AI クライアントで使える — ワンクリック MCP ゲートウェイ
無料のMCP 集約ゲートウェイをホストしています。AI アシスタント(Cherry Studio、Claude Desktop、Cursor、Cline など、あらゆる MCP クライアント)は、単一の URL を通じて MCP ツールを検出し、使用できます。
https://mcp.pianam.cn/ai/mcp
一度追加するだけで、自然な言葉で話しかければ、AI が適切な MCP を自動で検索 → 詳細確認 → 呼び出しします。
- 🔍 インデックス登録された 22,000 以上の MCP サーバー(中国語・英語)を横断検索
- ⚡ 50 以上の稼働中ホスト型 MCPをすぐに直接呼び出せます(天気、為替レート、話題のトレンド、IP ジオロケーション、列車のチケットなど)
- 📦 GitHub ベースの MCP:検索結果からローカルにインストールするためのリンクを確認できます
- ✅ サーバーの稼働状況を毎週チェックし、稼働中のものを上位に表示します
- 🆓 無料で利用でき、キーは不要です
📖 3 ステップのセットアップガイド / 中国語の接続チュートリアル:https://mcp.pianam.cn/ai-gateway
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。