🚀 航空チケットMCPサーバ
このサーバは、モデルコンテキストプロトコル(MCP)に基づいた航空チケット照会サーバです。AIアシスタントに対して、標準化されたフライトのリアルタイム動態照会機能インターフェースを提供します。
🚀 クイックスタート
このサーバは、航空チケット関連の照会操作に必要なツールとリソースを実装しています。AIアシスタントと航空サービスシステムの間の橋渡しとして機能し、フライトのリアルタイム動態照会機能に特化しています。
✨ 主な機能
フライトのリアルタイム動態照会
- フライト番号と日付に基づいて、フライトの詳細情報を照会することができます。
- リアルタイムのフライト動態と状態情報を取得できます。
- コードシェアフライト番号を表示します。
- フライトの時刻表と機種情報を提供します。
- 空港とターミナルの情報を表示します。
- 定時率統計を提供します。
- 搭乗手続きカウンターと搭乗口の情報を表示します。
- 食事と手荷物預け情報を提供します。
- 天気予報を表示します。
- 連絡先電話番号情報を提供します。
フライトルート照会
- 出発地、目的地、出発日に基づいて、利用可能なフライトを照会できます。
- 282の国内都市と空港コードをサポートしています。
- スマートな都市名解析機能があり、都市名、空港コード、完全な形式をサポートします。
- リアルタイムのフライト価格とフライト時刻情報を提供します。
- 航空会社と機種情報を表示します。
- ターミナルと搭乗口の情報を提供します。
- 価格統計と航空会社分布を表示します。
- 照会結果を整形して出力します。
🔧 技術詳細
技術アーキテクチャ
コアモジュール (Core)
ツールモジュール (Tools)
- フライトのリアルタイム動態照会ツールを提供します。
ユーティリティ (Utils)
- データの検証と整形を行います。
- 日付と時間の処理を行います。
- APIクライアントのラッピングを行います。
サポートされる伝送プロトコル
このサーバは、以下の3つの伝送プロトコルをサポートしています。
- sse - Server-Sent Events(デフォルト、Webアプリケーションに適しています)
- stdio - 標準入出力(Claude Desktopに適しています)
- streamable-http - ストリーミング可能なHTTP(HTTPクライアントに適しています)
📦 インストール
前提条件
- Python 3.11 以上
- pip パッケージマネージャー
基本的なインストール
cd FlightTicketMCPServer
pip install -r requirements.txt
起動方法
1. 直接起動(デフォルトのSSEモード)
python flight_ticket_server.py
python main.py
2. デバッグモードで起動
set MCP_DEBUG=true
python flight_ticket_server.py
export MCP_DEBUG=true
python flight_ticket_server.py
3. 異なる伝送プロトコルで起動
SSEモード(デフォルト)
python flight_ticket_server.py
stdioモード
set MCP_TRANSPORT=stdio
python flight_ticket_server.py
export MCP_TRANSPORT=stdio
python flight_ticket_server.py
HTTPモード
set MCP_TRANSPORT=streamable-http
set MCP_HOST=127.0.0.1
set MCP_PORT=8000
python flight_ticket_server.py
export MCP_TRANSPORT=streamable-http
export MCP_HOST=127.0.0.1
export MCP_PORT=8000
python flight_ticket_server.py
4. 環境変数の設定
.envファイルの使用(推奨)
プロジェクトには、.env.exampleファイルが設定テンプレートとして提供されています。
- 設定テンプレートをコピーする:
cp .env.example .env
- 設定ファイルを編集する:
.envファイルを開き、必要に応じて設定値を変更します。
# MCPサーバの設定
MCP_TRANSPORT=sse
MCP_HOST=127.0.0.1
MCP_PORT=8000
MCP_SSE_PATH=/sse
# ログの設定
LOG_LEVEL=INFO
LOG_FILE_PATH=logs/flight_server.log
LOG_MAX_SIZE=10
LOG_BACKUP_COUNT=5
# 開発設定
MCP_DEBUG=false
- 設定の説明:
.envファイルには機密設定が含まれており、バージョン管理にはコミットされません。
.env.exampleは安全なテンプレートファイルであり、Gitにコミットすることができます。
- 環境変数の優先順位は、システム環境変数 > .envファイル > プログラムのデフォルト値です。
直接環境変数を設定する
.envファイルを使用しない場合は、直接環境変数を設定することもできます。
サポートされている環境変数は以下の通りです。
| 変数名 |
説明 |
デフォルト値 |
選択可能な値 |
MCP_TRANSPORT |
伝送プロトコルの種類 |
sse |
stdio, sse, streamable-http |
MCP_HOST |
サーバのホストアドレス |
127.0.0.1 |
有効なIPアドレス |
MCP_PORT |
サーバのポート |
8000 |
1 - 65535 |
MCP_PATH |
HTTPパス |
/mcp |
有効なパス |
MCP_SSE_PATH |
SSEパス |
/sse |
有効なパス |
MCP_DEBUG |
デバッグモード |
false |
true, false, 1, 0 |
LOG_LEVEL |
ログレベル |
INFO |
DEBUG, INFO, WARNING, ERROR, CRITICAL |
LOG_FILE_PATH |
ログファイルのパス |
logs/flight_server.log |
有効なパス |
LOG_MAX_SIZE |
ログファイルの最大サイズ(MB) |
10 |
正の整数 |
LOG_BACKUP_COUNT |
ログのバックアップ数 |
5 |
正の整数 |
FASTMCP_LOG_LEVEL |
FastMCPのログレベル |
INFO |
DEBUG, INFO, WARNING, ERROR |
5. 起動の検証
起動に成功すると、以下のような出力が表示されます。
Transport: sse
Logging enabled - logs will be saved to logs/ directory
Flight Ticket MCP Server starting...
Transport: sse
All tools registered successfully
Starting SSE transport on 127.0.0.1:8000/sse
6. ログファイル
サーバが起動すると、logs/ディレクトリに以下のログファイルが生成されます。
flight_server.log - 一般的なログ(INFOレベル以上)
flight_server_error.log - エラーログ(ERRORレベル)
flight_server_debug.log - デバッグログ(デバッグモードでのみ生成されます)
7. サーバの停止
- stdioモード:
Ctrl+C を押して停止します。
- HTTP/SSEモード:
Ctrl+C を押すか、SIGTERMシグナルを送信して停止します。
💻 使用例
Claude Desktopとの設定
- インストールが完了したら、サーバをClaude Desktopの設定ファイルに追加します。
{
"mcpServers": {
"flight-ticket-server": {
"command": "python",
"args": ["D:\\FlightTicketMCPServer\\flight_ticket_server.py"],
"env": {
"MCP_TRANSPORT": "sse",
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8000"
}
}
}
}
- 設定ファイルの場所:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Claude Desktopを再起動して設定を読み込みます。
異なる伝送プロトコルの設定
SSEモード(デフォルト)
{
"mcpServers": {
"flight-ticket-server": {
"command": "python",
"args": ["D:\\FlightTicketMCPServer\\flight_ticket_server.py"],
"env": {
"MCP_TRANSPORT": "sse",
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8000",
"MCP_SSE_PATH": "/sse"
}
}
}
}
stdioモード
{
"mcpServers": {
"flight-ticket-server": {
"command": "python",
"args": ["D:\\FlightTicketMCPServer\\flight_ticket_server.py"],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
HTTPモード
{
"mcpServers": {
"flight-ticket-server": {
"command": "python",
"args": ["D:\\FlightTicketMCPServer\\flight_ticket_server.py"],
"env": {
"MCP_TRANSPORT": "streamable-http",
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8000",
"MCP_PATH": "/mcp"
}
}
}
}
サンプル操作
設定が完了したら、Claudeに以下の操作を要求することができます。
フライトのリアルタイム動態照会
- "CA3401便の2024年6月12日のリアルタイム動態を照会してください"
- "MU5678便の今日の詳細情報を照会してください"
- "CZ1234便の明日の出発時間とターミナル情報を確認してください"
フライトルート照会
- "重慶から広州への明日のフライトを照会してください"
- "上海から北京への明後日のすべてのフライトを検索してください"
- "深圳から成都への2024年7月20日のフライト価格を確認してください"
- "北京から三亜へのフライトにはどのような選択肢がありますか"
📚 ドキュメント
APIリファレンス
フライトのリアルタイム動態照会
searchFlightsByNumber(fnum, date)
入力パラメータ:
fnum: フライト番号 (例: CA3401)
date: フライトの出発日 (YYYY-MM-DD形式)
出力情報:
- フライト番号とコードシェアフライト番号
- 運航する航空会社
- 出発と到着の空港およびターミナル
- 出発と到着時間
- 運航する機種と飛行時間
- 飛行距離と定時率
- 搭乗手続きカウンターと搭乗口
- 食事と手荷物預け情報
- 天気予報
- 連絡先電話番号
フライトルート照会
searchFlightRoutes(departure_city, destination_city, departure_date)
入力パラメータ:
departure_city: 出発都市名または空港コード (例: "重慶", "CKG", "重慶(CKG)")
destination_city: 目的地都市名または空港コード (例: "広州", "CAN", "広州(CAN)")
departure_date: 出発日 (YYYY-MM-DD形式)
出力情報:
- フライトリスト(フライト番号、航空会社、出発到着時間、空港、ターミナル、価格を含む)
- 価格統計(最低価格、最高価格、平均価格)
- 航空会社分布統計
- 整形された照会結果出力
- サポートされる都市:282の国内都市と空港
サポートされる都市形式:
- 都市名:上海、北京、重慶、広州など
- 空港コード:SHA、BJS、CKG、CANなど
- 完全な形式:上海(SHA)、北京(BJS)など
開発
プロジェクト構造
FlightTicketMCPServer/
├── flight_ticket_server/
│ ├── core/ # コア業務ロジック
│ ├── tools/ # MCPツールの実装
│ ├── utils/ # ユーティリティ関数
│ └── main.py # サーバのエントリポイント
├── office_flight_ticket_server/ # 追加モジュール
├── tests/ # テストファイル
├── logs/ # ログファイルのディレクトリ
├── pyproject.toml # プロジェクト設定
├── requirements.txt # プロジェクトの依存関係
├── flight_ticket_server.py # メイン起動ファイル
├── mcp-config.json # MCP設定のサンプル
└── README.md # プロジェクトドキュメント
テスト
python -m pytest tests/ -v
python -m pytest tests/test_basic.py -v
python -m pytest tests/test_basic.py::TestFlightSearch::test_searchFlightsByNumber -v
ログとデバッグ
- ログファイルの位置:
logs/ ディレクトリ
- デバッグモードを有効にする:
MCP_DEBUG=true を設定します。
- リアルタイムログを確認する:
tail -f logs/flight_server.log
トラブルシューティング
一般的な問題
ポートが使用中の場合
set MCP_PORT=8001
python flight_ticket_server.py
インポートエラーの場合
cd FlightTicketMCPServer/flight_ticket_server
python flight_ticket_server.py
権限問題の場合
ls -la flight_ticket_server.py
chmod +x flight_ticket_server.py
ログ分析
ログファイルを確認して、詳細なエラー情報を取得します。
cat logs/flight_server.log
cat logs/flight_server_error.log
tail -f logs/flight_server.log
📄 ライセンス
MITライセンス - 詳細情報は LICENSE ファイルを参照してください。
貢献
このプロジェクトを改善するために、IssueとPull Requestの提出を歓迎します。
サポート
問題が発生した場合や機能提案がある場合は、GitHubでIssueを作成してください。