Dida-Hotel-MCP-Global

by dida-ai

151 downloads Not rated yet

About

Official DIDA Hotel Booking MCP Server for global AI Agents. Search, compare, and book 2M+ hotels worldwide directly inside Cursor, Claude Desktop, Windsurf, and ChatGPT.

Explore

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Dida-Hotel-MCP-Global
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

If you have](https://github.com/DIDA-AI/Dida-Hotel-MCP-Global/blob/HEAD/mailto:[email protected])uvinstalled, run the server instantly:

uv run --with-requirements requirements.txt server.py

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "dida-hotel-mcp-global": {
            "server": {
                "command": "npx",
                "args": [
                    "-y",
                    "@didaai/hotelbooking-ai"
                ],
                "env": {
                    "DIDA_API_KEY": ""
                }
            }
        }
    }
}

McpServers

{
    "server": {
        "command": "npx",
        "args": [
            "-y",
            "@didaai/hotelbooking-ai"
        ],
        "env": {
            "DIDA_API_KEY": ""
        }
    }
}

Transport

"stdio"

Package

"@didaai/hotelbooking-ai"

Registry

"npm"

Official DIDA Hotel Booking MCP Server for global AI Agents. Search, compare, and book 2M+ hotels worldwide directly inside Cursor, Claude Desktop, Windsurf, and ChatGPT.

RollingGo Hotel MCP — Hotel Search & Booking

🏠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 bookover 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.

- Transport Protocol:streamable-http
- Pricing: Completely free, no usage limits
- Access Method: Self-service following this documentation; suitable for rapid prototyping and tool development.

RollingGo 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[email protected].

For Chinese usersor 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. TheDIDA Hotel MCPequips 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 Top3travel B2B platform,14years in the making, fully API-native end-to-end.

✅Global Hotel Network—2,000,000+ properties covering200+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 with40+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

- General-Purpose Agents: Equip any AI agent with native hotel booking. Users can compare, filter, and book—all within a single natural-language conversation.
- AI Travel Planners: Integrate hotel searching directly into natural language itineraries.
- Corporate Travel Assistants: Allow employees to query, compare, and book business travel within Slack, Teams, or custom chat interfaces.
- Transactional Demos: Validate end-to-end AI agent commerce and payment flows without heavy backend integration.

Integrate global hotel search and booking into your AI assistant in under5 minuteswith no coding required.
- Go to the
DIDA Partner Centerand sign up for a free key.
- You will receive an email containing: Credentials for your B2B Partner Center dashboard (to monitor orders, configure markup, and track earnings).

Recommended clients: Claude CLI, Codex, and Cursor. Other MCP-compatible clients (such as Kiro, Doubao, etc.) can be configured similarly.

