Find Flights MCP Server について
Find Flights MCP Server は、Duffel API を使って航空便を検索し、情報を取得する MCP サーバーです。片道、往復、複数都市の行程を扱うため、複雑な旅行計画を立てる利用者に向いています。検索のみを行い、予約や課金は行いません。
主な機能
- 01片道・往復・複数都市の航空便検索
- 02複数日程をまとめて検索する機能(処理は遅め)
- 03座席クラス、乗客数、出発・到着時間の指定
- 04ID による航空便オファーの詳細取得
- 05乗り継ぎ便の自動処理
活用シーン
- 01同一路線の複数日程の運賃比較
- 02複数都市を含む旅程の計画
- 03チャット内での過去の検索結果の参照
MCP 対応
本プロジェクトは MCP サーバーであり、search_flights、get_offer_details、search_multi_city などのツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Find Flights MCP サーバー
Duffel API を使用してフライト情報を検索・取得する MCP サーバーです。
仕組み
動画デモ
https://github.com/user-attachments/assets/c111aa4c-9559-4d74-a2f6-60e322c273d4
便利な理由
Google Flights のようなツールはシンプルな旅行には便利ですが、複雑な旅行プランを扱う際にはこのツールが活躍します。その理由は次のとおりです。
- コンテキストの記憶:Claude はチャット内でこれまでに検索したフライトをすべて記憶するため、料金を比較するために複数のタブを開いておく必要がありません。
- 柔軟な日付検索:各日付を手動で確認することなく、複数の日程を簡単に検索して最適な料金を見つけられます。
- 複雑な旅程:複数都市への旅行、乗り継ぎ便、異なる経路の選択肢の比較に最適です。希望を伝えるだけで検索できます!
- 自然な会話:探しているものを説明するだけです。カレンダーの画面をクリックしたり、検索条件を調整したり、市名、日付、時刻を解析したりする必要はもうありません。
チャット内の旅行代理店のように、話し合った内容をすべて記憶し、日付や経路をまたいで即座に検索できます。
機能
- 複数の目的地間のフライトを検索
- 片道、往復、複数都市へのフライト検索に対応
- フライトのオファーに関する詳細情報
- 柔軟な検索条件(出発時刻、客室クラス、乗客数)
- フライトの乗り継ぎを自動処理
- 複数の日程から旅行に最適なフライトを検索(時間がかかります)
前提条件
- Python 3.x
- Duffel API のライブキー
Duffel API キーの取得
Duffel ではアカウントの確認と支払い情報の設定が必要ですが、この MCP サーバーはフライトの検索にのみ API を使用します。実際の予約や請求は行われません。
まず duffel_test を使って、このツールの機能を試してみてください。気に入った場合は、以下の確認手続きを行ってライブキーを使用できます。
まずはテストモードで(推奨)
完全な確認手続きを行う前に、テスト API キー(duffel_test)を使い、シミュレーションデータで機能を試すことができます。
- Duffel の登録ページにアクセスします。
- アカウントを作成します(会社名には「個人利用」を選択できます)。
- More > Developer に移動すると、テスト API キーを確認できます(キーはすでに用意されています)。
ライブ API キーの取得
実際のフライトデータにアクセスするには、次の手順に従います。
- Duffel ダッシュボードの左上で「Test Mode」をオフに切り替えます。
- 確認手続きには複数の手順が必要です。テストモードを繰り返しオフに切り替える必要があります。
- 最初の切り替え:メールアドレスを確認します。
- 再度切り替え:会社情報を入力します(「個人利用」で問題ありません)。
- 再度切り替え:支払い情報を追加します(Duffel では必要ですが、この MCP サーバーから請求が行われることはありません)。
- 再度切り替え:残りの確認手続きを完了します。
- 最後の切り替え:「Agree and Submit」をクリックした後、ライブモードにアクセスします。
- 確認がすべて完了したら、More > Developer > Create Live Token に移動します。
- ライブ API キーをコピーします。
💡 TIP:確認手続きを完了するたびに、次の手順に進むにはテストモードをもう一度オフに切り替える必要があります。すべての要件を満たすまで切り替えを続けてください。
⚠️ IMPORTANT NOTES:
- 支払い情報は Duffel が直接取り扱い、MCP サーバーがアクセスしたり保存したりすることはありません。
- この MCP サーバーは読み取り専用です。フライトの検索のみ可能で、予約はできません。
- この連携を通じて、支払い方法に請求が行われることはありません。
- API キーを含むすべての機密情報は、お使いのマシン内に保存されます。
- 機能を試すには、テスト API キー(
duffel_test)から始められます。 - 確認手続きには時間がかかる場合があります。これは Duffel の標準要件です。
セキュリティに関する注意
この MCP サーバーは Duffel の検索エンドポイントのみを使用し、予約や決済は行えません。お支払い情報は Duffel の認証手続きのみに使用され、MCP サーバーがアクセスしたり、共有したりすることはありません。
API 使用制限に関する注意
- Duffel の現在の料金と使用制限を確認してください
- 要件に応じて、さまざまなプランを利用できます
- 最新の料金は公式ウェブサイトで確認することをおすすめします
インストール
Smithery 経由でのインストール
Smithery 経由で Claude Desktop に Find Flights を自動インストールするには:
npx -y @smithery/cli install @ravinahp/travel-mcp --client claude
手動インストール
リポジトリをクローンします:
git clone https://github.com/ravinahp/flights-mcp
cd flights-mcp
uv を使用して依存関係をインストールします:
uv sync
注:このプロジェクトでは依存関係の管理に pyproject.toml を使用しているため、pip ではなく uv を使用します。
MCP サーバーとして設定
このツールを MCP サーバーとして追加するには、Claude desktop の設定ファイルを編集します。
設定ファイルの場所:
- MacOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
JSON ファイルに以下の設定を追加します:
{
"flights-mcp": {
"command": "uv",
"args": [
"--directory",
"/Users/YOUR_USERNAME/Code/flights-mcp",
"run",
"flights-mcp"
],
"env": {
"DUFFEL_API_KEY_LIVE": "your_duffel_live_api_key_here"
}
}
}
⚠️ 重要:
YOUR_USERNAMEを実際のシステムユーザー名に置き換えてくださいyour_duffel_live_api_key_hereを実際の Duffel Live API キーに置き換えてください- ディレクトリのパスがローカルへのインストール先と一致していることを確認してください
デプロイ
ビルド
パッケージを準備します:
# Sync dependencies and update lockfile
uv sync
# Build package
uv build
これにより、dist/ ディレクトリに配布用ファイルが作成されます。
デバッグ
最適なデバッグ体験のために、MCP Inspector を使用してください:
npx @modelcontextprotocol/inspector uv --directory /path/to/find-flights-mcp run flights-mcp
Inspector では以下を利用できます:
- リアルタイムのリクエスト/レスポンス監視
- 入力/出力の検証
- エラー追跡
- パフォーマンス指標
利用可能なツール
1. フライトを検索
@mcp.tool()
async def search_flights(params: FlightSearch) -> str:
"""Search for flights based on parameters."""
以下の3種類のフライトに対応しています:
- 片道フライト
- 往復フライト
- 複数都市間のフライト
パラメーターには以下が含まれます:
type:フライトの種類('one_way'、'round_trip'、'multi_city')origin:出発空港コードdestination:到着空港コードdeparture_date:出発日(YYYY-MM-DD)- 任意のパラメーター:
return_date:往復フライトの帰着日adults:大人の乗客数cabin_class:希望する客室クラスdeparture_time:指定する出発時間帯arrival_time:指定する到着時間帯max_connections:乗り継ぎの最大回数
2. オファーの詳細を取得
@mcp.tool()
async def get_offer_details(params: OfferDetails) -> str:
"""Get detailed information about a specific flight offer."""
一意の ID を使用して、特定のフライトオファーの詳細を取得します。
3. 複数都市間のフライトを検索
@mcp.tool(name="search_multi_city")
async def search_multi_city(params: MultiCityRequest) -> str:
"""Search for multi-city flights."""
複雑な複数都市間のフライト旅程に特化したツールです。
パラメーターには以下が含まれます:
segments:フライト区間のリストadults:大人の乗客数cabin_class:希望する客室クラスmax_connections:乗り継ぎの最大回数
使用例
使用例(ぜひ実際に試してみてください!)
これらのツールを使用して、さまざまな条件でフライトを検索できます:
- 「1月7日にSFOからNYCへの片道フライトを、大人2名、ビジネスクラスで探してください」
- 「LAXからロンドンへの往復フライトを検索してください。出発日は1月8日、帰着日は1月15日です」
- 「1月7日にニューヨークからパリへ、1月10日にローマへ、1月15日にニューヨークへ戻る複数都市間の旅行を計画してください」
- 「1月7日から1月15日までのSFOからLAXへのフライトで、大人2名、エコノミークラスの場合、最安値はいくらですか?」
- 複数の日程でフライトを検索して、旅行に最適なフライトを見つけることもできます。現時点では、この方法で検索する場合、片道または往復フライトのみを検索することをおすすめします。例:「1月7日から1月10日までのSFOからLAXへのフライトで、大人2名、エコノミークラスの場合、最安値を探してください」
応答形式
ツールは以下を含む JSON 形式の応答を返します:
- フライトオファーの詳細
- 料金情報
- スライス(ルート)の詳細
- 航空会社情報
- 乗り継ぎの詳細
エラー処理
このサービスには、以下に対する堅牢なエラー処理が含まれています:
- API リクエストの失敗
- 無効な空港コード
- API キーの欠落または無効
- ネットワークのタイムアウト
- 無効な検索パラメーター
貢献
[該当する場合は、貢献ガイドラインを追加してください]
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE ファイルをご覧ください。
パフォーマンスに関する注意事項
- 片道/往復便の検索結果は50件に制限されています
- 複数都市の検索結果は10件に制限されています
- サプライヤーのタイムアウトは、検索タイプに応じて15~30秒に設定されています
客室クラス
利用可能な客室クラス:
economy:エコノミークラスpremium_economy:プレミアムエコノミークラスbusiness:ビジネスクラスfirst:ファーストクラス
客室クラスを指定したリクエストの例:
{
"params": {
"type": "one_way",
"adults": 1,
"origin": "SFO",
"destination": "LAX",
"departure_date": "2025-01-12",
"cabin_class": "business" // Specify desired cabin class
}
}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。