HasData Google Flights について
HasData Google Flights は、MCP クライアントから Google Flights を検索できるホスト型 MCP サーバーです。片道、往復、複数都市の旅程について、運賃、区間、CO2 排出量、価格履歴を JSON で返します。
主な機能
- 01片道・往復・複数都市の検索
- 02運賃とフライト区間の情報
- 03CO2 排出量の表示
- 04価格帯と価格履歴の提供
- 05クラス・経由地・価格による絞り込み
活用シーン
- 01路線と日付を指定してフライトを比較
- 02低運賃または低排出量の旅程を絞り込み
- 03運賃が通常の価格帯かを確認
- 04往復便の復路候補を取得
MCP 対応
ホスト型リモート MCP サーバーが、読み取り専用ツールを通じて Google Flights の検索結果を構造化データで返します。フライト比較用プロンプトと、パラメーターの選択肢を示すリソースも提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.hasdata.com/mcp?apis=google_travel_flightsclaude mcp add --transport http com-hasdata-google-flights https://mcp.hasdata.com/mcp?apis=google_travel_flights{"mcpServers":{"com-hasdata-google-flights":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=google_travel_flights"}}}Cursor で開く{"servers":{"com-hasdata-google-flights":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=google_travel_flights"}}}VS Code で開く{"mcpServers":{"com-hasdata-google-flights":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=google_travel_flights"}}}{"mcpServers":{"com-hasdata-google-flights":{"serverUrl":"https://mcp.hasdata.com/mcp?apis=google_travel_flights"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.hasdata.com/mcp?apis=google_travel_flights認証が必要ツール
2| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| pets | number | いいえ | ペットの数。 |
| neLat | number | いいえ | 地図のバウンディングボックスの北東角の緯度。4 つの境界ボックス座標をすべて指定すると、場所ではなくボックス内でリスティングを検索します。 |
| neLng | number | いいえ | 地図のバウンディングボックスの北東角の経度。 |
| swLat | number | いいえ | 地図のバウンディングボックスの南西角の緯度。 |
| swLng | number | いいえ | 地図のバウンディングボックスの南西角の経度。 |
| adults | number | いいえ | 大人の人数。 |
| checkIn | string | はい | リスティングのチェックイン日。 |
| infants | number | いいえ | 乳幼児の人数。 |
| checkOut | string | いいえ | リスティングのチェックアウト日。 |
| children | number | いいえ | 子どもの人数。 |
| location | string | いいえ | リスティングを検索する場所。完全な地図バウンディングボックス(neLat、neLng、swLat、swLng)を指定しない場合は必須です。 |
| nextPageToken | string | いいえ | 次のページの結果を取得するためのトークン。 |
詳細
Google Flights MCP Server
Claude、Cursor、Windsurf、その他あらゆる MCP クライアントに Google Flights ツールを提供する、ホスト型の Model Context Protocol(MCP)サーバーです。Google アカウントも、廃止された旅行 API への対応も不要で、片道、往復、複数都市の旅程を、運賃、フライト区間、二酸化炭素排出量、価格履歴とともに、構造化 JSON として検索できます。
毎月1,000クレジットを無料で利用でき、カード登録も不要です。フライト検索約66回分に相当します。
https://mcp.hasdata.com/mcp?apis=google_travel_flights
目次
必要なもの
MCP クライアントと、ダッシュボードで取得できる HasData API キーが必要です。カード登録なしで無料で作成でき、無料プランでは1回15クレジットで月約66回呼び出せます。これはリモートサーバーなので、最も簡単な方法は URL と x-api-key ヘッダーを使うことです。コンテナーを実行する必要はなく、処理のどこでも Google アカウントは不要です。stdio のみを使用するクライアントからは、以下に示す薄いランチャーを介して接続できます。このランチャーは npm では @hasdata/google-flights-mcp、PyPI では hasdata-google-flights-mcp として公開されています。
クイックスタート
サーバー URL はすべてのクライアントで同じです。Claude Code と Claude Desktop で実際に動作を確認しています。その他のブロックは、各クライアントのリモートサーバー向けドキュメントに記載された形式に従っています。
| 項目 | 値 |
|---|---|
| URL | https://mcp.hasdata.com/mcp?apis=google_travel_flights |
| トランスポート | HTTP、ストリーム可能 |
| 認証ヘッダー | x-api-key: HASDATA_API_KEY |
OAuth に対応しているクライアントでは、同じ URL をコネクターとして追加し、設定ファイルにキーを記述せずにサインインできます。
Claude Code
claude mcp add --transport http google-flights "https://mcp.hasdata.com/mcp?apis=google_travel_flights" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
「設定」、「コネクター」、「カスタムコネクターを追加」の順に選択し、https://mcp.hasdata.com/mcp?apis=google_travel_flights を貼り付けてサインインします。
設定ファイルを使う方法では、Claude Desktop が読み込むのはローカル(stdio)サーバーのみのため、stdio ランチャーを介してリモートサーバーに接続します。@hasdata/google-flights-mcp パッケージがそのランチャーで、キーは環境変数から読み取ります。claude_desktop_config.json に次の内容を追加してください。
{
"mcpServers": {
"google-flights": {
"command": "npx",
"args": ["-y", "@hasdata/google-flights-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Node の代わりに Python を使う場合は、ランチャーを PyPI パッケージに置き換えます。このパッケージは手動でインストールせずに uvx で実行できます。
{
"mcpServers": {
"google-flights": {
"command": "uvx",
"args": ["hasdata-google-flights-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Cursor
すべてのプロジェクトに適用する場合は ~/.cursor/mcp.json、1 つのプロジェクトに適用する場合は .cursor/mcp.json を使います。
{
"mcpServers": {
"google-flights": {
"url": "https://mcp.hasdata.com/mcp?apis=google_travel_flights",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json を使います。Windsurf ではフィールド名は url ではなく serverUrl です。
{
"mcpServers": {
"google-flights": {
"serverUrl": "https://mcp.hasdata.com/mcp?apis=google_travel_flights",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
VS Code
ワークスペース内の .vscode/mcp.json を使います。
{
"servers": {
"google-flights": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=google_travel_flights",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
プロンプトの例
コードではなく、プロンプトです。いずれかを貼り付けると、エージェントが自分でツールを選びます。成功した呼び出しは毎回 15 クレジットを消費するため、各例には必要な呼び出し回数を記載しています。
9 月 15 日の JFK 発ロンドン・ヒースロー行き片道便を、価格の安い順に調べて、最安の 3 便を航空会社と二酸化炭素排出量の推定値とともに教えてください。
1 回の呼び出しで 15 クレジットです。運賃、区間、排出量がまとめて返されます。
同じ路線で、ビジネスクラスの直行便のみを対象にして、排出量が最も少ない便を教えてください。
1 回の呼び出しで 15 クレジットです。客室クラスと経由地の条件は、1 回のリクエストで指定するフィルターです。
価格履歴を踏まえると、現在の JFK から LHR への 295 ドルは妥当な価格ですか?
1 回の呼び出しで 15 クレジットです。レスポンスには、一般的な価格帯と価格水準を示す priceInsights が含まれます。
JFK から LHR への往復便で、9 月 15 日に出発し、9 月 22 日に戻る最安の運賃を教えてください。
2 回の呼び出しで 30 クレジットです。Google はまず往路の候補を返し、選んだ候補をキーにして復路を 2 回目の呼び出しで取得します。
往復便は仕様上、2 回の呼び出しが必要です。最初の呼び出しでは departureToken を持つ往路の旅程が返され、そのトークンを渡すと対応する復路の便を取得できます。片道便の検索と価格の確認は、それぞれ 1 回の呼び出しで完了します。
ツール
| ツール | 返される内容 |
|---|---|
hasdata_google_travel_flights_getGoogleFlights | 旅程ごとの価格、通貨、所要時間、経由地、航空会社、便名、機材、出発・到着空港と時刻を含むフライト区間、CO2 排出量など……。1 回の呼び出しにつき 15 クレジット |
読み取り専用のツールが 1 つあります。以下のサンプルは実際の呼び出しから抜粋したもので、運賃は常に変動します。データの形式を示すものとしてご覧ください。ツール名にはエンドポイントリファレンスへのリンクがあり、すべてのパラメーターが記載されています。
サンプルはペイロードであり、レスポンス全体ではありません。tools/call の結果には 1 つのテキストブロックが含まれ、そのテキスト自体は url、status、text、json を持つ JSON で、スクレイピングされたデータは json の下にあります。生の JSON-RPC レスポンスの場合、データのパスは result.content[0].text で、これを解析してから .json を参照します。チャットクライアントはこのデータを展開しますが、エンドポイントに直接アクセスするコードでは自分で展開する必要があります。
Google Flights の検索結果を取得
hasdata_google_travel_flights_getGoogleFlights
指定したルートと日付の旅程情報です。運賃、各区間、排出量、価格履歴を含みます。
| パラメーター | 型 | 必須 | 備考 |
|---|---|---|---|
departureId | string | はい | JFK などの IATA コード、または /m/02_286 のような場所の kgmid。複数の空港はカンマで区切ります |
arrivalId | string | はい | departureId と同じ形式です |
outboundDate | string | はい | YYYY-MM-DD |
type | string | デフォルトは roundTrip です。oneWay、または multiCityJson を指定した multiCity も選択できます | |
returnDate | string | type が roundTrip の場合に必須です | |
travelClass | string | economy、premiumEconomy、business、first のいずれかです | |
stops | string | nonStop、oneStopOrFewer、twoStopsOrFewer のいずれかです | |
sortBy | string | デフォルトは topFlights です。ほかに price、duration、emissions、departureTime、arrivalTime を指定できます | |
adults / children / infantsInSeat / infantsOnLap | number | 乗客の内訳 | |
maxPrice / maxDuration / bags | number | 上限と機内持ち込み手荷物の個数 | |
includeAirlines / excludeAirlines | string | IATA 航空会社コードをカンマ区切りで指定します。どちらか一方のみ指定でき、両方は指定できません | |
departureToken | string | 出発便を選択し、帰りの便または次の区間を取得します | |
bookingToken | string | 選択した旅程の予約オプションを取得します | |
currency / gl / hl | string | 検索に使用する通貨、国、言語 | |
deepSearch | boolean | ブラウザーで Google に表示される内容に合わせますが、結果の返却は遅くなります |
リファレンスには、includeConnections、excludeConnections、layoverDuration、outboundTimes、returnTimes、showHidden、lessEmissions、multiCityJson についても記載されています。
検索結果は bestFlights と otherFlights に分かれています。各旅程には、price、type、分単位の totalDuration、各区間を含む flights 配列、carbonEmissions オブジェクト、bookingToken が含まれます。各区間には、departureAirport と arrivalAirport(それぞれ id、name、現地時間の time を含む)、duration、airline、flightNumber、airplane、legroom、travelClass、extensions 配列のほか、Google が該当する区間に付与する oftenDelayedByOver30Min が含まれます。直行便の旅程は区間が 1 つで、乗り継ぎ便の旅程は複数の区間で構成されます。
carbonEmissionsの単位はグラムであり、キログラムではありません。thisFlight: 433000は 433 kg です。differencePercentはtypicalForThisRouteと比較した値で、負の数は平均より環境負荷の低い便を示します。
{
"price": 295,
"type": "One way",
"totalDuration": 415,
"flights": [
{
"departureAirport": { "id": "JFK", "name": "John F. Kennedy International Airport", "time": "2026-09-15 8:15" },
"arrivalAirport": { "id": "LHR", "name": "Heathrow Airport", "time": "2026-09-15 20:10" },
"duration": 415,
"airline": "Virgin Atlantic",
"flightNumber": "VS 26",
"airplane": "Boeing 787",
"travelClass": "Economy"
}
],
"carbonEmissions": { "thisFlight": 367000, "typicalForThisRoute": 419000, "differencePercent": -12 },
"bookingToken": "W1t7..."
}
旅程と並んで priceInsights があり、lowestPrice、typicalPriceRange、typical などの priceLevel、および [timestamp, price] のデータポイントからなる priceHistory が含まれます。airports には、解決された出発空港と到着空港が都市名および国名とともに返されます。
プロンプトとリソース
サーバーには、クライアントがユーザーにツール呼び出しを組み立ててもらう代わりに提示できる、すぐに使えるワークフローとして、1 つのプロンプトが用意されています。
| プロンプト | 機能 |
|---|---|
google_flights | 2 つの空港間のフライト候補を比較します。 |
また、サーバーは 7 つのリソースを公開しており、それぞれ、受け付ける値が固定リストになっているパラメーターに対応しています。拒否された呼び出しから値の種類を学ぶよりも、リソースを読み取るほうが低コストで、クレジットも消費しません。各 URI は hasdata://google_travel_flights/<parameter> です。
| パラメーター | 値の数 | 選択する項目 |
|---|---|---|
type | 3 | フライトの種類を指定します。選択肢: - roundTrip(デフォルト) - oneWay - multiCity(フライトの詳細には multiCityJson が必要です)往復便の場合は、departureToken を使って別途リクエストし、復路便の詳細を取得します。 |
gl | 245 | 検索対象を限定する国の 2 文字の国コードです。 |
hl | 159 | 検索に使用する言語の 2 文字の言語コードです。 |
currency | 71 | 返される価格の通貨を定義するパラメーターです。 |
travelClass | 4 | フライトの座席クラスです(エコノミー、プレミアムエコノミー、ビジネス、またはファースト)。 |
sortBy | 6 | 価格、出発時刻、到着時刻などに基づいてフライト結果を並べ替えます。 |
stops | 3 | フライトの旅程に含まれる乗り継ぎの数を制限します。 |
どちらのリストも API キーなしで提供されるため、クライアントはユーザーが登録する前に読み取ることができます。
エラーと失敗時の動作
ツール呼び出しから HTTP エラーコードがクライアントに返されることはほとんどありません。MCP レイヤーは 200 を返し、失敗の内容を結果に含め、isError を true に設定して、理由をテキストで示します。ステータス行が表示されると思われる場面で、エージェントにはメッセージが返されます。
キーが間違っていても、接続エラーではなくツールの出力として通知されます。 tools/list は空でないキーなら何でも受け付け、ツールを返すため、クライアントはハンドシェイクを完了し、正常を示す緑色の表示になります。その後、最初のツール呼び出しで isError: true とテキスト HasData API error: 401 Unauthorized が返されます。フローのそれ以前の段階では問題が報告されないため、この文字列に注意してください。
キーがない場合に限り、実際の HTTP エラーが発生します。 認証はどのツールよりも先に実行され、接続自体が 401 で失敗します。CORS ヘッダーが含まれているため、ブラウザーのクライアントは、不透明なネットワークエラーではなくステータスを読み取れます。
ツールのスキーマに適合しない引数は、スクレイピングが実行される前に拒否されます。 サーバーは isError: true とテキスト MCP error -32602: Input validation error を返し、問題のあるフィールドを示します。returnDate を指定しない roundTrip や、includeAirlines と excludeAirlines を同時に指定した場合は、ここで検出されます。
指定日にその経路のフライトがない場合は、エラーではなく、旅程配列が空の正常な結果が返されます。 requestMetadata.status は引き続き ok です。順位付けする前に、フライトがあるか確認してください。
空港コードが不正な場合は 400 が返され、 requestMetadata.status は error に設定されます。都市名ではなく、IATA コードまたは kgmid を使用してください。
データを含む結果には、サポートに問い合わせる際に伝えると役立つ requestMetadata.id も含まれています。
料金、無料枠、上限
Google Flights の呼び出しは、成功するたびに 15 クレジットかかります。レスポンスのサイズによって料金は変わらず、ディープ検索も標準検索と同じ料金です。
無料枠は毎月 1,000 クレジット、カード登録不要で、約 66 回のフライト検索ができます。請求サイクルごとに更新されるため、利用量の少ないエージェントなら無料枠のまま使い続けられます。
有料プランは、200,000 クレジットで月額 $59から利用でき、約 13,000 回検索できます。利用量が増えるほど単価は下がり、エントリープランでは1,000 回の呼び出しあたり $4.42、Basic では**$1.79**、Growth ティアでは**$1.25**です。最新の料金は料金ページをご確認ください。
プランによって同時実行数も決まります。無料枠では一度に 1 件、Startup では 5 件、Basic では 15 件、Growth ティアでは 50~500 件を実行できます。無人で実行するものには、超過時のケースを想定した防御処理を入れてください。
200 以外のステータスコードで返されたリクエストには課金されません。往復検索は 2 回の呼び出しになるため、その分のクレジットを見込んでください。
ツールの選択
apis クエリパラメーターで、エージェントに表示するツールを指定します。ツールを絞ると、ツール定義に使うコンテキストが少なくなり、モデルが誤ったツールを選ぶ可能性も減ります。
?apis=google_travel_flights the one tool in this repo
?apis=google_travel add Google Hotels
?apis=google_travel_flights,airbnb flights plus Airbnb stays
このパラメーターには、google_travel のようなプロバイダー名と、google_travel_flights のような個別の API 名を指定できます。スペルミスのある名前は無視されます。すべての名前が無効な場合、リクエストは 400 で失敗し、認識されなかった名前と有効な値の一覧が本文に記載されます。パラメーターを省略すると、同じエンドポイントですべての 57 個の HasData ツールが公開されます。
比較
Google は 2018 年に QPX Express フライト API を廃止しましたが、後継の API は提供していません。そのため、公式の Google Flights API は存在しません。残る方法は、公開結果をスクレイピングするか、生の GDS 運賃データのライセンスを取得することですが、どちらも大がかりで高額です。このサーバーは、サイトに表示されるものと同じ検索結果を読み取り、JSON として返します。
| 公式 Google API | このサーバー | |
|---|---|---|
| 空席状況 | 2018 年に QPX Express が終了して以来、提供なし | ライブ検索結果に対応したメンテナンス済みスキーマ |
| 排出量データ | 提供なし | 旅程ごとに、ルート平均と比較 |
| 料金履歴 | 提供なし | 一般的な価格帯を示す priceInsights |
| セットアップ | 存在しないため、セットアップ不要 | 1 つのキーと 1 つの URL |
| コスト | 該当なし | 無料枠を超えると有料、1 回の呼び出しにつき 15 クレジット |
このサーバーでできないこと。 予約と支払いには対応していません。運賃、区間、Google が予約に進む際に使うトークンを読み取り、予約の手順はユーザーに引き継ぎます。
よくある質問
公式の Google Flights API はありますか?
いいえ。Google は 2018 年に QPX Express を終了し、後継サービスをリリースしていません。どの選択肢も、ウェブサイトが提供するものと同じ公開検索結果を読み取ります。このサーバーは HasData がメンテナンスしており、結果を構造化 JSON で返します。
Google Flights MCP サーバーとは何ですか?
AI クライアントが呼び出せるツールとして Google Flights を公開するサーバーです。クライアントは Model Context Protocol 経由でツール呼び出しを送信し、サーバーは旅程を取得して構造化 JSON を返し、モデルはその結果を使います。このサーバーは単一のツールを公開し、リモートで実行されます。
往復検索が 2 回の呼び出しになるのはなぜですか?
Google は最初に往路の候補を返し、それぞれに departureToken を含めます。候補を 1 つ選び、そのトークンを渡して、組み合わせられる復路のフライトを取得します。これはサイトの動作を反映しており、そのため往復検索には 30 クレジットかかります。
炭素排出量はキログラム単位ですか?
いいえ、グラム単位です。thisFlight: 433000 は 433 kg を意味し、differencePercent はルート平均との比較を示します。
ディープ検索とは何ですか?
Google Flights がブラウザーに表示する内容をそのまま返す、低速のモードです。速度を優先する場合はオフのままにし、サイトと同じ結果が必要な場合はオンにしてください。
ほかの HasData API と一緒に使えますか?
はい。apis パラメーターにはリストを指定でき、?apis=google_travel とするとフライトに加えて Google Hotels も利用できます。パラメーターを省略すると、すべてのツールを利用できます。
コンプライアンスと個人データ
HasData は一般に公開されているデータのみを取得します。プラットフォームの利用規約によって自動アクセスが制限されている場合があり、ご自身のコンプライアンスにはご自身で責任を負っていただきます。
HasData のリンク
| 製品ページとリクエストビルダー | Google Flights API |
| サーバーのドキュメント | MCP サーバーのドキュメント |
| 57 個すべてのツールを備えた 1 つのサーバー | HasData/hasdata-mcp |
| クライアントの利用ガイド | MCP クライアントとインテグレーション |
| その他すべてのスクレイピング対象 | Google Flights API とその他 54 種類 |
| プランとクレジット料金 | プランとクレジット料金 |
| キーと使用状況 | HasData ダッシュボード |
| npm の Node ランチャー | @hasdata/google-flights-mcp |
| PyPI の Python ランチャー | hasdata-google-flights-mcp |
開発
このリポジトリは、リモートサーバーの設定とドキュメントです。ビルド手順はなく、コンテナ化するものもありません。
test/ 内のテストでは、ここでのコミットがなくても変更される可能性のある部分、つまりツールの契約を検証します。?apis=google_travel_flights がツールをちょうど 1 つ返すこと、必須パラメーターが引き続き宣言されていること、名前が変更されていないこと、使用中のキーが実際に受け付けられることを確認します。最後のチェックではツールを実際に呼び出し、15 クレジットを消費します。これは、適切な理由で失敗する可能性があるカナリアテストの料金です。
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test
同じテストスイートは、すべてのプッシュ時と週 1 回のスケジュールで CI でも実行されます。上流のツール一覧は、このリポジトリに変更がなくても変わる可能性があるためです。失敗した場合は、ツール一覧が変更された、キーが使えなくなった、またはエンドポイントに到達できなかったことを意味し、どれに該当するかはアサーションメッセージに示されます。
貢献
パラメーターテーブルとレスポンスのサンプルは特に変更されやすいため、これらの修正が最も役立つ貢献です。実行した呼び出しと、受け取ったレスポンスを記載してください。フォークからのプルリクエストではキーなしでテストスイートが実行され、ライブチェックは失敗扱いにならずスキップされます。
ライセンス
MIT です。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。