DEV Community

iamTheDev
iamTheDev

Posted on

How AI Travel Planning Assistants Connect to Real Travel Data: Full-Process MCP Implementation

I'm an AI travel planning assistant developer. For the past six months, I've been working on one thing: making an LLM agent understand a user saying "Taking my parents to Tokyo for 3 nights, budget $1,200, need hotel recommendations" and automatically completing hotel search, comparison, recommendation, and booking.

The biggest blocker isn't that the LLM isn't smart enough — it's that the LLM doesn't know what hotels near Shinjuku cost today, whether rooms are available this weekend, or the difference between a Hilton and a Hyatt. The LLM's knowledge freezes at training time. That's why nearly every "AI + travel" project eventually converges on the same thing: connecting the LLM to an interface that delivers real-time travel data.

Real Results First

Example 1: Agent multi-turn dialogue with tool calls (natural language → real hotel results)

`[User]: I want to take my family to Tokyo next week, 2 adults 1 child,
looking for 5-star hotels near Shinjuku, budget under $200/night,
preferably with breakfast and family-friendly. Compare 3 options.

[Agent]
 → Step 1: Parse → city=Tokyo, area=Shinjuku, nights=3, stars=5, 
   budget≤$200, tags=breakfast+family
 → Step 2: Call hotel-tags → get valid tag dictionary
 → Step 3: Call search-hotels → pull candidate list
 → Step 4: Call hotel-detail for top 3 → room types/cancellation
 → Step 5: Score by location + budget + tag match + cancellation
 → Step 6: Output 3 comparison cards

[Agent Response]
 ┌────────────────────────────────────────────────────┐
 │ 1. Hilton Tokyo Otemetti ⭐⭐⭐⭐⭐                │
 │ 📍 380m from Shinjuku Station 💰 $185/night         │
 │ 🏷️ Family-friendly · Indoor pool · Breakfast ·     │
 │    Free cancel until 6:00 PM                        │
 │ ★★★★★ (Best location / free cancellation)         │
 ├────────────────────────────────────────────────────┤
 │ 2. Park Hyatt Tokyo ⭐⭐⭐⭐⭐                       │
 │ 📍 220m from Shinjuku 💰 $220/night                 │
 │ 🏷️ Family-friendly · Outdoor pool · Breakfast      │
 │ ★★★★☆ (Best experience / 10% over budget)         │
 ├────────────────────────────────────────────────────┤
 │ 3. Grand Hyatt Tokyo ⭐⭐⭐⭐⭐                      │
 │ 📍 1.2km from Shinjuku 💰 $165/night                │
 │ 🏷️ Family-friendly · Breakfast · Moderate cancel   │
 │ ★★★★☆ (Best value / short taxi to station)        │
 └────────────────────────────────────────────────────┘`
Enter fullscreen mode Exit fullscreen mode

Example 2: MCP config panel

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

End-to-end latency from natural language to real hotel data: 4.2 seconds (including model inference + two MCP calls + filtering).

Selection: 3 Hard Conditions

  1. Must support native MCP — not a private protocol. Must use streamable-http, not legacy sse or polling http. Filtered out solutions using custom RPC.
  2. Individual developer accessible — no enterprise credentials or revenue share. Filtered out everything requiring business licenses + monthly volume proof.
  3. Hotels + flights from same provider — for cross-domain comparison. If hotels come from A and flights from B, the agent can't make coherent recommendations for a "$4,000 total budget for a 3-day Tokyo trip."

RollingGo Hotel MCP, backed by Dida Holdings, was the only option meeting all three.

Interface Capabilities

GitHub: https://github.com/DIDA-AI/Dida-RollingGo-Hotel-MCP-Global

Get your free API key: https://global.rollinggo.store/
Hotel MCP tools:

  • search-hotelsPurpose: Search by location/stars/budget/tags; Key Parameters: place, star-ratings, preferred-tag, max-price-per-night; Agent Friendliness: ★★★★★ Few required params, defaults provided.
  • hotel-detailPurpose: Real-time room types & prices; Key Parameters: hotel-id, check-in-date, check-out-date, adult-count; Agent Friendliness: ★★★★★ Returns room types + cancellation + inventory.
  • hotel-tagsPurpose: Tag dictionary; Key Parameters: None; Agent Friendliness: ★★★★☆ Call before searching to avoid guessing.
