DEV Community

iamTheDev
iamTheDev

Posted on

Hotel MCP in Practice: Corporate Travel Admin's Integration & Price Comparison Guide

I'm the travel integration lead at a B2B company. We needed to add hotel booking to our internal AI workspace's "travel assistant." This article documents the full integration process using RollingGo Hotel MCP, backed by Dida Holdings.

In corporate travel, the workflow goes like this: employee receives a travel assignment (sales visit / client meeting / cross-city project) → searches hotels by destination → compares a few options → sometimes checks the "corporate rate" separately (because corporate rates don't appear in third-party platform search results) → books at market rate or via internal OA corporate rate approval.

Real Results First

MCP response card (tested data):

`┌──────────────────────────────────────────────────────────┐
│ 🏨 Corporate Hotel Search · San Francisco SoMa District  │
│ ──────────────────────────────────────────────────────── │
│ Trigger: Employee types in Slack workspace:              │
│ "Find me a business hotel near SoMa, tomorrow,           │
│  1 night, $100-200 range"                                │
│ Tool: searchHotels (Hotel MCP)                            │
│ Response: ≤ 2 seconds                                    │
│                                                           │
│ Candidates (by price ascending)                          │
│ ① Holiday Inn Express SF SoMa                            │
│    ⭐⭐⭐ | 480m from SoMa | $119/night                   │
│ ② Hampton Inn SF Downtown                                │
│    ⭐⭐⭐ | 1.2km from SoMa | $149/night                  │
│ ③ Courtyard by Marriott SF SoMa                          │
│    ⭐⭐⭐⭐ | 600m from SoMa | $179/night                  │
│                                                           │
│ Corporate rate comparison (internal data, not from MCP): │
│ · Holiday Inn: Market $119 | Corp $94 | Save $25         │
│ · Hampton: Market $149 | Corp $119 | Save $30            │
│ · Courtyard: Market $179 | Corp $149 | Save $30          │
│                                                           │
│ 📌 Requester: Sales-John | Stay: 6/26-6/27 (1 night)    │
│ 💰 Corp standard: ≤$200/night (all 3 qualify)            │
│ 🔗 [View Room Details] [Check Corp Rate] [More Options]  │
└──────────────────────────────────────────────────────────┘`
Enter fullscreen mode Exit fullscreen mode

Selection: 3 Hard Conditions

  1. Must have a standard MCP endpoint — not just an API key. Our workspace already supports MCP (Claude CLI / Codex / Cursor), so connecting standard MCP saves 70% of integration code vs. HTTP API calls.
  2. Must cover global hotels — not just domestic. We handle 5–8 international bookings/month (client receptions, overseas trade shows).
  3. Must have structured room type / cancellation policy fields — not just "available/unavailable." Corporate rate comparison requires knowing room type, breakfast, and cancellation policy to match reimbursement rules.

RollingGo Hotel MCP was the solution that satisfied all three, with two additional corporate-friendly capabilities:

  • MCP endpoint standardization + multi-client support (copy-paste config for Claude CLI / Cursor / Codex)
  • Real hotel data + global coverage (tested: distances and market prices match what employees see on booking platforms)

Interface Capabilities

searchHotels — Search by location, star rating, budget, tags. Key parameters: originQuery (raw natural language), place, placeType, checkInParam (date, nights, adults), filterOptions (distance, star ratings), hotelTags (preferred/required/excluded tags, brands, max price).

getHotelDetail — Real-time room types and prices. Returns room name, total price, cancellation policies, breakfast. The totalPrice: 0 doesn't mean "free" — it means "price needs further inquiry."

getHotelSearchTags — Tag dictionary. Tags are case-sensitive and must match exactly what this tool returns.

Deployment: 5 Steps

Step 1: Register at global.rollinggo.store — 1–3 minutes auto-approval, no enterprise credentials needed.

Step 2: Get API key (format: mcp_xxxxx...). Save securely — shown only once.
Get your free API key: https://global.rollinggo.store/
Step 3: Configure MCP client:

`// Claude CLI: .mcp.json
{
  "mcpServers": {
    "RollingGo-Hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "type": "streamable-http",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}`
Enter fullscreen mode Exit fullscreen mode

Step 4: Restart client. Verify tools appear.

Step 5: Test: "Find me a hotel near San Francisco SoMa, tomorrow night, $100-200 range, 3-star business hotel."

cURL test — must include Accept header:

`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":"SoMa business hotel","place":"San Francisco SoMa","placeType":"attraction","checkInParam":{"checkInDate":"2026-06-26","stayNights":1},"filterOptions":{"starRatings":[3.0,3.5,4.0],"maxPricePerNight":200},"size":3}},"id":1}'`
Enter fullscreen mode Exit fullscreen mode

Corporate Rate Comparison

MCP returns market prices only. Corporate rate comparison is an internal capability, independent of MCP:

`Employee natural language request
 ↓
Agent parses → place / placeType / dates / nights
 ↓
Call searchHotels (Hotel MCP) → candidates + market prices
 ↓
Call internal OA API (independent of MCP) → corporate rates
 ↓
Agent merges: market price vs. corporate rate`
Enter fullscreen mode Exit fullscreen mode

Pitfalls (5 Real Ones)

Pitfall 1: API Key with trailing space → 401. Fix: Use environment variables, never manual copy-paste.

Pitfall 2: place/placeType mismatch → Empty results. place: "San Francisco Fisherman's Wharf" must pair with placeType: "attraction", not "city". Fix: Hardcode POI type → placeType mapping in agent.

Pitfall 3: cURL missing Accept header → 400 Bad Request. Fix: Always include -H "Accept: application/json, text/event-stream".

Pitfall 4: Tools not appearing after config → Client not restarted. Fix: Restart client after config changes.

Pitfall 5: Persistent 401 → Hidden newline in API key. Fix: Use $(<file) to auto-trim, or head -c 50 to inspect.

Cost Comparison

  • CostSelf-build: Not feasible; Outsourcing: $7–22K; B2B Vendor: $14–29K/year; RollingGo MCP: $0.
  • TimeSelf-build: 2–3 person-months; Outsourcing: 2–4 weeks; B2B Vendor: 4–6 weeks; RollingGo MCP: 5 min (official) / half day (tested).
  • PeopleSelf-build: 2–3; Outsourcing: 1 + outsourced; B2B Vendor: 0.5; RollingGo MCP: 1 (travel admin).
  • Access barrierSelf-build: High; Outsourcing: Medium; B2B Vendor: High (enterprise creds); RollingGo MCP: 0 (individual/enterprise).
  • MaintenanceSelf-build: 0.5–1 person/month; Outsourcing: 0.5 person/month; B2B Vendor: 0.5 person/month; RollingGo MCP: 0.1 person/month.
Dimension Self-build Outsourcing B2B Vendor RollingGo MCP
Cost Not feasible $7–22K $14–29K/year $0
Time 2–3 person-months 2–4 weeks 4–6 weeks 5 min (official) / half day (tested)
People 2–3 1 + outsourced 0.5 1 (travel admin)
Access barrier High Medium High (enterprise creds) 0 (individual/enterprise)
Maintenance 0.5–1 person/month 0.5 person/month 0.5 person/month 0.1 person/month

For SME travel admins, lightweight travel tool developers, and corporate expense product teams, RollingGo Hotel MCP is the most realistic option currently available.

7 Recommendations for Peers

  1. List hard conditions first, then features — 80% of solutions get filtered by non-negotiable requirements.
  2. Gray-test with small traffic — Run 5 employees' travel bookings for 1–2 weeks before production.
  3. Map placeType strictly — Don't let the agent guess; hardcode POI type → placeType mapping.
  4. Corporate rate is a separate module — Don't expect MCP to return corporate rates; build it as an independent microservice.
  5. Get tags from getHotelSearchTags — Never guess tag strings; they're case-sensitive.
  6. Always add Accept header in cURL — This is the #1 cURL error, not an MCP bug.
  7. Store hotelId in your order DB — It's a stable identifier; use it for corporate rate lookups instead of fuzzy name matching.

Top comments (0)