DEV Community

iamTheDev
iamTheDev

Posted on

Hotel MCP Integration Guide: Connect Claude, Cursor & Cline in 5 Minutes

If you have been holding off on MCP because it sounds like another integration rabbit hole — good news. Connecting a hotel MCP server to your AI client takes about five minutes, and you do not write a single line of application code. This guide walks through setting up RollingGo Hotel MCP on three clients — Claude Desktop, Cursor, and Cline — then covers the gotchas I hit so you do not have to.

What You Are Connecting To

RollingGo Hotel MCP is an open-source MCP server. It gives your AI agent access to real-time hotel data: 200M+ properties globally, 110K+ direct-contracted hotels, 500+ suppliers across 100+ countries.

The server exposes five tools:

  • searchHotels — Search hotels by location, date, star rating, guest count, and tags. Returns candidates with display rates.
  • getHotelDetail — Fetch live room types, rate plans, cancellation policies, and child policies for a specific hotel.
  • getHotelSearchTags — Return all valid search tags (brand, amenities, family-friendly, etc.) for use with searchHotels.
  • searchAirports — Look up airport and city codes by keyword — supports city name, airport name, or IATA code.
  • searchFlights — Query flight options by date, route, passenger count, and cabin class. One-way and round-trip supported.
Tool What it does
searchHotels Search hotels by location, date, star rating, guest count, and tags. Returns candidates with display rates.
getHotelDetail Fetch live room types, rate plans, cancellation policies, and child policies for a specific hotel.
getHotelSearchTags Return all valid search tags (brand, amenities, family-friendly, etc.) for use with searchHotels.
searchAirports Look up airport and city codes by keyword — supports city name, airport name, or IATA code.
searchFlights Query flight options by date, route, passenger count, and cabin class. One-way and round-trip supported.

Auth is OAuth 2.1 based. You get an API key in mcp_xxx format — no enterprise credentials, no business development calls, no minimum volume. The free tier comes with a permanent call quota.

Step 0: Get Your API Key

Before touching any config file, grab your key:

  1. Go to https://global.rollinggo.store
  2. Apply for an API key — you will receive a string starting with mcp_
  3. Keep it handy. You will paste it into config files as a Bearer token.

Your two endpoints:

`Hotel MCP:  https://mcp.rollinggo.ai/mcp
Flight MCP: https://mcp.rollinggo.ai/mcp/flight`
Enter fullscreen mode Exit fullscreen mode

Everything below uses the hotel endpoint. The flight endpoint follows the same pattern.


Client 1: Claude Desktop

Claude Desktop has native MCP support. You can configure it through the UI or by editing the config file directly.

Option A — UI Path

  1. Open Claude Desktop
  2. Go to Settings (gear icon, bottom-left) → MCP Servers
  3. Click Add MCP Server
  4. Set Transport to HTTP
  5. Enter URL: https://mcp.rollinggo.ai/mcp
  6. Add an Authorization header: Bearer mcp_your_key_here

Option B — Config File

Edit your claude_desktop_config.json (on macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; on Windows: %APPDATA%\Claude\claude_desktop_config.json):

Claude Desktop — claude_desktop_config.json

`{
  "mcpServers": {
    "dida-hotel": {
      "command": "npx",
      "args": ["-y", "@rollinggo/mcp-hotel"]
    }
  }
}`
Enter fullscreen mode Exit fullscreen mode

Or use the remote HTTP endpoint directly (no npx needed):

Claude Desktop — remote HTTP transport

`{
  "mcpServers": {
    "dida-hotel": {
      "type": "http",
      "url": "https://mcp.rollinggo.ai/mcp",
      "headers": {
        "Authorization": "Bearer mcp_your_key_here"
      }
    }
  }
}`
Enter fullscreen mode Exit fullscreen mode

Verify

Restart Claude Desktop, then ask in a new conversation:

"Find me a hotel near West Lake in Hangzhou, checking in August 20 for two nights."

If Claude calls searchHotels and returns real hotel results, you are connected. If it says it cannot access hotel tools, check the MCP Servers panel for error status.


Client 2: Cursor

Cursor supports MCP through its settings UI or a project-level config file.

Option A — UI Path

  1. Open Cursor → SettingsMCP
  2. Click Add new global MCP server
  3. Name: dida-hotel
  4. Type: http
  5. URL: https://mcp.rollinggo.cn/mcp

Option B — Config File

Create or edit .cursor/mcp.json in your project root (or in ~/.cursor/mcp.json for global config):

Cursor — .cursor/mcp.json

`{
  "mcpServers": {
    "dida-hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "headers": {
        "Authorization": "Bearer mcp_your_key_here"
      }
    }
  }
}`
Enter fullscreen mode Exit fullscreen mode

Verify

Open Cursor's chat panel, switch to Agent mode, and ask it to search for hotels. You should see a tool-use indicator showing searchHotels being invoked. Cursor's MCP integration is particularly flexible — you can scope tools to specific projects by placing the config in the project directory.


Client 3: Cline (VS Code Extension)

