Skip to main content
Glama

Booking.com MCP Server

ホステッドの Model Context Protocol (MCP) サーバーで、Claude、Cursor、Windsurf、その他のあらゆる MCP クライアントに、読み取り専用の Booking.com ツールを 2 つ提供します。目的地と日付で滞在を検索でき、豊富なフィルターに対応しています。また、単一の物件を完全に読み取ることもできます。すべて構造化された JSON として返され、Booking.com アカウントもホスティングも不要です。

ログアウトした訪問者が閲覧できる Booking.com の公開物件ページを読み取ります。

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

Glama score tool contract MCP Tools npm PyPI License

目次

Related MCP server: Hotels MCP Server

必要なもの

必要なのは、MCPクライアントと、ダッシュボードで作成できるHasData APIキーです。カード不要で無料作成でき、トライアルでは10クレジットレートで100回の呼び出しが利用できます。これはリモートサーバーのため、最も簡単な方法はURLとx-api-keyヘッダーを使うことです。コンテナを実行する必要もなく、フローの中にBooking.comアカウントは一切登場しません。stdioのみをサポートするクライアントは、npmでは@hasdata/booking-mcp、PyPIではhasdata-booking-mcpとして公開されている薄いランチャーを介してアクセスします。下記を参照してください。

クイックスタート

サーバーURLはすべてのクライアントで同じです。Claude CodeとClaude Desktopで実際に動作確認しています。他のブロックは、各クライアントが公式に文書化しているリモートサーバーの形式に従っています。

フィールド

URL

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

トランスポート

HTTP, streamable

認証ヘッダー

x-api-key: HASDATA_API_KEY

OAuthに対応したクライアントは、同じURLをコネクタとして追加し、設定ファイルにキーを書かずにサインインできます。

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

設定 → コネクタ → カスタムコネクタの追加 の順に進み、https://mcp.hasdata.com/api/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を使う場合は、ランチャーをPyPIパッケージに置き換えます。uvxなら手動インストールなしで実行できます:

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

全プロジェクトで使うには~/.cursor/mcp.jsonを、1つのプロジェクトだけなら.cursor/mcp.jsonを使用します:

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

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

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

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

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

プロンプト例

プロンプトであり、コードではありません。いずれかを貼り付けると、エージェントが自らツールを選択します。各プロンプトには必要な呼び出し回数が注記されています。成功した呼び出しは毎回10クレジット消費するためです。

パリのホテルを9月15日から18日まで大人2人で検索し、その滞在で$700以下の高評価トップ10を教えて。

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

トップの結果を取得し、その詳細をすべて取得してください:設備、ハウスルール、客室オプション、カテゴリー別評価。

1回の呼び出しで10クレジット。これらは物件ページにあり、詳細ツールがURLと日付で読み取ります。

4つ星で無料キャンセル対応、中心部に近いパリのホテルを検索し、価格とレビュースコアを一覧にして。

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

同じ日付で、パリの最安宿泊施設とローマの最安宿泊施設を比較して。

2回の呼び出しで20クレジット。都市ごとに1回の検索です。

物件ツールには検索と同じ日付とゲスト人数が必要です。利用可能状況と価格は期間に依存するためです。候補を絞り込むための検索1回と、3件の物件に対する詳細呼び出しを行う場合、検索1回+物件呼び出し3回になります。

ツール

読み取り専用のツールが2つあります。以下のサンプルは実際の呼び出しから抜粋したもので、価格は常に変動しています。形を掴むためのものとして見てください。各ツール名はエンドポイントのリファレンスにリンクしており、完全なフィールド一覧が記載されています。

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

Booking.comの検索結果を取得

hasdata_booking_search_getBookingSearchResults

目的地と日付に基づく宿泊施設の1ページ分を返します。

パラメーター

必須

備考

keyword

string

はい

目的地。例:Paris、または特定の物件名

checkInDate / checkOutDate

string

はい

YYYY-MM-DD形式。チェックイン日は未来かつチェックアウト日より前

rooms / adults / children

number

はい

ゲストの構成。子供がいない場合はchildren: 0を渡します

childrenAges

string

カンマ区切りの年齢。children > 0の場合は必須

sort

string

priceLowestFirstratingHighToLowbestReviewedAndLowestPricedistanceFromDowntownなど

propertyType__ / rating__ / reviewScore__

array

物件タイプ、星評価、ゲストスコアの区分

facilities__ / roomFacilities__ / reservationPolicy__

array

設備、客室内設備、キャンセル条件のフィルター

price_min_ / price_max_

number

宿泊全体の価格帯

page

number

1ページあたり約25件。次のページは2

リファレンスには、距離、食事、バリアフリー、ベッドの好み、旅行グループなど、完全なフィルターセットが記載されています。

