Aviationstack Mcp について
Aviationstack MCP は、AviationStack API をラップして実時間および将来の航空便データを取得する MCP サーバーです。航空データをアプリケーションに組み込みたい開発者を想定しており、便、空港、航空会社などの参照データ向けツールを備えます。
主な機能
- 01便名、航空会社、日付による便の検索
- 02空港の到着・出発スケジュールの取得
- 03約12か月先までの将来便スケジュールの取得
- 04機種、航空機、国、都市の詳細情報のランダム取得
- 05空港、航空会社、航路、税金データの一覧表示
活用シーン
- 01特定便の現在の状況確認
- 02空港の将来の出発・到着スケジュールの取得
- 03日付指定による過去の便データの取得
MCP 対応
本プロジェクトは MCP サーバーであり、AviationStack の航空データ検索をツールとプロンプトとして MCP クライアントに公開します。また、サーバーのメタデータやツール入力例をリソースとして提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Aviationstack MCP サーバー
このプロジェクトは、AviationStack API と連携するための一連のツールを提供する MCP(Model Context Protocol)サーバーです。リアルタイムおよび将来のフライトデータ、航空機や飛行機の詳細、空港・航空会社・路線・税金などの基本的な参照データを取得するエンドポイントを公開しており、航空データをアプリケーションに簡単に統合できます。
Aviationstack MCP サーバーは、アクセスしやすいよう、次のよく知られた MCP サーバーリポジトリにも掲載されています。
デモ
https://github.com/user-attachments/assets/9325fcce-8ecc-4b01-8923-4ccb2f6968f4
機能
- フライト番号から単一のフライトを検索
- 特定の航空会社のフライトを取得
- 日付を指定して過去のフライトを取得
- 空港の到着・出発スケジュールを取得
- 将来のフライトスケジュールを取得(明日から約12か月先まで)
- ランダムな航空機の機種を取得
- ランダムな飛行機の詳細情報を取得
- ランダムな国の詳細情報を取得
- ランダムな都市の詳細情報を取得
- 空港、航空会社、路線、税金を一覧表示
すべてのエンドポイントは MCP ツールとして実装されており、MCP 互換環境ですぐに使用できます。
すべてのツールは同じ JSON エンベロープを返します。成功時は {"ok": true, "count": N, "data": [...]} を返し、list_* ツールでは pagination ブロックが追加され、一致する結果がない場合は message が含まれます。失敗時は {"ok": false, "context": "...", "error": "..."} を返します。limit の上限は、1 回の呼び出しにつき100件です。
前提条件
- Aviationstack API キー(Aviationstackから無料の API キーを取得できます)
- Python 3.13 以降
- uv パッケージマネージャーがインストールされていること
利用可能なツール
| ツール | 説明 | パラメーター |
|---|---|---|
get_flight_status(flight_iata: str, flight_date: str = "") | IATA便名で、今日または指定日の便を1便検索します。 | - flight_iata:IATA便名(例:「AA100」)- flight_date:省略可能な日付。形式は YYYY-MM-DD です |
flights_with_airline(airline_name: str, number_of_flights: int, flight_status: str = "") | 特定の航空会社の運航中の便を取得します。 | - airline_name:航空会社名(例:「Delta Air Lines」)- number_of_flights:取得する便数- flight_status:省略可能なステータスフィルター:scheduled、active、landed、cancelled、incident、diverted |
historical_flights_by_date(flight_date: str, number_of_flights: int, airline_iata: str = "", dep_iata: str = "", arr_iata: str = "") | 指定日の過去の便を取得します(Basicプラン以上)。 | - flight_date:日付。形式は YYYY-MM-DD です- number_of_flights:取得する便数- airline_iata:省略可能な航空会社IATAフィルター- dep_iata:省略可能な出発空港IATAフィルター- arr_iata:省略可能な到着空港IATAフィルター |
flight_arrival_departure_schedule(airport_iata_code: str, schedule_type: str, airline_name: str, number_of_flights: int) | 指定した空港と航空会社の、今日の到着便または出発便の一覧を取得します。当日のみが対象です。 | - airport_iata_code:空港のIATAコード(例:「JFK」)- schedule_type:「arrival」または「departure」- airline_name:航空会社名- number_of_flights:取得する便数 |
future_flights_arrival_departure_schedule(airport_iata_code: str, schedule_type: str, airline_iata: str, date: str, number_of_flights: int) | 指定した空港、航空会社、将来の日付の運航予定便を取得します。明日から約12か月先までが対象で、今後7日間も含まれます。 | - airport_iata_code :空港のIATAコード- schedule_type:「arrival」または「departure」- airline_iata:航空会社のIATAコード(例:Deltaの「DL」)- date:日付。形式は YYYY-MM-DD で、明日から約12か月先までを指定できます- number_of_flights:取得する便数 |
random_aircraft_type(number_of_aircraft: int) | データセット内のランダムな位置から航空機の機種を取得します。 | - number_of_aircraft:取得する航空機の機種数 |
random_airplanes_detailed_info(number_of_airplanes: int) | データセット内のランダムな位置から航空機の詳細情報を取得します。 | - number_of_airplanes:取得する航空機の数 |
random_countries_detailed_info(number_of_countries: int) | データセット内のランダムな位置から国の詳細情報を取得します。 | - number_of_countries:取得する国の数 |
random_cities_detailed_info(number_of_cities: int) | データセット内のランダムな位置から都市の詳細情報を取得します。 | - number_of_cities:取得する都市の数 |
list_airports(limit: int = 10, offset: int = 0, search: str = "") | 空港の一覧を取得します。 | - limit:取得する結果の数- offset:ページネーションのオフセット- search:省略可能な検索クエリ |
list_airlines(limit: int = 10, offset: int = 0, search: str = "") | 航空会社の一覧を取得します。 | - limit:取得する結果の数- offset:ページネーションのオフセット- search:省略可能な検索クエリ |
list_routes(limit: int = 10, offset: int = 0, airline_iata: str = "", dep_iata: str = "", arr_iata: str = "") | 路線の一覧を取得します。 | - limit:取得する結果の数- offset:ページネーションのオフセット- airline_iata:省略可能な航空会社IATAフィルター- dep_iata:省略可能な出発空港IATAフィルター- arr_iata:省略可能な到着空港IATAフィルター |
list_taxes(limit: int = 10, offset: int = 0, search: str = "") | 航空税の一覧を取得します。 | - limit:取得する結果の数- offset:ページネーションのオフセット- search:省略可能な検索クエリ |
プロンプト
サーバーには、モデルを適切なツールへ導く再利用可能なプロンプトが用意されています。
| プロンプト | 引数 | 目的 |
|---|---|---|
plan_flight_status_lookup | flight_iata, flight_date | 特定の便を確認し、コードシェアについて説明します。 |
plan_airline_flight_lookup | airline_name, number_of_flights | 航空会社の運航中の便を検索します。 |
plan_future_schedule_lookup | airport_iata_code, date, schedule_type | 空港の将来のスケジュールを検索します。 |
plan_reference_data_lookup | data_type, search | 空港、航空会社、路線、または税金の参照データを調べます。 |
リソース
| リソース | URI | 内容 |
|---|---|---|
server_metadata | aviationstack://meta/server | API のベース URL と、受け付ける API キーの環境変数です。 |
aviationstack_endpoints | aviationstack://meta/endpoints | 各ツールが呼び出す Aviationstack のエンドポイントです。 |
tool_input_examples | aviationstack://examples/tool-input/{tool_name} | 指定したツールのサンプルペイロードです。 |
開発
- サーバーの主要なロジックは
src/aviationstack_mcp/server.pyにあります。 - すべての MCP ツールは、
@mcp.tool()でデコレートされた Python 関数として定義されています。 - 各ツールは、Pydantic モデルで入力を検証してから、対応する通常の関数を呼び出す薄いラッパーです。テストは通常の関数を対象とします。
- サーバーは
mcp.server.fastmcpのFastMCPクラスを使用します。mcpの依存関係は<2に固定されています。2.x ではFastMCPがMCPServerに改名されるためです。 - ツールが例外を送出することはありません。すべての失敗は捕捉され、エラーエンベロープとして返されます。
CI で実行されるチェックをセットアップして実行します。
uv sync --all-groups
# Unit tests
uv run python -m unittest discover -s tests -v
# Lint, must stay at 10.00/10
uv run pylint $(git ls-files '*.py')
# Coverage
uv run coverage run --source=aviationstack_mcp -m unittest discover -s tests
uv run coverage report
.well-known/mcp/server-card.json は手作業で編集するのではなく、生成されます。ツール、プロンプト、またはリソースを変更した後は再生成してください。そうしないと CI が失敗します。
uv run python scripts/generate_server_card.py # rewrite the card
uv run python scripts/generate_server_card.py --check # what CI runs
MCP サーバーの設定
お使いの MCP クライアントにこのサーバーを追加するには、以下を MCP クライアントの設定ファイルに追加します。
- リポジトリをクローンせずに
uvxを使用する(推奨)
{
"mcpServers": {
"Aviationstack MCP": {
"command": "uvx",
"args": [
"aviationstack-mcp"
],
"env": {
"AVIATION_STACK_API_KEY": "<your-api-key>"
}
}
}
}
- リポジトリをクローンしてサーバーをローカルで実行する
{
"mcpServers": {
"Aviationstack MCP": {
"command": "uv",
"args": [
"--directory",
"/path/to/aviationstack-mcp/src/aviationstack_mcp",
"run",
"-m",
"aviationstack_mcp",
"mcp",
"run"
],
"env": {
"AVIATION_STACK_API_KEY": "<your-api-key>"
}
}
}
}
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。