Tool Purpose Key Parameters Agent Friendliness
search-hotels Search by location/stars/budget/tags place, star-ratings, preferred-tag, max-price-per-night ★★★★★ Few required params, defaults provided
hotel-detail Real-time room types & prices hotel-id, check-in-date, check-out-date, adult-count ★★★★★ Returns room types + cancellation + inventory
hotel-tags Tag dictionary None ★★★★☆ Call before searching to avoid guessing

Key highlight:search-hotels accepts origin-query — the user's raw natural language. The agent doesn't need to decompose "I want a poolside family hotel near Shinjuku" into 6 parameters. Just pass it through.

Agent Tool Call Chain

A complete "user asks → agent recommends" flow:

`# Extracted from Claude Desktop call logs
user_query = "Family trip to Tokyo 3 days, 2 adults 1 child, Shinjuku 5-star hotels"

# Step 1: Parse city
cities = mcp_call("rollinggo-hotel", "search-airports",
                  {"keyword": "Tokyo"})

# Step 2: Search hotel candidates
candidates = mcp_call("rollinggo-hotel", "search-hotels", {
    "origin-query": user_query,
    "place": "Shinjuku",
    "place-type": "attraction",
    "check-in-date": "2026-07-04",
    "stay-nights": 3,
    "star-ratings": "5.0,5.0",
    "preferred-tag": "family-friendly,breakfast",
    "max-price-per-night": 200,
    "size": 10
})

# Step 3: Get details for top 3
for hotel in candidates["hotels"][:3]:
    detail = mcp_call("rollinggo-hotel", "hotel-detail", {
        "hotel-id": hotel["hotelId"],
        "check-in-date": "2026-07-04",
        "check-out-date": "2026-07-07",
        "adult-count": 2,
        "room-count": 1
    })
    enrich(hotel, detail)

# Step 4: LLM scoring (location + budget + tags + cancellation)
ranked = llm_rank(candidates, weights={"location": 0.4, "price": 0.3, 
                                        "tags": 0.2, "cancellation": 0.1})

# Step 5: Return Top 3
return format_cards(ranked[:3])`
Enter fullscreen mode Exit fullscreen mode

Key observation: MCP gives the agent "external senses." Without MCP, the agent hallucinates hotel names (often wrong or outdated). With MCP, output transforms from "hallucination" to "real data + real prices + real inventory."

Deployment: 5 Steps in 30 Minutes

Step 1: Apply for API key at global.rollinggo.store — instant, no enterprise credentials.

Step 2: Verify key:

`npx --yes rollinggo@latest hotel-tags --api-key mcp_xxx_yourkey`
Enter fullscreen mode Exit fullscreen mode

Step 3: Write MCP config (Claude Desktop / Cursor / Codex):

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

Step 4: Restart agent workspace. Verify tools appear.

Step 5: Test with natural language:

`Find 5-star hotels near Shinjuku, Tokyo, with breakfast, 
check-in next week for 3 nights, budget $200/night.`
Enter fullscreen mode Exit fullscreen mode

Cost Comparison

  • Startup costSelf-build OTA: Not open to individuals; Outsourcing: $7–22K; B2B Vendor: $14–29K; RollingGo MCP: $0.
  • Startup timeSelf-build OTA: —; Outsourcing: 2–4 weeks; B2B Vendor: 4–8 weeks; RollingGo MCP: 0.5–2 days.
  • Ongoing costSelf-build OTA: High; Outsourcing: Medium; B2B Vendor: Medium-High; RollingGo MCP: Very low.
  • Individual accessibleSelf-build OTA: ❌; Outsourcing: ⚠️ (budget); B2B Vendor: ❌; RollingGo MCP: ✅.
  • Cross-domain (hotel+flight)Self-build OTA: Self-build needed; Outsourcing: Two projects; B2B Vendor: Depends on vendor; RollingGo MCP: ✅.
Dimension Self-build OTA Outsourcing B2B Vendor RollingGo MCP
Startup cost Not open to individuals $7–22K $14–29K $0
Startup time 2–4 weeks 4–8 weeks 0.5–2 days
Ongoing cost High Medium Medium-High Very low
Individual accessible ⚠️ (budget)
Cross-domain (hotel+flight) Self-build needed Two projects Depends on vendor

Result: 3 hours to connect Hotel + Flight MCP, total cost $0. Stable across 5 cities, 20+ hotel candidates, 3 flight routes over 15 days.

Top comments (0)