searchInformationresults配列、そしてpagetotalResultstotalPagesを含むpaginationを返します。各結果には、hotelIdtitleurl、提供されているroombedTypeslocationオブジェクト、policiesオブジェクト、priceオブジェクト、星のratingscorecount、テキストラベルを持つreviewsオブジェクト、そしてphotoが含まれます。

price内の割引フィールドは、アップストリームのキーを反映してdicsountdicsountRawdicsountParsed)と綴られています。discountではなく、その綴りで読み取ってください。また、ratingは公式の星評価で、reviews.scoreは10点満点のゲストスコアであり、2つの異なる数値です。

{
  "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, "dicsountParsed": 433.66, "currency": "USD" },
  "rating": 3,
  "reviews": { "score": 7.5, "count": 1721, "text": "Good" }
}

Booking.comの物件詳細を取得

hasdata_booking_place_getBookingPlaceDetails

1件の物件を、そのURLと滞在期間に基づいて完全に返します。

パラメーター

必須

備考

url

string

はい

Booking.comの物件URL。検索結果のurlフィールド

checkInDate / checkOutDate

string

はい

YYYY-MM-DD形式。価格と空室を確認する期間

rooms / adults / children

number

はい

ゲスト構成。検索ツールと同じ意味

childrenAges

string

カンマ区切りの年齢。children > 0の場合は必須

ページの内容を1つのフラットなオブジェクトではなくセクションとして返します:overviewidtitlepropertyType、構造化されたaddressdescriptionhighlightsmostPopularFacilitiesphotos)、bookingDetails(価格の基準となる期間と通貨)、利用可能なスイートのrooms配列(各要素にはnamebedsfacilities、価格付きのvariantsが含まれます)、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 }
  ]
}

エラーと失敗パス

ツール呼び出しでHTTPエラーコードがクライアントに返ることはほとんどありません。MCPレイヤーは200で応答し、失敗内容を結果の中に入れ、isErrortrueに設定して、理由をテキストとして返します。エージェントは、ステータス行を期待する場所でメッセージを読み取ります。

誤ったキーは、接続失敗ではなくツール出力として表面化します。 tools/listは空でない任意のキーを受け入れ、両方のツールを返すため、クライアントはハンドシェイクを完了して緑色を示します。その後の最初のツール呼び出しで、isError: trueとテキストHasData API error: 401 Unauthorizedが返ってきます。フローのそれ以前には問題を報告するものがないため、この文字列に注意してください。

キーが存在しない場合は、唯一の実際のHTTPエラーになります。 認証はすべてのツールより前に実行され、接続自体が401で失敗します。CORSヘッダーが存在するため、ブラウザクライアントは不透明なネットワーク障害ではなくステータスを読み取ります。

ツールのスキーマに違反する引数は、スクレイピングになる前に拒否されます。 サーバーはisError: trueとテキストMCP error -32602: Input validation errorで応答し、問題のあるフィールドを指定します。childrenAgesが対応しないchildrenの数、またはチェックイン以前のチェックアウトは、ここで検出されます。

空室のない検索は、空のresults配列を持つ成功結果を返します、エラーではありません。空室がない目的地と期間でも、requestMetadata.statusokに設定されて返ってきます。反復処理の前に配列の長さを確認してください。

解決できない物件URLは400を返しますrequestMetadata.statuserrorに設定されます。

データを含む結果には、サポートで引用する価値のある requestMetadata.id も含まれます。

料金、無料枠、制限

各Booking.comツールは、成功した呼び出し1回につき10クレジットを消費します。レスポンスのサイズによって料金は変わりません。25件の滞在先が含まれる検索ページも、2件だけのページも同じコストです。

無料トライアルはカード不要で30日間1,000クレジットで、Booking.comの呼び出し100回分に相当します。その後も、アクティブなアカウントは残高が100を下回るたびに毎日100クレジットが補充されるため、利用量の少ないエージェントであれば無料枠で無期限に稼働できます。

有料プランは月額49ドルからで、200,000クレジット(20,000回の呼び出し)を含みます。単価は利用量に応じて下がり、エントリープランでは1,000回の呼び出しあたり2.45ドル、Businessでは0.99ドル、Growthでは0.83ドル、最大の高容量プランでは0.75ドルです。

また、プランによって同時実行数も決まります。無料トライアルは同時に1リクエスト、Startupは15、Businessは30、Growthは50、高容量プランは200〜1,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つのキーと1つのURL

市場全体の検索

パートナー条件内

可能(豊富なフィルター付き)

セットアップ

ビジネス向けオンボーディング

不要

出力

パートナーフィード

構造化JSON、価格とスコアは解析済み

このサーバーが行わないこと。 予約、支払い、パートナーコミッション、アカウントデータは一切扱いません。ログアウトした訪問者がBooking.comで見られるものだけを読み取ります。

FAQ

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

