mcpField
H
HasData Booking.com

HasData Booking.com

リモート
hasdata.com地図・旅行11今日更新
リポジトリ公式サイト

HasData Booking.com について

HasData Booking.com は、宿泊情報を必要とする MCP クライアント向けのホスト型読み取り専用 MCP サーバーです。目的地と日程で宿泊先を検索し、施設の詳細を構造化 JSON で取得できます。

主な機能

  1. 01目的地と日程による宿泊先検索
  2. 02価格、評価、設備による絞り込み
  3. 03施設の詳細情報の取得
  4. 04客室、ポリシー、評価の返却

活用シーン

  1. 01都市間の宿泊料金の比較
  2. 02キャンセルポリシーによるホテルの絞り込み
  3. 03施設の設備とハウスルールの確認

MCP 対応

ホスト型リモートサーバーとして、宿泊先検索と施設詳細取得の読み取り専用ツールを MCP クライアントに提供します。プロンプトとパラメーター値のリソースもあります。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.hasdata.com/mcp?apis=booking
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.hasdata.com/mcp?apis=booking認証が必要
パッケージ
npm@hasdata/booking-mcp1.0.8
pypihasdata-booking-mcp1.0.8

ツール

2
パラメーター型必須説明
petsnumberいいえペットの数。
neLatnumberいいえ地図のバウンディングボックスの北東角の緯度。4 つの境界ボックス座標をすべて指定すると、場所ではなくボックス内でリスティングを検索します。
neLngnumberいいえ地図のバウンディングボックスの北東角の経度。
swLatnumberいいえ地図のバウンディングボックスの南西角の緯度。
swLngnumberいいえ地図のバウンディングボックスの南西角の経度。
adultsnumberいいえ大人の人数。
checkInstringはいリスティングのチェックイン日。
infantsnumberいいえ乳幼児の人数。
checkOutstringいいえリスティングのチェックアウト日。
childrennumberいいえ子どもの人数。
locationstringいいえリスティングを検索する場所。完全な地図バウンディングボックス(neLat、neLng、swLat、swLng)を指定しない場合は必須です。
nextPageTokenstringいいえ次のページの結果を取得するためのトークン。

詳細

Booking.com MCP サーバー

Claude、Cursor、Windsurf など、あらゆる MCP クライアントに読み取り専用の Booking.com ツールを 2 つ提供する、ホスト型の Model Context Protocol(MCP)サーバーです。充実したフィルターを使って目的地と日付から宿泊先を検索し、施設の詳細情報を 1 件単位で JSON の構造化データとして取得できます。ホスティングは不要です。

サインアウトした訪問者が閲覧できる、Booking.com の公開施設ページを読み取ります。

毎月 1,000 クレジットを無料で利用でき、カード登録も不要です。これは Booking の検索 100 回分です。

https://mcp.hasdata.com/mcp?apis=booking

Glama スコア ツールコントラクト MCP ツール

目次

必要なもの

MCP クライアントと、ダッシュボードから取得できる HasData API キーが必要です。カード登録なしで無料で作成でき、無料枠では 10 クレジットの料金で月 100 回呼び出せます。これはリモートサーバーなので、最も簡単な方法は URL と x-api-key ヘッダーを使うことです。実行するコンテナーは不要です。stdio のみを扱うクライアントからは、以下に示す薄いランチャーを介して接続できます。このランチャーは npm では @hasdata/booking-mcp、PyPI では hasdata-booking-mcp として公開されています。

クイックスタート

サーバー URL は、どのクライアントでも同じです。Claude Code と Claude Desktop では、実際の手順を示します。その他のブロックは、それぞれのクライアントがリモートサーバー向けにドキュメントで定めている形式に従います。

項目値
URLhttps://mcp.hasdata.com/mcp?apis=booking
トランスポートHTTP、ストリーミング可能
認証ヘッダーx-api-key: HASDATA_API_KEY

OAuth に対応しているクライアントでは、同じ URL をコネクターとして追加してサインインすれば、設定ファイルにキーを記述せずに利用できます。

Claude Code
claude mcp add --transport http booking "https://mcp.hasdata.com/mcp?apis=booking" \
  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop

「設定」、「コネクター」、「カスタムコネクターを追加」の順に選択し、https://mcp.hasdata.com/mcp?apis=booking を貼り付けてサインインします。