{ "mcpServers": { "Dida-Hotel": { "url": "https://mcp.rollinggo.ai/mcp", "type": "http", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }
claude mcp add \ --transport http \ --header "Authorization: Bearer YOUR_API_KEY" \ Dida-Hotel \ https://mcp.rollinggo.ai/mcp

Config file location:.codex/config.jsonin the project root, or globally at~/.codex/config.json

{ "mcpServers": { "Dida-Hotel": { "url": "https://mcp.rollinggo.ai/mcp", "type": "streamable-http", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }

Config file location:.cursor/mcp.jsonin the project root, or globally at~/.cursor/mcp.json

{ "mcpServers": { "Dida-Hotel": { "url": "https://mcp.rollinggo.ai/mcp", "type": "streamable-http", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }

ReplaceYOUR_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.

curl -X POST https://mcp.rollinggo.ai/mcp \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "searchHotels", "arguments": { "originQuery": "Shanghai Bund five-star hotel", "place": "Shanghai Bund", "placeType": "Attraction", "checkInParam": { "checkInDate": "2026-06-01", "stayNights": 2 }, "filterOptions": { "starRatings": [5.0] }, "size": 3 } }, "id": 1 }'

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 thesearchHotelsTool and return a list of hotels.

{ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "searchHotels", "arguments": { "originQuery": "Shanghai Bund five-star hotel", "place": "Shanghai Bund", "placeType": "Attraction", "checkInParam": { "checkInDate": "2026-06-01", "stayNights": 2 }, "filterOptions": { "starRatings": [5.0] }, "size": 3 } }, "id": 1 }

Searching for "Shanghai Bund five-star hotel", 2 nights, returns:

{ "message": "Hotel search successful", "hotelInformationList": [ { "hotelId": 29529, "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...", "name": "Fairmont Peace Hotel on the Bund", "address": "No. 20 Nanjing East Road", "starRating": 5.0, "price": { "message": "Price query successful. Lowest price: 648, Currency: USD", "hasPrice": true, "currency": "USD", "lowestPrice": 648.0 }, "hotelAmenities": ["Bar", "Gym", "Pool", "SPA", "Parking", "WIFI"], "tags": ["SPA Service", "Resort Hotel", "Sports-Friendly Hotel"] } ] }

The server registers 3 core tools to handle the complete search-to-book lifecycle:

Find hotels by location, date, price, star rating, and tags.

- Input Parameters:

- 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, max20.
- checkInParam(object, optional): Check-in related parameters.
- filterOptions(object, optional): Filter parameters.
- hotelTags(object, optional): Tag / brand / budget filters.

- 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).

- distanceInMeter(number, optional): Straight-line distance from POI in meters. Defaults to2000when a POI is used.
- starRatings(number[], optional): Star rating range, defaults to[0.0, 5.0], step0.5.

- requiredTags(string[], optional): Required tags (hard constraint).
- preferredBrands(string[], optional): Preferred brands.
- maxPricePerNight(number, optional): Max budget per night (CNY).

{ "message": "Hotel search succeeded", "hotelInformationList": [ { "hotelId": 43615, "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...", "name": "Sunworld Dynasty Hotel Beijing", "brand": null, "address": "50 Wangfujing Street", "destinationId": "6140156", "latitude": 39.917748, "longitude": 116.412249, "distanceInMeters": 205, "starRating": 5.0, "price": { "message": "Price found, lowest: 626.0, currency: CNY", "hasPrice": true, "currency": "CNY", "lowestPrice": 626.0 }, "areaCode": "CN", "description": "...", "imageUrl": "https://image-cdn.RollingGo.com/...", "hotelAmenities": ["24h Front Desk", "WiFi"], "score": 1.0, "tags": ["Near Shopping Mall", "Free WiFi"] } ] }

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.

- Input Parameters:

- hotelId(number, optional): Hotel ID. Mutually exclusive withname; if both are provided,hotelIdtakes 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.

- 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 tocheckInDate + 1day if empty, malformed, or not after check-in.

- 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.

- countryCode(string, optional, default:US): ISO 3166-1 alpha-2 country code.
- currency(string, optional, default:USD): Currency code.

{ "success": true, "errorMessage": null, "hotelId": 43615, "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...", "name": "Sunworld Dynasty Hotel Beijing", "checkIn": "2026-03-05", "checkOut": "2026-03-06", "roomRatePlans": [ { "roomTypeId": 4984714, "roomName": "Superior Room", "roomNameCn": "高级客房", "ratePlanId": "7012072001634754626", "ratePlanName": "Superior Room King Bed, 1 King Bed", "bedType": 73, "bedTypeDescription": "Unknown", "currency": "CNY", "totalPrice": 0, "totalSalesRate": null, "inventoryCount": null, "isOnRequest": null, "recommendIndex": null, "cancellationPolicies": [ { "fromDate": "2026-03-02T10:00:00+08:00", "toDate": null, "amount": 634, "percent": null, "type": null, "description": null } ], "includedFees": null, "excludedFees": null, "metadata": null } ] }

Note:On failure, the response may contain an error message (e.g. "Failed to fetch pricing, please retry later") or structured error fields. TheroomRatePlansarray 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.

{ "tags": [ { "name": "Free WiFi", "category": "Core Amenities", "description": "Provides free WiFi" } ], "usageGuide": { "tagUsage": "Place tag names into hotelTags.preferredTags (preference), requiredTags (hard requirement), or excludedTags (exclusion)", "exampleRequest": "{...}" } }

- Brand & Ratings
- Specialty Highlights
- Core Amenities
- Family & Kids
- Service Details
- Service & Dining
- Transportation & Payment
- Views & Room Types
- Hotel Type
- Pricing

{ "originQuery": "Find 4-star+ hotels in Beijing for 2 nights", "place": "Beijing", "placeType": "city", "checkInParam": { "checkInDate": "2026-03-01", "stayNights": 2 }, "filterOptions": { "starRatings": [4.0, 5.0] }, "size": 5 }
{ "originQuery": "Find quality hotels in Beijing with free WiFi, budget under 1000 per night", "place": "Beijing", "placeType": "city", "hotelTags": { "requiredTags": ["Free WiFi"], "maxPricePerNight": 1000 }, "size": 5 }
{ "hotelId": 43615, "dateParam": { "checkInDate": "2026-03-05", "checkOutDate": "2026-03-06" }, "occupancyParam": { "adultCount": 2, "roomCount": 1 }, "localeParam": { "currency": "CNY", "countryCode": "CN" } }

Q1: The client doesn't show the Tool after configuration
- Check if the JSON configuration format is correct
- Confirm thaturlandtypeare correct
- Confirm that the API Key in theAuthorizationheader is correct
- Restart the client (changes only take effect after restart)

Q2: Returns 401 UnauthorizedInvalid or incorrectly formatted API Key:
- The API Key should start withmcp_
- InAuthorization: Bearer YOUR_API_KEY, there must be a space after Bearer
- Make sure there are no extra spaces or line breaks in the API Key

Q3: Returns 400 Bad RequestCommon when calling directly with cURL. Check that the Accept header is included:

-H "Accept: application/json, text/event-stream"

- Check ifplaceandplaceTypematch (e.g., "Shanghai Bund" should be paired with "Attraction")
- Relax filter criteria (remove star rating / tag restrictions)
- Confirm thatcheckInDateis not in the past

Q5: Prices don't match actual ratesSearch results show reference prices; real-time prices may vary. Currently, only queries are supported — online booking is not yet available.

- 📧Email:[email protected]
- 🐛Issues: Submit issues or feature requests on
GitHub Issues.
- 💬Discord Community: Join our
Discord Serveror scan the QR code below to connect with other developers, discuss integrations, and get real-time support from the DIDA team.

🌟 Dida Hotel MCP (OAuth) v2.3 Major Update

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[email protected].

- getHotelSearchTags— Get all enabled hotel filter tags
- searchHotels— Search global hotel list by conditions
- getHotelDetail— Get available room types and pricing for a hotel
- hotelPriceConfirm— Lock real-time final retail price for selected room

- createHotelBookingWithPaymentURL— RemovedalipayUrlSceneparameter; unifiedbookingResult.paymentUrlto generic checkout
- searchHotelOrders— Output simplified to 9 core fields (orderNo,hotelName,roomName,orderStatus,totalPrice, etc.) for list view; full detail moved to dedicated tool

- getHotelOrderDetail— Query full structured order details byorderNo, includinghotelConfirmationNo, guest list, bed type, contact phones, coordinates, payment/cancellation deadlines, and policy flags

- hotelConfirmationNo— Hotel-side real confirmation number for front-desk lookup
- stayInfo.bedTypeStr— Human-readable bed type description (e.g.,"1 King Bed (1.8m)")
- stayInfo.guestNames— Official pinyin/English guest name list for verification
- priceInfo.paymentDeadline— Payment deadline timestamp (YYYY-MM-DD HH:mm:ss) for countdown alerts
- policyInfo.freeCancelDeadline— Free cancellation deadline timestamp for refund window checks
- policyInfo.isCancelable— Whether free cancellation is still available at the current moment

Tool count:7 total (up from 6 in v2.2) — 1 new, 2 modified, 4 unchanged.

Method A: Run viauv(Recommended - Zero Config Setup)

If you haveuvinstalled, run the server instantly:

uv run --with-requirements requirements.txt server.py
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.