Booking.comは公式のものを公開していません。このサーバーはHasDataが保守しており、公開ページを読み取るため、Booking.comのアカウントは不要です。

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

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

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

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

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

空室状況、部屋のオプション、価格はすべて滞在期間に依存するためです。検索時に指定したものと同じ checkInDatecheckOutDate、ゲスト数を渡すと、詳細情報はその期間を反映します。

ratingとreview scoreの違いは何ですか?

rating は宿泊施設の公式の星評価です。reviews.score は10点満点中のゲストレビュースコアです。3つ星のホテルでもゲストスコアが9.0のことがあるため、意図した方を読み取ってください。

他のHasData APIと併用できますか?

はい。apis パラメータはリストを受け取り、?apis=booking,airbnb と指定すると、エージェントはBooking.comに加えてAirbnbも利用できます。パラメータを省略すると、すべてのツールを利用できます。

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

いいえ。HasDataは独立したサービスであり、Booking.comと提携しておらず、Booking.comの承認やスポンサーを受けているわけでもありません。Booking.comはそれぞれの所有者の商標です。

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

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

HasDataリンク

プロダクトページとリクエストビルダー

Booking.com Scraper API

サーバードキュメント

MCPサーバードキュメント

全57ツールを1つのサーバーで

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

Available Tools

2 tools
hasdata_booking_place_getBookingPlaceDetailsbooking_place: GET /AInspect

Get Booking Hotel Details

Fetches a single Booking.com property by its full URL for the given stay dates (checkInDate / checkOutDate) and guest composition (rooms, adults, children with ages). Returns the property identity (hotelId, title, address, coordinates), policies (free cancellation, no prepayment, child/pet stays), price, rating and review summary, photos, and the list of available room suites for the requested window. Use to enrich property listings with real-time availability and pricing, monitor a specific competitor hotel over time, validate amenities and photos before displaying venue details to end users, or fetch full details after discovering the property URL via the Booking Search endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull Booking.com URL of the property page. Only `booking.com` and `www.booking.com` hosts are accepted.
roomsYesNumber of rooms to book.
adultsYesNumber of adult guests across all rooms.
childrenYesNumber of child guests across all rooms (0–10). Pass `0` if there are no children.
currencyNoCurrency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency. Provide one exact documented value (52 allowed), e.g. `hotelCurrency`, `usd`.
languageNoLanguage of the Booking.com interface and localized fields in the response.
checkInDateYesCheck-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.
checkOutDateYesCheck-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.
childrenAgesNoComma-separated list of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the number of ages must equal `children`. Example: `1,3,7`

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It discloses that this is a read-style 'Fetches' operation, that it returns real-time availability and pricing, and it summarizes the outputs including policies, ratings, photos, and room suites. It does not mention limiting behaviors such as rate handling or response failure conditions, but it is substantially transparent for a GET-like lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a well-organized paragraph: what it does, what it returns, and when to use it. The first line 'Get Booking Hotel Details' is slightly redundant with the name, but the rest of the description avoids unnecessary noise and information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description compensates by listing the key return categories and explaining enriched use cases. It could include more detail about exact response structure or error conditions, but for the AI agent the combination of schema, use cases, and return summary is enough to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for all 9 parameters, so the schema does most of the parameter work. The description adds context by tying the inputs to stay dates and guest composition, and by mentioning the URL origin flow from search, but it does not deepen the individual parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Fetches a single Booking.com property by its full URL.' It names the key inputs and outputs and distinguishes itself from the sibling by being a detail lookup for an already-known property URL rather than a discovery/search call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete use cases: enrich property listings, monitor a competitor hotel, validate amenities/photos, and fetch details after a search. It does not explicitly state when not to use it versus the search endpoint, but it clearly implies this tool is for known URLs and detailed property data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_booking_search_getBookingSearchResultsbooking_search: GET /AInspect

Get Booking Search Results

