MCP Booking
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP BookingSearch hotels in Paris for June 1-5, 2 adults"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@striderlabs/mcp-booking
MCP server for Booking.com — search hotels, check availability, manage reservations, and more via AI agents.
By Strider Labs
Overview
This MCP (Model Context Protocol) server gives AI agents the ability to interact with Booking.com using browser automation (Playwright). It supports 14 tools covering the full hotel booking workflow.
Related MCP server: Amadeus Hotel API MCP Server
Tools
Tool | Description |
| Check login/session status |
| Open a browser window to sign in (non-blocking; returns immediately) |
| Check progress of an in-flight |
| Clear saved session and cookies |
| Search hotels by destination, dates, guests, rooms, and amenities (pets, parking, pool, …) |
| Get property details (amenities, description, policies, structured |
| Check room availability for specific dates |
| Get pricing for a property |
| Filter last search by price, rating, amenities |
| Sort last search by price/rating/distance/reviews |
| Save to wishlist/favorites |
| Get a "continue in your browser" booking link (does not place the booking) |
| List current/upcoming reservations |
| Cancel a booking (requires |
| Get guest reviews for a property |
Requirements
Node.js 18+
A Booking.com account (for bookings, reservations, and wishlist)
Installation
npm install @striderlabs/mcp-bookingOr install Playwright browsers after install:
npx playwright install chromiumConfiguration
Add to your MCP config (e.g. ~/.claude/mcp_servers.json):
{
"mcpServers": {
"booking": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-booking"]
}
}
}Authentication
The server uses cookie-based session persistence. Login is non-blocking (two steps) so it won't hang your MCP client while you wait on an emailed verification code:
Run
booking_login. It opens a visible browser window at the Booking.com sign-in page and returns immediately.Sign in in that window (including any email/SMS code or 2FA/CAPTCHA). A background poller watches for completion.
Run
booking_login_statusto check progress — it reportsin_progress,success,failed, oridle. Poll it until it's no longerin_progress.On
successthe session is captured and saved automatically;booking_statuswill then show you as logged in.
The background poller waits up to ~10 min by default; pass timeoutSeconds to
booking_login to extend it (up to 30 min) if a verification code is slow to
arrive. If the window is closed or the deadline passes before sign-in completes,
the status becomes failed and the window is cleaned up — just call
booking_login again.
Because login drives a real browser window, it requires Google Chrome installed and a desktop display — it cannot run on a headless server.
Cookie storage
Session cookies are stored at
~/.strider/booking/cookies.json, scoped to Booking.com domains only (unrelated third-party/tracking cookies are not persisted).The config directory (
0700) and the cookie/session files (0600) are created with owner-only permissions. The files are not encrypted — protect your home directory accordingly.booking_logoutdeletes the saved cookies and session.
Usage Examples
Search hotels
booking_search(destination="Paris", checkIn="2026-06-01", checkOut="2026-06-05", adults=2, rooms=1)Search with flexible dates (±N days)
Use flex_window to widen the search around your exact dates, like the Android app "I'm flexible" feature:
# ±2 days flexibility around July 10-13
booking_search(destination="Paris", checkIn="2026-07-10", checkOut="2026-07-13", flex_window=2)
# ±7 days (full week flexibility)
booking_search(destination="Paris", checkIn="2026-07-10", checkOut="2026-07-13", flex_window=7)flex_window values: 0 (exact, default), 1 (±1 day), 2 (±2 days), 3 (±3 days), 7 (±7 days).
Understanding price fields
The price returned by booking_search is usually the total stay price (not per-night) on multi-night searches:
pricePerNight/totalPrice: same numeric value — the price shown on the Booking.com cardpriceIsTotal:truewhen the card shows total stay price;falseonly when explicitly labelled "per night"priceNote: raw text from the card (e.g. "CHF 450 for 3 nights") — use this to verify contextcurrency: auto-detected from the card (CHF, EUR, USD, etc.)
For multi-night stays, divide totalPrice by number of nights to get the actual nightly rate.
Search by amenities (pets, parking, pool, …)
Amenity filters are applied server-side via Booking.com's nflt parameter, so results only contain matching properties.
# Pet-friendly hotels with parking and a pool
booking_search(destination="Rome", checkIn="2026-06-01", checkOut="2026-06-05", amenities=["pets", "parking", "pool"])Supported amenity keys: pets, parking, pool, restaurant, room_service, front_desk_24h, fitness, non_smoking, airport_shuttle, family_rooms, ev_charging, spa, hot_tub, sauna, free_wifi, air_conditioning.
For a single property, booking_get_property returns a structured facilitySummary (e.g. petsAllowed, parking, pool, spa) where true = offered/allowed, false = not allowed, null = not mentioned on the page.
Note: amenity → filter codes are reverse-engineered from Booking.com's UI (undocumented but stable). If a filter behaves unexpectedly, supply an exact chip via
rawNflt(e.g.rawNflt="hotelfacility=4;popular_activities=2").
Filter and sort results
booking_filter_results(maxPrice=200, minRating=8.0, freeCancellation=true)
booking_sort_results(sortBy="rating")Check availability and prices
booking_check_availability(propertyUrl="https://www.booking.com/hotel/fr/...", checkIn="2026-06-01", checkOut="2026-06-05")
booking_get_prices(propertyUrl="...", checkIn="2026-06-01", checkOut="2026-06-05")Book a room
booking_book does not place a booking. Booking.com checkout is a multi-step
wizard (room selection → guest contact details → payment) that can't be reliably
completed via automation, so this returns a bookingUrl to finish in a browser.
# Returns a bookingUrl (property page with dates/occupancy pre-filled,
# opening on the room list with "Reserve" buttons) to complete in a browser.
booking_book(propertyUrl="...", checkIn="2026-06-01", checkOut="2026-06-05", adults=2)
# Optional: also best-effort capture a deeper checkoutUrl with the first
# available room pre-selected (still stops before any guest/payment details).
booking_book(propertyUrl="...", checkIn="2026-06-01", checkOut="2026-06-05", adults=2, advanceToCheckout=true)Manage reservations
# List current/upcoming reservations. Each result's reservationId is the trip id
# (or "<tripId>-<n>" for a specific booking within a multi-booking trip).
booking_get_reservations()
# Cancel walks Booking.com's multi-step flow: confirmation page -> "Cancel your
# booking" -> reason survey (Step 1 of 2) -> final confirm (Step 2). The final
# step is irreversible, so it only runs with confirm=true.
booking_cancel_reservation(reservationId="308612662158023") # no-op preview
booking_cancel_reservation(reservationId="308612662158023", confirm=true) # actually cancelsSafety
booking_booknever places a booking — it returns a link to complete checkout (contact details + payment) in a browserbooking_cancel_reservationrequiresconfirm=true; without it, it returns a no-op warning and never opens a browser. With it, it drives the multi-step cancel flow (reason survey + final confirm) and the last step is irreversible
Development
npm install
npm run build
npm startLicense
MIT — Strider Labs
Available Tools
15 toolsbooking_bookA
Get a 'continue in your browser' link to book a room. Booking.com checkout is a multi-step wizard (room selection, guest contact details, then payment) that cannot be reliably completed via automation, so this NEVER places a booking. It returns a bookingUrl (the property page with dates/occupancy pre-filled, opening directly on the room list with Reserve buttons) for the user to finish by hand. Set advanceToCheckout=true to also best-effort capture a deeper checkoutUrl with the first available room pre-selected.
Inputs: checkIn (required), checkOut (required), propertyUrl (required), rooms, +2 more.
booking_cancel_reservationA
Cancel an existing reservation. Walks Booking.com's multi-step cancel flow (confirmation page, reason survey, final confirm). IMPORTANT: Set confirm=true only with explicit user confirmation — the final step is irreversible. Without confirm=true it returns a no-op warning and never opens a browser.
Inputs: reservationId (required), confirm.
booking_check_availabilityA
Check room availability for a specific property and date range. Returns available room types and options.
Inputs: checkIn (required), checkOut (required), propertyUrl (required), rooms, +1 more.
booking_filter_resultsA
Client-side filter over the most recent booking_search results by price, review score, star rating, free cancellation, breakfast, or a name/location keyword. Returns a filtered subset. To filter by facilities like pets, parking, or pool, use the amenities argument on booking_search instead (filtered server-side).
Inputs: stars, keyword, maxPrice, minPrice, +3 more.
booking_get_pricesB
Get current prices for a property for specific dates. Returns room options with pricing details and the lowest available price.
Inputs: checkIn (required), checkOut (required), propertyUrl (required), rooms, +1 more.
booking_get_propertyA
Get detailed information about a specific property, including amenities, description, photos, raw policies, and a structured facilitySummary (parking, pool, fitness, spa, airConditioning, freeWifi, etc.). Facility fields are true when the amenity is found on the page or null when not mentioned. petsAllowed is the only tri-state field: true (allowed), false (explicitly not allowed), or null (not mentioned); petsPolicy carries the raw pet-policy text when present.
Inputs: propertyUrl (required).
booking_get_reservationsA
Get all current and upcoming reservations from your Booking.com account. Requires being logged in.
Inputs: no named parameters.
booking_get_reviewsA
Get guest reviews for a property, including scores, comments, and reviewer details.
Inputs: propertyUrl (required), maxReviews.
booking_loginA
Start an interactive Booking.com login. Opens a VISIBLE browser window at the sign-in page and returns IMMEDIATELY (non-blocking) — sign-in runs in the background, so this won't hang the client while the user waits on an emailed/SMS code, 2FA or CAPTCHA. The user completes sign-in in that window, then you call booking_login_status to confirm the session was captured. Requires Google Chrome and a desktop display (cannot run on a headless server).
Inputs: timeoutSeconds.
booking_login_statusA
Check the progress of an interactive login started with booking_login. Returns status 'in_progress' (window still open, awaiting sign-in), 'success' (session captured and saved — other booking_* tools will reuse it), 'failed' (window closed or timed out before completing), or 'idle' (no login started). Poll this after calling booking_login until the status is no longer 'in_progress'.
Inputs: no named parameters.
booking_logoutA
Clear saved Booking.com session and cookies. Use this to log out or reset authentication state.
Inputs: no named parameters.
booking_save_propertyA
Save a property to your Booking.com wishlist/favorites. Requires being logged in.
Inputs: propertyUrl (required).
booking_searchA
Search for hotels and properties on Booking.com. Returns property names, ratings, prices, and availability indicators. Optionally filter server-side by amenities/facilities (e.g. pets, parking, pool) so only matching properties are returned.\n\nPRICE FIELDS: pricePerNight and totalPrice both carry the same numeric value extracted from the card. On multi-night searches this is typically the TOTAL stay price (not per-night). Check priceIsTotal (true = total, false = explicitly per-night) and priceNote (raw card text) for context. currency is auto-detected from the card text when visible (e.g. 'CHF', 'EUR', 'USD'). For accurate per-night pricing on multi-night stays, divide totalPrice by number of nights.
Inputs: checkIn (required), checkOut (required), destination (required), rooms, +6 more.
booking_sort_resultsA
Sort the most recent booking_search results. Options: price_asc, price_desc, rating, distance, reviews.
Inputs: sortBy (required).
booking_statusA
Check Booking.com login status and session info. Use this to verify authentication before performing other actions.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 15 tools
Every tool has a clearly distinct purpose: search, filter, sort, check availability, get prices, get property details, book (with caveat), cancel, get reservations, save property, login/logout/status. No two tools overlap in functionality; each targets a specific action or resource.
Tools consistently use the 'booking_' prefix followed by a verb_noun pattern (e.g., booking_cancel_reservation, booking_get_prices). Minor inconsistency: 'booking_status' uses a noun alone (no verb), which deviates from the predominant verb-first pattern.
With 15 tools covering search, filtering, pricing, property details, reservations, authentication, and wishlist management, the count is well-scoped for a booking service. Each tool has a clear role, neither too few nor too many for the domain.
The tool set covers most of the booking lifecycle but has a notable gap: 'booking_book' explicitly does not complete a booking (only provides a link for manual finishing). This means the primary action is missing from automation. Otherwise, CRUD-like operations (search, get, cancel, save) are present.
Maintenance
Related MCP Connectors
Live hotel search and booking for AI agents in DACH, the UK and 10 US cities.
Booking.com stays by destination and dates, and full property details, as structured JSON.
Travel tools for AI agents: plan and edit real trips, search stays and tours, import travel videos.
Web scraping and automation for AI agents: live prices, quotes, bookings, anything behind a login.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to search, browse, and book hotels from a database of 2 million properties worldwide. Provides comprehensive hotel search capabilities with location lookup, filtering by amenities, detailed property information, and integrated booking functionality.642 npm1ISC
- AlicenseAqualityDmaintenanceEnables AI assistants to search for and book hotels via the Amadeus Travel API, providing hotel listings, offers, and booking capabilities.41MIT
- AlicenseNot gradedqualityDmaintenanceEnables real-time hotel search and pricing data from Booking.com for AI agents and Claude.5 npm2ISC

DIDA Hotel MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to search, compare, and book hotels with real-time pricing and availability, supporting multiple location types, star ratings, and price filters.12MIT