mcpField
D
dealdata

dealdata

ローカル
github.com/CloudCorpRecords地図・旅行02 日前に更新

dealdata について

dealdata は、自然言語の旅行案からフライトのお得な運賃を探す旅行者向けに、HasData のホスト型 Google Flights deals MCP サーバーへ接続するローカルブリッジです。日付、価格、旅程情報、Google Flights のリンクを返し、予約や決済には対応しません。

主な機能

  1. 01自然言語の旅行案から運賃を検索
  2. 02出発空港と任意の目的地を指定
  3. 03日付、座席クラス、経由地、価格で絞り込み
  4. 04フライト、旅程、航空会社の情報を返却
  5. 05Google Flights への直接リンクを提供

活用シーン

  1. 01出発空港からビーチ旅行の運賃を検索
  2. 02日付範囲と旅行日数でフライトを絞り込み
  3. 03価格、飛行時間、経由地を比較

MCP 対応

MCP クライアント向けに読み取り専用のフライト運賃検索ツールを 1 つ公開し、呼び出しを HasData のホスト型 Google Flights deals MCP サーバーへ転送します。予約、発券、決済には対応しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-dealdata": {
"command": "npx",
"args": [
"-y",
"@reneturcios/dealdata"
]
}
}
}
起動コマンドnpx -y @reneturcios/dealdata

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/dealdata0.1.0
ocighcr.io/cloudcorprecords/dealdata:0.1.0

ツール

1

掲載時のツール一覧 · 2 日前に更新