Searches Booking.com for accommodations by destination keyword and stay dates (checkInDate / checkOutDate) with guest composition (rooms, adults, children with ages) and rich filtering: property type, star rating, review score, hotel and room facilities, distance from center, reservation policy, bed preference, travel group, online payment, accessibility, plus optional price range and bedroom/bathroom counts. Pagination is page-based with 25 results per page; locale is controlled by language and currency. Returns each hotel's hotelId, title and Booking URL, location info (city, address, coordinates, distance to center / nearest beach), policies (free cancellation, no prepayment, child/pet stays), price (per stay, before discount, discount, currency), rating, review summary and main photo. Use to power travel-planning agents, OTA price/inventory monitoring, hotel competitor analysis, lead-generation in the hospitality vertical, or to feed hotelId / URL into the Booking Place endpoint for full property details.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number of the search results. Booking.com returns 25 results per page; pass `2` for results 26–50, `3` for 51–75, etc.
sortNoSort order applied by Booking.com to the results page.
roomsYesNumber of rooms to book.
adultsYesNumber of adult guests across all rooms.
keywordYesFree-text destination query. Usually a city, region or neighborhood (e.g. `Paris`, `Manhattan, New York`); a specific property name is also accepted.
meals__NoFilter by available meal plans. Multiple values are combined with OR.
bedroomsNoMinimum number of bedrooms in the property.
childrenYesNumber of child guests across all rooms (0–10). Pass `0` if there are no children.
currencyNoCurrency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency. Provide one exact documented value (52 allowed), e.g. `hotelCurrency`, `usd`.
languageNoLanguage of the Booking.com interface and localized fields in the response.
rating__NoFilter by official star rating. Multiple values are combined with OR.
bathroomsNoMinimum number of bathrooms in the property.
price_max_NoMaximum total price for the stay, in the requested `currency`. Must be `>= 20` and greater than `price[min]`. Required if `price[min]` is omitted.
price_min_NoMinimum total price for the stay, in the requested `currency`. Must be `>= 10`. Required if `price[max]` is omitted.
checkInDateYesCheck-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.
checkOutDateYesCheck-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.
childrenAgesNoComma-separated list of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the number of ages must equal `children`. Example: `1,3,7`
facilities__NoFilter by property-level facilities. Multiple values are combined with OR.
reviewScore__NoFilter by minimum guest review score bucket. Multiple values are combined with OR.
travelGroup__NoFilter by travel-group oriented stay options. Multiple values are combined with OR.
propertyType__NoFilter by property type. Multiple values are combined with OR.
bedPreference__NoFilter by bed configuration. Multiple values are combined with OR.
onlinePayment__NoFilter by online payment options.
roomFacilities__NoFilter by in-room facilities. Multiple values are combined with OR.
reservationPolicy__NoFilter by reservation flexibility. Multiple values are combined with OR.
roomAccessibility__NoFilter by in-room accessibility features. Multiple values are combined with OR.
distanceFromCenter__NoFilter by distance from the destination center. Multiple values are combined with OR.
propertyAccessibility__NoFilter by property-level accessibility features. Multiple values are combined with OR.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does a good job: it reports that this is an external Booking.com search, that pagination is page-based with 25 results per page, that language and currency control locale, and it enumerates the returned hotel data. It does not cover possible errors, rate limits, or authorization requirements, but for a read-oriented search tool the behavioral disclosure is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but given the tool's 28 parameters and rich return payload, nearly every sentence adds useful information. It is front-loaded with the core search behavior and filters before covering output and use cases; only the list of use cases is somewhat optional, but it still helps an agent choose the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides a complete picture for selecting and invoking the tool: required search inputs, available filters, pagination, locale handling, output contents, and the relationship with the Booking Place endpoint. Since there is no output schema, the explicit enumeration of return fields is especially valuable and covers what an agent needs to understand the result shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all 28 parameters with 100% coverage, so the baseline is 3. The description restates filter categories and some behaviors (e.g., guest composition, price range, pagination), but it adds limited semantic value beyond what the schema already provides for each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Searches Booking.com for accommodations') and a specific resource (destination keyword, stay dates, guest composition). It also differentiates itself from the sibling tool by noting that the returned `hotelId` / URL can be fed into the Booking Place endpoint for full property details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong usage context: it is for travel-planning, price/inventory monitoring, competitor analysis, and lead generation, and it points to the Booking Place endpoint as a downstream step for full property details. However, it does not explicitly state when NOT to use this tool or offer a direct comparison between the search and place endpoints, so the alternative guidance is implied rather than fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedhasdata_booking_place_getBookingPlaceDetails
    • First observedhasdata_booking_search_getBookingSearchResults

TDQS

A4.3/5.0
Disambiguation5/5

Search and place details have clear boundaries: search accepts destination criteria and returns property lists, while place details consumes a single property URL and returns full property information. The overlap in returned pricing/rating fields is expected, not confusing.

Naming Consistency5/5

Both tool names follow the same hasdata_booking_<endpoint>_get... pattern, using place and search as distinct resource endpoints. The naming is consistent across the set, even though the operation suffix uses camelCase.

Tool Count3/5

Two tools is a minimal but reasonable set for a search-then-detail workflow. However, the count sits at the thin edge of the expected 3-15 tool range, leaving little room for exploration beyond the two core endpoints.

Completeness5/5

The tool surface covers the intended read-only Booking.com workflow: search for accommodations, then fetch a single property's full details. There are no dead ends for travel-planning or OTA data monitoring use cases.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search and book hotels globally with real-time pricing and inventory from over 2 million properties.
    81
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides two MCP servers: one for searching real-time flight prices via FlightAPI.io and another for hotel prices via Booking.com through RapidAPI, both accessible over Streamable HTTP.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HasData/booking-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server