Cline is a VS Code extension (formerly Claude Dev) that supports MCP servers through its own settings file. The setup is similar to Cursor but uses Cline's dedicated config path.

Config File Location

Cline stores its MCP settings separately from VS Code's main settings:

  • macOS / Linux:~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Windows:%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json

💡 Gotcha #1 — Do not edit this file while VS Code is running. Cline reads the settings on startup and may overwrite your changes if you edit while the extension is active. Close VS Code, edit the file, then reopen.

Configuration

Cline — cline_mcp_settings.json

`{
  "mcpServers": {
    "dida-hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer mcp_your_key_here"
      }
    }
  }
}`
Enter fullscreen mode Exit fullscreen mode

Verify

  1. Reopen VS Code.
  2. Open the Cline panel in the sidebar.
  3. Check that dida-hotel appears in the MCP servers list with a green status indicator.
  4. Ask Cline: "Search for hotels near Tokyo Station for June 20, two nights, with free WiFi."

If the tool indicator shows searchHotels firing, you are live.


Quick Test: A Real Scenario

Here is an actual test I ran to make sure everything works end-to-end:

Prompt: "Find hotels within a 10-minute walk of Tokyo Station with free WiFi, checking in June 20 for two nights."

The agent called two tools in sequence:

Agent call chain

`1. searchHotels
   place: "Tokyo Station"
   placeType: "TRAIN_STATION"
   checkInParam: { checkInDate: "2026-06-20", stayNights: 2 }
   filterOptions: { distanceInMeter: 800 }
   hotelTags: { preferredTags: ["Free WiFi"] }

2. getHotelDetail
   hotelId: <returned from step 1>
   dateParam: { checkInDate: "2026-06-20", checkOutDate: "2026-06-22" }`
Enter fullscreen mode Exit fullscreen mode

Result: hotel name, star rating, walking distance to Tokyo Station, WiFi tag, and live room-type pricing — all inside the chat, no browser tabs opened, no travel app launched.


Gotchas I Hit So You Do Not Have To

💡 Gotcha #2 — Past dates return empty results, silently. If your checkInDate is today or earlier, searchHotels returns an empty array — no error message. I spent twenty minutes debugging before realizing the system date had drifted. Always verify your dates are in the future.

💡 Gotcha #3 —placeandplaceTypemust match. Searching "Shanghai Bund" with placeType: CITY returns nothing — "Bund" is a landmark, not a city. Use placeType: ATTRACTION. The eight valid place types are: city, airport, attraction, train station, metro station, hotel, district, and detailed address. Pick the wrong one and you get zero results with no explanation.

💡 Gotcha #4 — Bearer token spacing. The Authorization header must be Bearer mcp_xxx — exactly one space between "Bearer" and the key. Some config UIs auto-trim or auto-add spaces. If you get 401 Unauthorized on every call, check the header value character-by-character. This is the single most common failure I have seen.

💡 Gotcha #5 —totalPrice: 0does not mean free. When getHotelDetail returns totalPrice: 0, it means the rate needs further querying — not that the room is free. Do not display "Free stay" to your users. Filter out zero-price results or show them as "Price on request."

💡 Gotcha #6 — Display rate vs. bookable rate. searchHotels returns a reference display rate. Before showing a user a final price or attempting a booking, always call getHotelDetail to get the live, bookable rate. The two can differ due to real-time availability changes.

💡 Gotcha #7 — Codex needsstreamable-http, nothttp. If you also use OpenAI Codex, set "transport": "streamable-http" — the standard http transport will fail with 401 Unauthorized and no helpful error. This took me the longest to track down; I eventually found the answer buried in a GitHub issue.


Who Should Actually Connect This?

Two profiles benefit most:

  • AI agent developers building travel or trip-planning tools. You get real hotel inventory without scraping, without signing supplier contracts, and without maintaining a data pipeline. The supply chain is already wired up — you just connect to it.
  • Developers who connected an MCP server and found the data unreliable. Use RollingGo Hotel MCP as a baseline for comparison. 110K+ direct-contracted hotels means the inventory is verifiable — you can cross-check rates against supplier-direct data.

If you are building a general-purpose chatbot whose users never ask about hotel prices, this is probably not the tool for you. But if your users ever say "I have a business trip to Beijing — where should I stay?" — this is exactly the capability that turns a generic LLM into a useful travel assistant.

Summary

The entire setup is three steps: get a key, paste a JSON config, restart your client. No SDK installation, no build step, no deployment pipeline. The MCP protocol handles tool discovery, and your AI client handles the rest.

  • Claude Desktop — Config location: claude_desktop_config.json or UI. Transport: http.
  • Cursor — Config location: .cursor/mcp.json or UI. Transport: http.
  • Cline — Config location: cline_mcp_settings.json. Transport: http.
Client Config location Transport
Claude Desktop claude_desktop_config.json or UI http
Cursor .cursor/mcp.json or UI http
Cline cline_mcp_settings.json http

Real-world traction as of this writing: 760K+ MCP calls and 2,500+ downloads. That is not a demo — that is a live, working integration that developers are actively building on.


Resources

Top comments (0)