設定ファイルを使う方法では、Claude Desktop はローカル(stdio)サーバーのみを読み込むため、stdio ランチャーを介してリモートサーバーに接続します。@hasdata/booking-mcp パッケージがそのランチャーで、キーを環境から読み込みます。次の内容を claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "booking": {
      "command": "npx",
      "args": ["-y", "@hasdata/booking-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Node の代わりに Python を使う場合は、手動でインストールせずに uvx で実行できる PyPI パッケージにランチャーを置き換えます。

{
  "mcpServers": {
    "booking": {
      "command": "uvx",
      "args": ["hasdata-booking-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}
Cursor

すべてのプロジェクトで使う場合は ~/.cursor/mcp.json、1 つのプロジェクトで使う場合は .cursor/mcp.json を使用します。

{
  "mcpServers": {
    "booking": {
      "url": "https://mcp.hasdata.com/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json を使用します。Windsurf ではフィールド名に url ではなく serverUrl を使います。

{
  "mcpServers": {
    "booking": {
      "serverUrl": "https://mcp.hasdata.com/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
VS Code

ワークスペース内の .vscode/mcp.json を使用します。

{
  "servers": {
    "booking": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

プロンプトの例

コードではなく、プロンプトです。貼り付けると、エージェントが使うツールを自ら選択します。成功した呼び出しは毎回 10 クレジットを消費するため、それぞれに必要な呼び出し回数を記載しています。

9 月 15 日から 18 日まで、パリで大人 2 名が宿泊できるホテルを Booking.com で検索し、滞在料金が 700 ドル未満でレビュー評価の高い 10 件を教えてください。

1 回の呼び出しで 10 クレジットです。料金、レビュー評価、場所は検索結果に含まれます。

検索結果の最上位の施設について、設備、宿泊規則、部屋の選択肢、カテゴリ別評価など、詳細をすべて取得してください。

1 回の呼び出しで 10 クレジットです。詳細は施設ページにあり、詳細ツールが URL と日付を指定して取得します。

無料キャンセル可能で、中心部に近いパリの 4 つ星ホテルを検索し、料金とレビュー評価を一覧にしてください。

1 回の呼び出しで 10 クレジットです。星評価、キャンセルポリシー、距離は 1 回のリクエストで指定できるフィルターです。

同じ日程で、パリとローマの最安の宿泊先を比較してください。

2 回の呼び出しで 20 クレジットです。各都市で 1 回ずつ検索します。

施設ツールでは、空室状況と料金が宿泊期間に左右されるため、検索時と同じ日付および宿泊人数が必要です。候補を絞る検索を 1 回行い、3 つの施設の詳細を呼び出す場合、検索 1 回と施設呼び出し 3 回になります。

ツール

ツール返される内容
hasdata_booking_place_getBookingPlaceDetails施設の識別情報(hotelId、タイトル、住所、座標)、ポリシー(無料キャンセル、前払い不要、子ども・ペットの宿泊)、料金、評価とレビューの概要、写真など。1 回の呼び出しにつき 10 クレジット
hasdata_booking_search_getBookingSearchResults各ホテルの hotelId、タイトル、Booking URL、場所の情報(都市、住所、座標、中心部/最寄りのビーチまでの距離)、ポリシー(無料キャンセルなど)。1 回の呼び出しにつき 10 クレジット

読み取り専用のツールが 2 つあります。以下のサンプルは実際の呼び出し結果から抜粋したもので、料金は常に変動します。データの形を示すものとしてご覧ください。各ツール名はエンドポイントのリファレンスにリンクしており、すべてのフィールドが記載されています。

サンプルはペイロードであり、レスポンス全体ではありません。tools/call の結果にはテキストブロックが 1 つ含まれ、そのテキスト自体が url、status、text、json を格納した JSON です。スクレイピングしたデータは json 内にあります。生の JSON-RPC レスポンスでは、パスは result.content[0].text で、これをパースしてから .json を参照します。チャットクライアントでは自動的に展開されますが、エンドポイントに直接アクセスするコードでは展開されません。

Booking.com の検索結果を取得

hasdata_booking_search_getBookingSearchResults

目的地と日付で宿泊施設を検索します。

パラメーター型必須備考
keyword文字列はいParis などの目的地、または特定の宿泊施設名
checkInDate / checkOutDate文字列はいYYYY-MM-DD。チェックイン日は未来の日付で、チェックアウト日より前である必要があります
rooms / adults / children数値はいゲストの構成です。子どもがいない場合は children: 0 を指定します
childrenAges文字列カンマ区切りの年齢です。children > 0 の場合は必須です
sort文字列priceLowestFirst、ratingHighToLow、bestReviewedAndLowestPrice、distanceFromDowntown など
propertyType__ / rating__ / reviewScore__配列宿泊施設のタイプ、星評価、ゲストスコアの範囲
facilities__ / roomFacilities__ / reservationPolicy__配列施設、客室内設備、キャンセルに関するフィルター
price_min_ / price_max_数値滞在全体の料金範囲
page数値1ページあたり約25件の結果です。次のページには 2 を指定します

リファレンスには、距離、食事、アクセシビリティ、ベッドの希望、旅行グループなど、すべてのフィルターが記載されています。

searchInformation、results 配列、および page、totalResults、totalPages を含む pagination を返します。各結果には、hotelId、title、url、提供される room と bedTypes、location オブジェクト、policies オブジェクト、price オブジェクト、星の rating、score、count、テキストラベルを含む reviews オブジェクト、photo が含まれます。

price 内の割引ペアは discountRaw と discountParsed です。以前のリリースではスペルが dicsountRaw と dicsountParsed になっていましたが、その表記は廃止されたため、それに依存するコードでは何も読み込めません。また、rating は公式の星評価である一方、reviews.score は10点満点のゲストスコアであり、異なる数値であることに注意してください。

{
  "hotelId": 50724,
  "title": "Hôtel du Jardin des Plantes",
  "url": "https://www.booking.com/hotel/fr/timjardindesplantes.html",
  "room": "Comfort Double Room",
  "location": { "city": "Paris", "address": "5 rue Linné", "mainDistance": "0.9 miles from downtown", "centrallyLocated": true },
  "policies": { "freeCancellation": true, "noPrepayment": true },
  "price": { "pricePerStayParsed": 451.36, "priceBeforeDiscountParsed": 885.03, "discountParsed": 433.66, "currency": "USD" },
  "rating": 3,
  "reviews": { "score": 7.5, "count": 1721, "text": "Good" }
}
Booking.com の宿泊施設の詳細を取得

hasdata_booking_place_getBookingPlaceDetails

URLと宿泊期間を指定して、1つの宿泊施設の詳細を取得します。

パラメーター型必須備考
url文字列はいBooking.com の宿泊施設URL。検索結果の url フィールドを指定します
checkInDate / checkOutDate文字列はいYYYY-MM-DD。料金と空室状況を確認する期間です
rooms / adults / children数値はいゲストの構成です。検索ツールと同じ意味です
childrenAges文字列カンマ区切りの年齢です。children > 0 の場合は必須です

ページの内容を、単一のフラットなオブジェクトではなく、セクションに分けて返します。overview(id、title、propertyType、構造化された address、description、highlights、mostPopularFacilities、photos)、bookingDetails(料金に反映される期間と通貨)、利用可能な各スイートの name、beds、facilities、料金付きの variants を含む rooms 配列、facilities リスト、houseRules、カテゴリー別スコアの ratings 配列、reviews、questionsAndAnswers が含まれます。

{
  "overview": {
    "id": "50724",
    "title": "Hôtel du Jardin des Plantes",
    "propertyType": "HOTEL",
    "address": { "country": "France", "zipcode": "75005" },
    "mostPopularFacilities": ["Non-smoking rooms", "Free Wifi", "24-hour front desk"]
  },
  "bookingDetails": { "checkIn": "2026-09-15", "checkOut": "2026-09-18", "adults": 2, "rooms": 1, "currency": "USD" },
  "ratings": [
    { "label": "Average", "value": 7.5, "votes": 1721 },
    { "label": "Cleanliness", "value": 7.8 }
  ]
}

プロンプトとリソース

サーバーは、受け付ける値が固定リストになっているパラメーターごとに、16 個のリソースを公開します。拒否された呼び出しから値の候補を学ぶよりも、リソースを読み取るほうが効率的で、クレジットも消費しません。各 URI は hasdata://booking/<parameter> です。

パラメーター値の数選択する内容
language45Booking.com のインターフェースと、レスポンス内のローカライズされたフィールドの言語です。
currency52レスポンスで返される価格の通貨です。各施設の現地通貨を維持するには、hotelCurrency を使用します。
sort10Booking.com が結果ページに適用する並べ替え順です。
propertyType__8施設タイプで絞り込みます。複数の値は OR 条件で結合されます。
rating__5公式の星評価で絞り込みます。複数の値は OR 条件で結合されます。
reviewScore__4宿泊客のレビュー評価の最低スコア帯で絞り込みます。複数の値は OR 条件で結合されます。
distanceFromCenter__3目的地の中心部からの距離で絞り込みます。複数の値は OR 条件で結合されます。
propertyAccessibility__7施設レベルのアクセシビリティ機能で絞り込みます。複数の値は OR 条件で結合されます。
meals__2利用可能な食事プランで絞り込みます。複数の値は OR 条件で結合されます。
facilities__13施設レベルの設備で絞り込みます。複数の値は OR 条件で結合されます。
roomFacilities__25客室内の設備で絞り込みます。複数の値は OR 条件で結合されます。
roomAccessibility__11客室内のアクセシビリティ機能で絞り込みます。複数の値は OR 条件で結合されます。
bedPreference__2ベッドの構成で絞り込みます。複数の値は OR 条件で結合されます。
reservationPolicy__2予約の柔軟性で絞り込みます。複数の値は OR 条件で結合されます。
onlinePayment__1オンライン決済の選択肢で絞り込みます。
travelGroup__2旅行グループ向けの宿泊オプションで絞り込みます。複数の値は OR 条件で結合されます。

このリストは 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 を返し、問題のあるフィールドを示します。対応する childrenAges を指定していない children の人数や、チェックイン日以前または同日のチェックアウト日は、ここで検出されます。

空室がない検索は、エラーではなく、空の results 配列を含む成功結果を返します。 予約可能な空きがない目的地と期間でも、requestMetadata.status が ok に設定された結果が返されます。反復処理を行う前に、配列の長さを確認してください。

解決できなくなった施設 URL は、requestMetadata.status が error に設定された 400 を返します。

データを含む結果には、サポートに問い合わせる際に伝えると便利な requestMetadata.id も含まれます。

料金、無料枠、利用上限

Booking.com の各ツールは、呼び出しが成功するたびに 10 クレジットかかります。レスポンスのサイズによって料金は変わりません。25 件の宿泊施設を含む検索ページも、2 件のページと同じ料金です。

無料枠は毎月 1,000 クレジットで、カードの登録は不要です。Booking.com の呼び出し 100 回分に相当します。請求サイクルごとに更新されるため、利用量の少ないエージェントなら無料枠のまま使い続けられます。

有料プランは、200,000 クレジット(20,000 回分)で月額 $59から利用できます。単価は利用量に応じて下がり、エントリープランでは呼び出し 1,000 回あたり $2.95、Basic では**$1.19**、Growth ティアでは**$0.83**です。最新の料金は料金ページをご覧ください。

プランによって同時実行数も決まります。無料枠は一度に 1 リクエスト、Startup は 5、Basic は 15、Growth ティアは 50 から 500 までです。無人で実行するものでは、超過時のケースに備えてください。

200 以外のステータスコードで返されたリクエストには課金されません。結果が見つからなくても、呼び出しが成功すれば 1 回分として扱われます。

ツールの選択

apis クエリパラメーターで、エージェントに表示するツールを指定します。ツールを絞ると、ツール定義に使うコンテキストが減り、モデルが誤ったツールを選ぶ可能性も低くなります。

?apis=booking                    the two tools in this repo
?apis=booking,airbnb             add Airbnb stays
?apis=booking,google_travel      add Google Hotels and Flights

このパラメーターには、booking などのプロバイダー名や、booking_search などの個別の API 名を指定できます。スペルミスのある名前は無視されます。すべての名前が無効な場合、リクエストは 400 を返し、認識されなかった名前と有効な値の一覧を本文に含めます。パラメーターを省略すると、同じエンドポイントで HasData の全 57 ツールが公開されます。

比較

Booking.com 独自のプログラムである Demand API とアフィリエイトパートナーネットワークは、予約を送客してコミッションを得る承認済みパートナー向けであり、公開市場をセルフサービスで閲覧する手段ではありません。宿泊施設を検索し、任意の施設情報を取得するには、公開ページのスクレイピングが必要です。このサーバーは、安定したスキーマのもとでそれを行います。

Booking.com のパートナープログラムこのサーバー
目的承認済みアフィリエイトとして予約を送客する公開市場の情報を取得する
アクセスパートナー承認が必要キー 1 つと URL 1 つ
市場全体を検索パートナー規約の範囲内はい。豊富なフィルターを利用できます
セットアップビジネス向けオンボーディング不要
出力パートナー向けフィード価格とスコアを事前解析した構造化 JSON

このサーバーでできないこと。 予約、決済、パートナーコミッション、アカウントデータの取得はできません。Booking.com でサインアウトした訪問者が閲覧できる情報を取得します。

FAQ

Booking.com 公式の MCP サーバーはありますか?

Booking.com は公開していません。このサーバーは HasData が保守しており、公開されている Booking.com のページを読み取ります。

Booking.com MCP サーバーとは何ですか?

AI クライアントが呼び出せるツールとして、Booking.com のデータを公開するサーバーです。クライアントが Model Context Protocol 経由でツール呼び出しを送信し、サーバーがデータを取得して構造化 JSON を返すと、モデルがその結果を処理します。このサーバーは 2 つのツールを公開し、リモートで実行されます。

Booking.com のアカウントやパートナー承認は必要ですか?

いいえ。必要な認証情報は HasData キーのみです。ツールは公開されている Booking.com のページを読み取るため、パートナー向けオンボーディングはありません。

施設情報のツールに日付が必要なのはなぜですか?

空室状況、客室の選択肢、料金はすべて宿泊期間によって変わるためです。検索時と同じ checkInDate、checkOutDate、ゲスト数を渡すと、その期間に対応した詳細情報が返されます。

評価とレビューのスコアはどう違いますか?

rating は施設の公式の星評価です。reviews.score は 10 点満点のゲストレビュー評価です。3 つ星ホテルでもゲスト評価が 9.0 の場合があるため、目的に合った方を確認してください。

ほかの HasData API と組み合わせて使えますか?

はい。apis パラメーターにはリストを指定でき、?apis=booking,airbnb を指定すると、エージェントに Booking.com と Airbnb の両方が表示されます。パラメーターを省略すると、すべてのツールが利用できます。

HasData は Booking.com と提携していますか?

いいえ。HasData は独立したサービスであり、Booking.com と提携、推奨、または後援関係にありません。Booking.com はそれぞれの所有者の商標です。

コンプライアンスと個人データ

HasData は一般公開されているデータのみを取得します。プラットフォームの利用規約によって、自動アクセスが制限されている場合があります。ご自身のコンプライアンスについては、ご自身で責任を負ってください。収集するデータに個人情報が含まれる場合は、GDPR、CCPA、または管轄区域で適用される同等の規則に基づく適法な根拠があることを確認してください。

HasData のリンク

製品ページとリクエストビルダーBooking.com Scraper API
サーバーのドキュメントMCP サーバーのドキュメント
1 つのサーバーで使える全 57 ツールHasData/hasdata-mcp
クライアントの手順ガイドMCP クライアントとインテグレーション
その他すべてのスクレイピング対象Booking.com Scraper API とその他 54 件
プランとクレジット費用プランとクレジット費用
キーと使用状況HasData ダッシュボード
npm の Node ランチャー@hasdata/booking-mcp
PyPI の Python ランチャーhasdata-booking-mcp

開発

このリポジトリには、リモートサーバーの設定とドキュメントが含まれています。ビルド工程はなく、コンテナ化するものもありません。

test/ のテストでは、ツールの契約、つまりこのリポジトリでコミットを行わなくても破損する可能性がある部分を検証します。?apis=booking が正確に 2 つのツールを返すこと、各ツールが引き続き必須パラメーターを宣言していること、名前が変更されていないこと、使用中のキーが実際に受け入れられることを確認します。最後のチェックでは実際にツールを呼び出すため、10 クレジットがかかります。これは、適切な理由で失敗する可能性のあるカナリアテストの費用です。

# 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 を参照してください。

コメント

MCP は初めてですか?

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

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