The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Hotelbooking AI listing page.
🏠 Apply Key · 🚀 Quick Start · 📚 Examples · 💬 Support · 🔍 Q&A · ✈ Powered by Dida · 💰Earn with RollingGo
This is an official MCP server empowers AI Agents to search, compare, and book over 2 Million hotels globally. Powered by DIDA (14 years, world's #3 travel distribution platform), this server bridges the gap between AI travel recommendations and real-world bookings.
| Service | Endpoint | Available Tools | Authentication |
|---|---|---|---|
| Hotel MCP | https://mcp.rollinggo.ai/mcp | searchHotels, getHotelDetail, getHotelSearchTags | Authorization: Bearer <YOUR_API_KEY> |
streamable-httpRollingGo MCP also offers an OAuth 2.0 Authorization Code flow, providing 7 tools including getHotelSearchTags, searchHotels, getHotelDetail, hotelPriceConfirm, searchHotelOrders, and more. This mode is designed for deep integration with enterprise-grade production applications and requires a business contact via contact@rollinggo.ai.
For Chinese users or workflows primarily targeting the mainland China market and Alipay payment systems, please refer to this version: Dida-hotel-MCP-CN
Traditional AI agents can only recommend hotels based on static training datasets. The DIDA Hotel MCP equips your LLM agent with direct, real-time transactional capabilities:
✅ Live Rates & Bookable Inventory — Zero-latency price verification; every result is instantly bookable.
✅ Supply Chain — The world's Top 3 travel B2B platform, 14 years in the making, fully API-native end-to-end.
✅ Global Hotel Network — 2,000,000+ properties covering 200+ countries/regions. 500+ suppliers covering every tier, from luxury chains to local boutiques.
✅ Direct Contracts — 110,000+ directly connected hotels with live price and inventory sync.
✅ Price Edge at Source — Priced upstream of OTAs; sharp rates on hot spots.
✅ Agent-Ready — Works with 40+ leading agents: Cursor, Claude Code, Codex, Windsurf, Copilot, and more.
✅ Earn your Revenue on Every MCP Call — Set country-specific markups, earn commission on every completed booking, and track your orders, earnings, and payouts in real time. Flexible withdrawals for both businesses and individual developers.
• Companies or individual developers building AI Agents
• Developers looking to integrate hotel booking capabilities into MCP Clients
• Developers building travel planning, business travel management, OTA, and lifestyle service agents
• Product teams seeking to validate AI Agent commercial transaction loops
• Individuals with needs for hotel search, price comparison, and price drop alerts******
Integrate global hotel search and booking into your AI assistant in under 5 minutes with no coding required.
Recommended clients: Claude CLI, Codex, and Cursor. Other MCP-compatible clients (such as Kiro, Doubao, etc.) can be configured similarly.
Create .mcp.json in your project root:
Or add directly via the command line:
Config file location: .codex/config.json in the project root, or globally at ~/.codex/config.json
Config file location: .cursor/mcp.json in the project root, or globally at ~/.cursor/mcp.json
Replace
YOUR_API_KEYwith your actual API Key.
Note: cURL must include
-H "Accept: application/json, text/event-stream", otherwise the server will return a 400 error.
Once configured, simply tell your AI assistant:
"Find me a five-star hotel near the Shanghai Bund for a stay starting the day after tomorrow."
The AI will automatically call the searchHotels Tool and return a list of hotels.
Searching for "Shanghai Bund five-star hotel", 2 nights, returns:
| Hotel | Stars | Lowest Price/Night | Distance to Bund |
|---|---|---|---|
| Fairmont Peace Hotel Shanghai | ⭐⭐⭐⭐⭐ | $648 | 124m |
| The Peninsula Shanghai | ⭐⭐⭐⭐⭐ | $940 | 252m |
Official Docs | Dida MCP Tools
The server registers 3 core tools to handle the complete search-to-book lifecycle:
Find hotels by location, date, price, star rating, and tags.
originQuery (string, required): User's raw text request (e.g., "Find boutique hotels in Tokyo under $200").place (string, required): Specific destination, attraction, or airport name.placeType (string, required): Location type (city, airport, point_of_interest, hotel, etc.). Supported values: city, airport, point_of_interest, train_station, subway_station, hotel, district/county, detailed address.countryCode (string, optional): ISO 3166-1 alpha-2 country code, e.g. CN, US.size (number, optional, default: 5): Number of hotels to return, max 20.checkInParam (object, optional): Check-in related parameters.filterOptions (object, optional): Filter parameters.hotelTags (object, optional): Tag / brand / budget filters.checkInParam fields:
adultCount (number, optional, default: 2): Adults per room.checkInDate (string, optional, format: YYYY-MM-DD): Check-in date. If omitted, in the past, or malformed, defaults to tomorrow.stayNights (number, optional, default: 1): Number of nights (max 28).filterOptions fields:
distanceInMeter (number, optional): Straight-line distance from POI in meters. Defaults to 2000 when a POI is used.starRatings (number[], optional): Star rating range, defaults to [0.0, 5.0], step 0.5.hotelTags fields:
requiredTags (string[], optional): Required tags (hard constraint).preferredBrands (string[], optional): Preferred brands.maxPricePerNight (number, optional): Max budget per night (CNY).Note:
priceis an object, not a number. Fields may be missing ornulldepending on city/supply source.
Fetch real-time room types, dynamic pricing, inventory, and cancellation policies for a selected hotel.
hotelId (number, optional): Hotel ID. Mutually exclusive with name; if both are provided, hotelId takes priority.name (string, optional): Hotel name (fuzzy match).dateParam (object, optional): Check-in / check-out date parameters.occupancyParam (object, optional): Guest count and room count parameters.localeParam (object, optional): Country and currency parameters.dateParam fields:
checkInDate (string, optional, format: YYYY-MM-DD): Check-in date. Defaults to tomorrow if empty, malformed, or in the past.checkOutDate (string, optional, format: YYYY-MM-DD): Check-out date. Defaults to checkInDate + 1 day if empty, malformed, or not after check-in.occupancyParam fields:
adultCount (number, optional, default: 2): Adults per room.childCount (number, optional, default: 0): Children per room.childAgeDetails (number[], optional): Child ages, e.g. [3, 5].roomCount (number, optional, default: 1): Number of rooms.localeParam fields:
countryCode (string, optional, default: US): ISO 3166-1 alpha-2 country code.currency (string, optional, default: USD): Currency code.Note: On failure, the response may contain an error message (e.g. "Failed to fetch pricing, please retry later") or structured error fields. The
roomRatePlansarray can be long — consider paginating or limiting display on the client side.
Retrieve metadata containing all filterable tag names (e.g., "Free WiFi", "Gym", "Kid-Friendly") to refine search filtering. Suitable for local caching and client-side intent mapping.
Common tag categories:
Q1: The client doesn't show the Tool after configuration
url and type are correctAuthorization header is correctQ2: Returns 401 Unauthorized Invalid or incorrectly formatted API Key:
mcp_Authorization: Bearer YOUR_API_KEY, there must be a space after BearerQ3: Returns 400 Bad Request Common when calling directly with cURL. Check that the Accept header is included:
Q4: searchHotels returns empty results
place and placeType match (e.g., "Shanghai Bund" should be paired with "Attraction")checkInDate is not in the pastQ5: Prices don't match actual rates Search results show reference prices; real-time prices may vary. Currently, only queries are supported — online booking is not yet available.
v2.3 optimizes the order query structure and adds multiple order detail fields to help Agents better handle check-in, payment, and cancellation scenarios. Note: This update applies to the OAuth integration version only, not the API Key version documented herein. The OAuth version requires business onboarding contact@rollinggo.ai.
getHotelSearchTags — Get all enabled hotel filter tagssearchHotels — Search global hotel list by conditionsgetHotelDetail — Get available room types and pricing for a hotelhotelPriceConfirm — Lock real-time final retail price for selected roomcreateHotelBookingWithPaymentURL — Removed alipayUrlScene parameter; unified bookingResult.paymentUrl to generic checkoutsearchHotelOrders — Output simplified to 9 core fields (orderNo, hotelName, roomName, orderStatus, totalPrice, etc.) for list view; full detail moved to dedicated toolgetHotelOrderDetail — Query full structured order details by orderNo, including hotelConfirmationNo, guest list, bed type, contact phones, coordinates, payment/cancellation deadlines, and policy flagshotelConfirmationNo — Hotel-side real confirmation number for front-desk lookupstayInfo.bedTypeStr — Human-readable bed type description (e.g., "1 King Bed (1.8m)")stayInfo.guestNames — Official pinyin/English guest name list for verificationpriceInfo.paymentDeadline — Payment deadline timestamp (YYYY-MM-DD HH:mm:ss) for countdown alertspolicyInfo.freeCancelDeadline — Free cancellation deadline timestamp for refund window checkspolicyInfo.isCancelable — Whether free cancellation is still available at the current momentTool count: 7 total (up from 6 in v2.2) — 1 new, 2 modified, 4 unchanged.
uv (Recommended - Zero Config Setup)If you have uv installed, run the server instantly:
The local server will run on http://localhost:8000/mcp, automatically forwarding requests to the secure DIDA global API nodes.
mcp_.Authorization: Bearer mcp_your_key_hereThis project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by the DIDA Team