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:
- Go to https://global.rollinggo.store
- Apply for an API key — you will receive a string starting with
mcp_ - 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`
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
- Open Claude Desktop
- Go to Settings (gear icon, bottom-left) → MCP Servers
- Click Add MCP Server
- Set Transport to HTTP
- Enter URL:
https://mcp.rollinggo.ai/mcp - 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"]
}
}
}`
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"
}
}
}
}`
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
- Open Cursor → Settings → MCP
- Click Add new global MCP server
- Name:
dida-hotel - Type:
http - 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"
}
}
}
}`
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"
}
}
}
}`
Verify
- Reopen VS Code.
- Open the Cline panel in the sidebar.
- Check that
dida-hotelappears in the MCP servers list with a green status indicator. - 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" }`
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
checkInDateis today or earlier,searchHotelsreturns 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" withplaceType: CITYreturns nothing — "Bund" is a landmark, not a city. UseplaceType: 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 get401 Unauthorizedon 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. WhengetHotelDetailreturnstotalPrice: 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.
searchHotelsreturns a reference display rate. Before showing a user a final price or attempting a booking, always callgetHotelDetailto get the live, bookable rate. The two can differ due to real-time availability changes.💡 Gotcha #7 — Codex needs
streamable-http, nothttp. If you also use OpenAI Codex, set"transport": "streamable-http"— the standardhttptransport will fail with401 Unauthorizedand 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
- Get your free API key: https://global.rollinggo.store/
- MCP endpoint: https://mcp.rollinggo.ai/mcp
Top comments (0)