パラメーター型必須説明
qstringはい場所の名前だけでも、完全な文でも指定できる自由形式の旅行の説明: - **目的地**:`Tokyo` - **旅行の種類**:`beach escape`、`weekend getaway in Europe` - **季節またはイベント**:`I would like to see cherry blossom in Japan` クエリから時期が読み取れる場合、Google が日付を決定し、その範囲を `searchInformation.dateRange` で返します。
glstringいいえ検索対象を限定する国の 2 文字の国コードです。ドキュメントに記載された値を正確に 1 つ指定してください(245 種類に対応)。例:`ac`、`af`。
hlstringいいえ検索に使用する言語の 2 文字コードです。ドキュメントに記載された値(159 種類)のいずれかを正確に指定してください。例:`af`、`ak`。
typeenumいいえフライトの種類。`arrivalId` が必要です。 - `1` / `roundTrip` — 往復(デフォルト) - `2` / `oneWay` — 片道 片道の情報には `returnDate` と `tripLengthDays` は含まれません。1 | roundTrip | 2 | oneWay
stopsenumいいえ乗り継ぎ回数の上限。`arrivalId` が必要です。省略すると、回数に制限はありません。 - `1` / `nonStop` — 直行便のみ - `2` / `oneStopOrFewer` — 乗り継ぎは 1 回まで - `3` / `twoStopsOrFewer` — 乗り継ぎは 2 回まで 該当する回数の経路がない場合、エラーではなく空の `flightDeals` 配列が返されます。直行便のない経路に対する `nonStop` も有効なクエリであり、結果は空になります。1 | nonStop | 2 | oneStopOrFewer | 3 | twoStopsOrFewer
adultsnumberいいえ大人の人数。料金は同行者全員分で計算されるため、人数を増やすと各情報の料金も上がります。 乗客数は料金を再計算するだけで、検索範囲を狭めないため、`arrivalId` は不要です。同行者の合計は 9 人以下である必要があります。
childrennumberいいえ子どもの人数。子ども自身の運賃で計算されます。乗客数の上限 9 人に含まれます。
currencystringいいえ返される価格の通貨を指定します。ドキュメントに記載された値を正確に 1 つ指定してください(71 個から選択)。例:`ALL`、`DZD`。
maxPricenumberいいえチケット価格の上限。この金額を含みます。`arrivalId` が必要です。省略すると上限はありません。 リクエストの通貨で解釈されます。`currency` が `EUR` の場合、`650` は 650 EUR を意味し、デフォルトでは 650 USD を意味します。
arrivalIdstringいいえGoogle にクエリから目的地を選ばせず、検索対象を 1 つの目的地に固定します。 - **IATA コード**:大文字 3 文字。例:東京成田の `NRT`。 - **場所の kgmid**:`/m/` で始まります。Wikidata の「Freebase ID」で確認できます。例:東京の `/m/07dfk`。 次のすべてのフィルターで必須です:`type`、`travelClass`、`stops`、`outboundDate`、`returnDate`、`travelDuration`、`tripLength`、`maxPrice`、`maxDuration`、`includeAirlines`、`excludeAirlines`。指定しない場合、Google はこれらを通知なしで無視します。
returnDatestringいいえ帰着日。`outboundDate` と同じ形式で、特定日または期間を指定します。`outboundDate` と併せて必須です。 `travelDuration` または `tripLength` とは併用できません。いずれも旅行期間を設定するためです。`type` が `oneWay` の場合は無視されます。
tripLengthstringいいえ旅行期間(日数)。`arrivalId` が必要です。`returnDate` または `travelDuration` とは併用できません。 - **日数を指定**:`7` - **範囲**:`5,10` — 最小値を先に指定 `outboundDate` と組み合わせると、出発期間を制限できます。`type` が `oneWay` の場合は無視されます。
departureIdstringはい出発空港の大文字 3 文字の IATA コード。例:`LAX`、`LHR`。[IATA](https://www.iata.org/en/publications/directories/code-search) で検索してください。 1 回の検索につき空港は 1 つです。都市名は指定できません。
maxDurationnumberいいえフライト時間の上限(分)。`1500` は 25 時間です。`arrivalId` が必要です。省略すると上限はありません。往復合計ではなく、片道ごとに適用されます。 Google は、返される `durationMinutes` より長い時間を基準に判定するため、希望するフライト時間より高い上限を設定してください。最短の航空券が 635 分の経路では、`635` だと結果は空になり、`680` ならその航空券が返されます。結果が空の場合は、経路に該当便がないと判断する前に、`maxDuration` を最大 200 分引き上げてください。
travelClassenumいいえ座席クラス。`arrivalId` が必要です。 - `1` / `economy` — エコノミー(デフォルト) - `2` / `premiumEconomy` — プレミアムエコノミー - `3` / `business` — ビジネス - `4` / `first` — ファースト 運賃は大幅に上がります。LAX-NRT では、同じ検索でエコノミーが $730、ビジネスが $2882 でした。1 | economy | 2 | premiumEconomy | 3 | business | 4 | first
infantsOnLapnumberいいえ大人の膝上に乗る乳児の人数。乗客数の上限 9 人に含まれます。 Google では、膝上の乳児の料金は座席を使用する乳児より高く設定されます。一般的な航空会社の料金設定とは逆です。
outboundDatestringいいえ出発日。`arrivalId` が必要です。 - **日付を指定**:`2026-12-10` - **期間**:`2026-12-01,2026-12-10` — 期間内の任意の日 省略すると、Google がクエリの内容または最安値に基づいて日付を選択します。
infantsInSeatnumberいいえ座席を使用する乳児の人数。乗客数の上限 9 人に含まれます。
travelDurationenumいいえ旅行期間のプリセット。`arrivalId` が必要です。`returnDate` または `tripLength` とは併用できません。 - `1` / `week` — 約 1 週間(6~8 日) - `2` / `weekend` — 週末(2~3 日) - `3` / `twoWeeks` — 約 2 週間(13~15 日) `outboundDate` と組み合わせると、出発期間を制限できます。`type` が `oneWay` の場合は無視されます。1 | week | 2 | weekend | 3 | twoWeeks
excludeAirlinesstringいいえこれらの航空会社をお得情報から除外します。`arrivalId` が必要です。`includeAirlines` とは併用できません。 `includeAirlines` と同じ値を指定します。
includeAirlinesstringいいえこれらの航空会社のみを保持します。`arrivalId` が必要です。`excludeAirlines` とは併用できません。 カンマ区切りの 2 文字の IATA コード(`AF`、`UA`、`B6`)と、Google の航空連合 `STAR_ALLIANCE`、`SKYTEAM`、`ONEWORLD` を指定します。両方を混在させることができます。 その路線を運航していない航空会社を指定すると、エラーではなく空の `flightDeals` 配列が返されます。

詳細

dealdata

dealdata は、ホスト型 HasData Google Flights deals MCP サーバーへの小規模なローカルブリッジです。ビーチでの休暇、日本の桜、香港の花火大会など、平易な言葉で旅行のアイデアと出発空港を1つ指定すると、Google が目的地と旅行日を選び、往路と復路の日付、価格、飛行時間、旅行期間、乗り継ぎ回数、運航航空会社、出発空港と到着空港、Google Flights への直接リンクを含むお得なフライト情報を返します。Google が検索内容自体を作成した場合、通常価格と割引額、写真付きの目的地の説明、さらに Google がクエリから導き出した日付範囲もお得な情報に含まれることがあります。

このブリッジは独自の運賃データを保存しません。ライブエンドポイントから取得した上流サーバーのツール一覧を、そのままローカルで提供し、各ツール呼び出しを上流に転送して、結果を変更せずに返します。取得された機能は、読み取り専用のお得なフライト検索のみです。公開済みの運賃データのみを扱い、予約、席の確保、発券、決済のツールは含まれません。

ツール

  • hasdata_google_travel_flights_deals_getGoogleFlightsDeals — 旅行の説明から Google Flights のお得なフライト情報を取得します。 必須項目:q(平易な言葉での旅行の説明) および departureId(3文字の大文字 IATA コードで指定する出発空港1か所)。任意項目:arrivalId(IATA コードまたはロケーション kgmid で目的地を1か所に固定。すべての運賃フィルターで必須)、type(往復または片道)、travelClass(エコノミー、プレミアムエコノミー、ビジネス、ファースト)、outboundDate と returnDate (正確な日付または期間)、travelDuration(1週間、週末、2週間)、tripLength(日数。正確な日数または範囲)、stops、maxDuration(片道あたりの分数)、maxPrice、includeAirlines / excludeAirlines、 adults、children、infantsInSeat、infantsOnLap (同行者の合計は9人を超えられません)、およびローカライズ用の gl、hl、currency。

設定

  • HASDATA_GOOGLE_FLIGHTS_DEALS_MCP_URL(任意) — 上流エンドポイントを上書きします。デフォルトは https://mcp.hasdata.com/mcp?apis=google_travel_flights_deals です。 (上書き用の仕組みは、この再構築独自のラベル付き再現です。)
  • HASDATA_API_KEY(任意) — 設定すると、すべての上流リクエストに、呼び出し元自身の HasData API キーを指定する x-api-key: <key> ヘッダーが付加されます。未設定の場合、キーのヘッダーは送信されません。(ヘッダー名と環境変数名は元のレジストリレコードで固定されています。この環境変数からキーを転送する動作はラベル付き再現です。元の機能はキーなしで取得されました。)
転送の仕組み

最初のツール呼び出し時に、クライアントは上流とのストリーム可能な HTTP セッションを開きます。まず JSON-RPC の initialize リクエスト(protocolVersion 2025-03-26、 clientInfo name dealdata)を送り、次に notifications/initialized 通知、続いて呼び出し元の引数を変更せずに含む tools/call リクエストを送信します。上流が initialize への応答で Mcp-Session-Id ヘッダーを返すと、その値はセッションの後続のすべてのリクエストに付与され、プロセスの存続期間中再利用されます。応答は通常の JSON またはサーバー送信イベントで届く場合があり、どちらも読み取られます。

成功した上流の結果は、上流が設定した isError フラグも含め、そのまま返されます。失敗(JSON-RPC エラー、2xx 以外のステータス、読み取り不能な応答、または完了できないリクエスト)は、テキストが dealdata error: で始まる isError 結果として返されます(この表示方法は、この再構築独自のラベル付き再現です)。

CLI

このツールは、JSON の引数文字列を1つ取るサブコマンドとしても利用できます。

npx @reneturcios/dealdata hasdata_google_travel_flights_deals_getGoogleFlightsDeals '{"q":"beach escape","departureId":"LAX"}'
npx @reneturcios/dealdata --version

終了コード:成功時は 0、isError 結果の場合は 1、使用方法に誤りがある場合は 2 です。

MCP サーバー

npx -y @reneturcios/dealdata mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "dealdata": {
      "command": "npx",
      "args": ["-y", "@reneturcios/dealdata", "mcp"]
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/dealdata
docker run --rm ghcr.io/cloudcorprecords/dealdata --version

コンテナのデフォルトコマンドは mcp です。そのため、最初の形式は stdio MCP サーバーとして動作し、それ以外の引数は通常どおり CLI に渡されます。

開発

npm install
npm run build
npm test
npm run dev

テストスイートはすべて、スタブ化された JSON-RPC 上流に対して実行されます。ライブネットワークへの呼び出しはありません。

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。