AENA Flights MCP について
AENA Flights MCPは、スペインにあるAENA運営の50空港のリアルタイム運航情報を、到着・出発や個別便を調べる旅行者やエージェントに提供します。AENAの公開APIとOAuth2 REST APIを、共通のツール群にまとめています。
主な機能
- 01空港の到着便・出発便検索
- 02個別便の照会
- 03AENA空港とコードの一覧
- 04便・日付・現地時刻での絞り込み
- 052種類のAPIデータの形式統一
活用シーン
- 01時間帯を指定した空港出発便の確認
- 02指定日の特定都市からの到着便検索
- 03便の状況と搭乗ゲートの確認
- 04地域内のAENA空港の閲覧
MCP 対応
MCPサーバーは、MCPクライアントにフライト検索、個別便照会、空港一覧のツールを提供します。AENAの公開ウェブAPIまたはOAuth2 REST APIを使い、データソースの自動選択や指定ができます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y mcp-aenaAENA_CLIENT_SECRETシークレットOAuth2 client secret for the REST API. Omit for website-only mode (still fully functional for discovery).AENA_CLIENT_IDOAuth2 client id. Has a working default.AENA_TENANT_IDAzure AD tenant id. Has a working default.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| date | string | いいえ | この現地日付の便のみ(YYYY-MM-DD)。fromLocal/toLocal が設定されている場合、デフォルトは今日です。 |
| source | enum | いいえ | auto | website | rest |
| airport | string | はい | 空港の IATA コード。例:MAD、BCN、SCQ |
| toLocal | string | いいえ | この現地時刻(HH:MM)以前に出発予定のフライトのみ。例:午後なら 20:00 |
| direction | enum | はい | arrivals | departures |
| fromLocal | string | いいえ | この現地時刻(HH:MM)以降に出発予定のフライトのみ。例:午後なら 12:00 |
| hoursBack | number | いいえ | REST の対象期間:過去にさかのぼる時間数 |
| flightNumber | string | いいえ | クライアント側で絞り込みます。例:IB0459、UX7235 |
| hoursForward | number | いいえ | REST の対象期間:今後の時間数 |
| collapseCodeshares | boolean | いいえ | 同一フライトのコードシェア便を 1 件にまとめます(デフォルトは true) |
詳細
✈️ AENA Flights MCP
Español: README.es.md
AENAが運営するスペインの50空港のリアルタイムフライトデータを、MCP サーバーとして提供します。Claudeに「今日の午後、サンティアゴ発の便は?」や「IB0459は遅れていますか?」と尋ねると、時刻、ゲート、ターミナル、機材、運航状況、コードシェアなど、実際の空港データをもとに回答します。
AENAの2種類のフライトAPIを、使いやすい一連のツールで利用できるようにします。エージェントがフライトを照会すると、どちらのAPIが回答した場合でも同じ形式のフライト情報が返されます。
🚀 インストール不要で30秒で使えます
サーバーは https://aena-mcp.carlos-ls.workers.dev/mcp で公開されています。ワンクリックでClaudeに追加できます。
リンクを開くと、コネクターの情報が入力された状態でclaude.aiが表示されます。あとは確認するだけです。Freeを含むすべてのプランで利用でき、追加後はスマートフォンを含むClaudeアプリでも使えます。アカウントやAPIキーは不要で、設定も必要ありません。
手動で追加する場合は、Claude → Settings → Connectors → Add custom connectorを開き、名前に AENA Flights と入力して、上記のURLを貼り付けます。
🤖 ChatGPTでも利用できます
ChatGPTにはワンクリックで追加するリンクはありませんが、同じサーバーを利用できます(Plus、Pro、Businessプランのみ。ウェブ版のみ)。
- Settings → Apps → Advanced settingsを開き、Developer modeを有効にします
- Appsパネルで**+**を押し、URL
https://aena-mcp.carlos-ls.workers.dev/mcpを指定してサーバーを追加します。認証は不要です
💬 質問の例
- 🛫 「16:00から18:00までのMAD発の便」
- 🛬 「明日の午後、ロンドンからBCNに到着する便は?」
- 🔍 「現在、UX7235便はどこにいますか?ゲートはどこですか?」
- 🏝️ 「カナリア諸島にあるAENAの空港をすべて一覧表示して」
🖥️ ほかの実行方法
| 方法 | 対象 | セットアップ |
|---|---|---|
| ☁️ リモートコネクター(上記) | iPhoneを含むすべてのユーザー | ワンクリック |
| 📦 デスクトップ拡張機能 | Claude Desktop | 最新リリースからaena-mcp.mcpbをダウンロードし、ダブルクリック |
| 🟩 npm | Claude Code、Cursor、あらゆるMCPクライアント | npx mcp-aena |
| 🔧 ソースから実行 | 開発者 | 以下を参照 |
npmベースのクライアント向け設定:
{
"mcpServers": {
"aena": {
"command": "npx",
"args": ["-y", "mcp-aena"]
}
}
}
Claude Codeでは、コマンドを1つ実行するだけです。
claude mcp add aena -- npx -y mcp-aena
🧰 ツール
search_flights— 空港の到着便または出発便を検索します。便名、日付、または現地時刻の範囲(午後の場合はfromLocal 12:00、toLocal 20:00)で絞り込めます。同じ実便のコードシェア便は1件にまとめられ、出力される時刻はすべてマドリードの現地時刻です。get_flight— 空港の便名を指定して、1便の情報を取得します。list_airports— IATA/ICAOコードを含むAENAの全空港を、リアルタイムで取得します。
🔀 APIが2種類ある理由
AENAはフライト情報を取得する方法を2種類公開しており、それぞれがもう一方の不足を補います。
- 🌐 ウェブサイトAPIは公開されており、認証情報は不要です。およそ14日先までの情報を取得できますが、過去のデータはありません。フライトの検索に適しています。
- 🔐 REST APIはOAuth2を使用し、クライアントシークレットが必要です。過去約54時間から24時間先までの情報を取得でき、コードシェア便の実際の運航便もわかります。運航状況の追跡に適しています。
サーバーが適切なAPIを自動で選択します(source: "auto")。また、どちらかを指定することもできます。シークレットがなくてもウェブサイトAPIのみのモードで動作するため、引き続き利用できます。公開リモートサーバーでは、REST APIを利用するための設定がすでに完了しています。
🛠️ ソースから
pnpm install
pnpm build # tsc → dist/
pnpm test # unit tests over captured fixtures, no network, no credentials
pnpm inspect # drive a live stdio session with the MCP inspector
.env.example を .env にコピーします。ウェブサイト API には何も必要ありません。REST API では AENA_CLIENT_SECRET を設定します。AENA_CLIENT_ID と AENA_TENANT_ID には動作するデフォルト値がすでに設定されています。
公開リモートサーバーは worker/ にあります(Cloudflare Workers、Streamable HTTP、認証なし)。独自にホストするには、次の手順に従います。
cd worker
pnpm install
npx wrangler deploy
npx wrangler secret put AENA_CLIENT_SECRET # optional, enables the REST source
解析処理は純粋なノーマライザー(normalizeWebsiteRow、normalizeRestRow)に実装されているため、実際の API 呼び出しなしでマッピングをテストできます。CONTRIBUTING.md を参照してください。
CI では Node 20 と 22 でテストを実行し、MCP Inspector によるスモークテストも実施します。タグ付きのプッシュ(v*)を行うと、npm と MCP Registry に公開され(OIDC の信頼済み公開を使用)、GitHub リリースに .mcpb バンドルが添付されます。
📝 データに関する注意事項
- REST API では到着便は
"A"ですが、ウェブサイト API では"L"です。サーバー側でこの違いを吸収します。 - REST の
airlineIATAフィールドには、実際には ICAO コードが格納されています。サーバーは両方に対応します。 - 便名はデータソースによって異なります。REST API では ICAO コード(
VLG1674)、ウェブサイトでは IATA コード(VY1674)で便が識別されます。 - どちらの API もサーバー側で便名による絞り込みを行わないため、空港全体のデータを取得してからローカルで絞り込みます。
- どちらの API からも実際の離陸時刻や着陸時刻は取得できず、予定時刻と推定時刻のみ取得できます。車輪が地面を離れた時刻と接地した時刻を知るには、FlightRadar24 のような情報源が必要です。
📄 ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。