flightdata について
flightdataは、Google Flightsを検索するローカルブリッジです。旅行計画ツールやエージェント向けに、HasDataから行程情報を取得し、条件で絞り込めます。運賃は保存しません。
主な機能
- 01片道・往復・複数都市の検索
- 02価格・経由地・航空会社・時刻の絞り込み
- 03区間・運賃・排出量の取得
- 04CLIとstdio MCPサーバー
活用シーン
- 01価格や所要時間で航空便を比較
- 02経由地・航空会社・排出量で絞り込み
- 03後続検索用の行程トークンを取得
MCP 対応
MCPクライアントに読み取り専用の航空便検索ツールを公開し、呼び出しをホスト型HasData Google Flights MCPサーバーに転送します。予約や決済のツールはありません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| gl | string | いいえ | 検索対象を限定する国の 2 文字の国コードです。ドキュメントに記載された値を正確に 1 つ指定してください(245 種類に対応)。例:`ac`、`af`。 |
| hl | string | いいえ | 検索に使用する言語の 2 文字コードです。ドキュメントに記載された値(159 種類)のいずれかを正確に指定してください。例:`af`、`ak`。 |
| bags | number | いいえ | 乗客 1 人あたりの機内持ち込み手荷物の数。 |
| type | enum | いいえ | フライトの種類を指定します。選択肢: - `roundTrip`(デフォルト) - `oneWay` - `multiCity`(フライトの詳細には `multiCityJson` が必要です) 往復便の場合は、別のリクエストで `departureToken` を使用して復路便の詳細を取得します。roundTrip | oneWay | multiCity |
| stops | enum | いいえ | フライト旅程の乗り継ぎ回数を制限します。nonStop | oneStopOrFewer | twoStopsOrFewer |
| adults | number | いいえ | 大人の乗客数(指定する場合は >= 1)。 |
| sortBy | enum | いいえ | 価格、出発時刻、到着時刻などに基づいてフライト結果を並べ替えます。topFlights | price | departureTime | arrivalTime | duration | emissions |
| children | number | いいえ | 子どもの乗客数。 |
| currency | string | いいえ | 返される価格の通貨を指定します。ドキュメントに記載された値を正確に 1 つ指定してください(71 個から選択)。例:`ALL`、`DZD`。 |
| maxPrice | number | いいえ | フライト検索の最高価格制限。選択した通貨で指定します。 |
| arrivalId | string | はい | 到着空港コード(IATA)または場所の kgmid を指定します。 - **IATA Code**:3 文字の大文字コードです(例:`SFO`、`LHR`)。[IATA](https://www.iata.org/en/publications/directories/code-search) で検索してください。 - **Location kgmid**:`/m/` で始まる文字列です。Wikidata の「Freebase ID」にあります(例:ニューヨーク州ニューヨーク市は `/m/02_286`)。 複数の値はカンマで区切ることができます(例:`JFK,LGA,/m/0hptm`)。 |
| deepSearch | boolean | いいえ | 詳細検索を有効にします。ブラウザー版 Google Flights と同じ結果を返しますが、応答に時間がかかります。デフォルトは `false` です。 |
| returnDate | string | いいえ | 復路の日付を 'yyyy-MM-dd' 形式で指定します。**type** が `roundTrip` の場合は必須です。 |
| showHidden | boolean | いいえ | 結果に非表示のオプションを含めるかどうかを指定します。 |
| departureId | string | はい | 出発空港コード(IATA)または場所の kgmid を指定します。 - **IATA Code**:3 文字の大文字コードです(例:サンフランシスコの SFO、ロンドン・ヒースロー空港の LHR)。[IATA](https://www.iata.org/en/publications/directories/code-search) で検索してください。 - **Location kgmid**:`/m/` で始まる文字列です。Wikidata の「Freebase ID」にあります(例:ニューヨーク州ニューヨーク市は `/m/02_286`)。 複数の値はカンマで区切ることができます(例:`JFK,LGA,/m/0hptm`)。 |
| maxDuration | number | いいえ | フライトの合計所要時間の上限(分)。 |
| returnTimes | string | いいえ | 復路便を絞り込むため、最大 4 つの時間境界(出発用 2 つ、到着用 2 つ)を設定します。各数値は時間の開始を表します。 例: - `6,20` → 出発時刻:午前 6:00~午後 9:00 - `1,15` → 出発時刻:午前 1:00~午後 4:00 - `7,18,2,21` → 出発時刻:午前 7:00~午後 9:00、到着時刻:午前 2:00~午後 10:00 |
| travelClass | enum | いいえ | フライトの座席クラス(エコノミー、プレミアムエコノミー、ビジネス、ファースト)。economy | premiumEconomy | business | first |
| bookingToken | string | いいえ | 選択したフライトの予約オプションをリクエストするために使用します。このトークンはフライト結果に含まれ、`departureToken` とは併用できません。 |
| infantsOnLap | number | いいえ | 大人の膝の上に座る幼児の人数。 |
| outboundDate | string | はい | 出発日を 'yyyy-MM-dd' 形式で指定します。 |
| infantsInSeat | number | いいえ | 座席を使用する幼児の人数。 |
| lessEmissions | boolean | いいえ | 二酸化炭素排出量の少ないフライトを優先します。 |
| multiCityJson | string | いいえ | このパラメーターでは、複数都市の旅行のフライト詳細を指定します。複数のフライトオブジェクトを含む JSON 文字列です。各オブジェクトには次のフィールドが必要です。 - **departureId** – 出発空港コードまたは場所の KGMID。メインの `departureId` パラメーターと同じ形式を使用します。 - **arrivalId** – 到着空港コードまたは場所の KGMID。メインの `arrivalId` パラメーターと同じ形式を使用します。 - **date** – フライトの日付。`outboundDate` パラメーターと同じ形式を使用します。 - **times**(任意)– フライトの時間範囲。`outboundTimes` パラメーターと同じ形式を使用します。 |
| outboundTimes | string | いいえ | フライトを絞り込むため、最大 4 つの時間境界(出発用 2 つ、到着用 2 つ)を設定します。各数値は時間の開始を表します。 例: - `6,20` → 出発時刻:午前 6:00~午後 9:00 - `1,15` → 出発時刻:午前 1:00~午後 4:00 - `7,18,2,21` → 出発時刻:午前 7:00~午後 9:00、到着時刻:午前 2:00~午後 10:00 |
| departureToken | string | いいえ | フライトを選択し、往復旅行の復路便または複数都市旅行の次の区間を取得するために使用します。 |
| excludeAirlines | string | いいえ | 結果から除外する航空会社コードをカンマ区切りで指定します。[IATA](https://www.iata.org/en/publications/directories/code-search) で航空会社コードを検索できます。たとえば、`UA` は United Airlines です。 |
| includeAirlines | string | いいえ | 結果に含める航空会社コードをカンマ区切りで指定します。[IATA](https://www.iata.org/en/publications/directories/code-search) で航空会社コードを検索できます。たとえば、`UA` は United Airlines です。 `excludeAirlines` と `includeAirlines` パラメーターは同時に使用できません。 |
| layoverDuration | string | いいえ | フライトを絞り込むため、乗り継ぎ時間の範囲を分単位で設定します。たとえば、`120, 360` は乗り継ぎ時間が 2~6 時間のフライトを絞り込み、`45, 180` は 45 分~3 時間の乗り継ぎを許可します。 |
| excludeConnections | string | いいえ | 乗り継ぎ空港から除外する特定の空港をカンマ区切りで指定します。 |
| includeConnections | string | いいえ | 乗り継ぎ空港として許可する特定の空港をカンマ区切りで指定します。 |
詳細
flightdata
flightdata は、ホスト型の HasData Google Flights MCP サーバーへの小規模なローカルブリッジです。このサーバーは Google Flights の検索結果を JSON として返します。出発地、目的地、往路の日付を指定すると、条件に合う旅程を取得します。各オプションの料金、合計所要時間と乗り継ぎ回数、航空会社、便名、機材、空港、時刻を含む各フライト区間、CO2 排出量のほか、選択した旅程について後から問い合わせるために上流サーバーが発行する予約トークンと出発トークンも取得します。
検索対象は片道、往復、複数都市の旅行です。乗客の構成(大人、子ども、座席を使用する幼児、膝上の幼児)、旅行クラス、機内持ち込み手荷物、上限料金、並べ替え順(料金、所要時間、排出量、出発時刻、到着時刻)、乗り継ぎ回数の上限、航空会社や乗り継ぎ地点の指定・除外、出発と帰路の時間帯、乗り継ぎ時間の範囲、合計所要時間の上限、排出量の優先設定、詳細検索モードで条件を指定できます。
このブリッジは独自の運賃データを保存しません。上流サーバーのツール一覧を、稼働中のエンドポイントから取得した内容そのままローカルで提供し、各ツール呼び出しを上流に転送して、結果を変更せずに返します。取得した機能は読み取り専用の運賃検索のみです。予約、座席確保、発券、支払いのツールはありません。
ツール
hasdata_google_travel_flights_getGoogleFlights— Google Flights を検索します。必須項目:departureId(IATA コードまたは場所の kgmid。カンマ区切りで 複数指定できます)、arrivalId(同じ形式)、outboundDate(yyyy-MM-dd)。任意項目:returnDate、type(roundTrip/oneWay/multiCity)、multiCityJson、gl、hl、currency、travelClass(economy/premiumEconomy/business/first)、showHidden、adults、children、infantsInSeat、infantsOnLap、sortBy(topFlights/price/departureTime/arrivalTime/duration/emissions)、stops(nonStop/oneStopOrFewer/twoStopsOrFewer)、excludeAirlines、includeAirlines、bags、maxPrice、outboundTimes、returnTimes、lessEmissions、layoverDuration、includeConnections、excludeConnections、maxDuration、deepSearch、departureToken、bookingToken。旅程ごとの料金、 所要時間、乗り継ぎ回数とフライト区間、 排出量、予約トークンと出発トークンを返します。
設定
HASDATA_GOOGLE_FLIGHTS_MCP_URL(任意)— 上流エンドポイントを上書きします。既定値はhttps://mcp.hasdata.com/mcp?apis=google_travel_flightsです。 (この上書き用フックは、この再構築で独自に追加したものとして明示しています。)HASDATA_API_KEY(任意)— 設定すると、すべての 上流リクエストに呼び出し元自身の HasData API キーを指定するx-api-key: <key>ヘッダーを付加します。未設定の場合、 キーのヘッダーは送信されません。(ヘッダー名と環境変数名は元の レジストリレコードで特定されています。この環境変数からキーを 転送する動作は、再構築で独自に追加したものとして明示しています。 元の機能はキーなしで取得されました。)
転送の仕組み
最初のツール呼び出し時に、クライアントは上流とのストリーミング可能な
HTTP セッションを開きます。まず JSON-RPC の
initialize リクエスト(protocolVersion 2025-03-26、
clientInfo name flightdata)を送り、次に
notifications/initialized 通知を送り、その後、呼び出し元の引数を
変更せずに格納した tools/call リクエストを送ります。上流が
initialize に Mcp-Session-Id ヘッダーを付けて応答した場合、
その値はセッションの後続のすべてのリクエストに付加され、
プロセスの終了まで同じセッションが再利用されます。応答は
通常の JSON またはサーバー送信イベントで届く場合があり、どちらも読み取ります。
上流からの正常な結果は、上流が設定した isError フラグも含め、
そのまま返されます。失敗(JSON-RPC エラー、2xx 以外のステータス、
読み取り不能な応答、または完了できないリクエスト)は、
テキストが flightdata error: で始まる isError 結果として返されます
(このエラーの表示方法は、この再構築で独自に追加したものとして明示しています)。
CLI
このツールは、1つの JSON 引数文字列を受け取るサブコマンドでもあります。
npx @reneturcios/flightdata hasdata_google_travel_flights_getGoogleFlights '{"departureId":"SFO","arrivalId":"LHR","outboundDate":"2026-12-01","type":"oneWay","travelClass":"economy","stops":"nonStop"}'
npx @reneturcios/flightdata --version
終了コード:成功時は 0、結果が isError の場合は 1、使用方法に誤りがある場合は 2 です。
MCP サーバー
npx -y @reneturcios/flightdata mcp
MCP クライアントの設定:
{
"mcpServers": {
"flightdata": {
"command": "npx",
"args": ["-y", "@reneturcios/flightdata", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/flightdata
docker run --rm ghcr.io/cloudcorprecords/flightdata --version
コンテナのデフォルトコマンドは mcp なので、最初の形式は stdio MCP サーバーとして動作し、それ以外の引数は通常どおり CLI に渡されます。
開発
npm install
npm run build
npm test
npm run dev
テストスイートは、スタブ化された JSON-RPC アップストリームのみを使用して実行され、実際のネットワーク呼び出しは行いません。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。