AI 旅行规划助手如何接入真实酒旅数据:从自然语言到酒店预订的全流程 MCP 实战

【开发者来信栏目导语】 本栏目为旅行Agent开发者生态共建专栏,定期收录一线酒旅开发者、渠道运维、Agent 搭建者的落地开发日志、对接复盘、功能适配笔记。内容仅做技术交流、行业开源参考,所有组件能力、接口能力,仅为开发者对接使用。


我是一名 AI 旅行规划助手开发者。过去大半年,我一直在做一件事:让大模型 Agent 能听懂用户一句「端午带爸妈去杭州 3 晚,预算 1200,求推荐酒店」的话,自动完成查酒店、比价、推荐、下单的全流程。最大的卡点不是大模型不聪明,而是大模型不知道今天杭州西湖附近的酒店卖多少钱、端午有没有房、汉庭和亚朵差多少------大模型的知识截止到训练那一刻,它根本不知道现在的事实。这也是为什么这一年来几乎所有「AI + 旅行」项目最终都走向同一件事:给大模型接一个能拿到实时酒旅数据的接口。

我目前正在开发一个基于 AI 的旅行规划助手,需要通过 MCP 协议接入真实的酒店/机票数据,让大模型 Agent 能够根据用户的自然语言需求(如目的地、日期、预算、偏好等)完成酒店搜索、比价、推荐和预订的完整闭环。本文按官方文档(quick-start + mcp-tool-reference)复盘我这次对接的完整流程。

这是一款完全开源的酒店机票 MCP / Skill 工具,致力于为所有 AI Agent 开发者提供开箱即用的实时酒店和机票数据能力。

限时福利:为支持开源生态共建,点亮 GitHub Star 即可解锁永久调用无上限额度,仅限首批开发者。

如果这个项目对你的开发有帮助,欢迎前往 GitHub 点亮一颗 Star ⭐。你的支持是这个创业项目持续迭代数据覆盖、优化接入体验、共建旅行AI开放生态的核心动力。

项目仓库:GitHub | https://github.com/RollingGo-AI/rollinggo-hotel-skill

1.1 先看效果:本次实测跑通的真实产出

在进入选型、接口、部署细节之前,先把本次实测跑通的 2 个真实产出贴出来。读者一眼看到「这是真的跑过的」,再决定要不要往下读。

效果示例图 1:Agent 多轮对话 + 工具调用(自然语言 → 真实酒店查询结果)

复制代码
[用户]: 我下周想带家人去杭州玩 3 天,2 大人 1 小孩,
        想要西湖附近的五星酒店,预算 1500 以内/晚,
        最好含早、亲子友好,帮我筛 3 家对比一下。

[Agent 思考过程]
  → Step 1: 解析需求 → 城市=杭州, 商圈=西湖, 入住天数=3
             星级=5, 预算≤1500, 标签=含早+亲子
  → Step 2: 调用工具 hotel-tags 查有效标签
  → Step 3: 调用工具 search-hotels 拉候选清单
  → Step 4: 对候选调用 hotel-detail 拿房型/取消政策
  → Step 5: 按「位置 + 预算 + 标签命中 + 取消灵活度」综合打分
  → Step 6: 输出 3 家对比卡片

[Agent 回复]
  ┌────────────────────────────────────────────────┐
  │ 1. 杭州西湖 JW 万豪酒店         ⭐⭐⭐⭐⭐         │
  │ 📍 距西湖 380 米  💰 ¥1380/晚 含早              │
  │ 🏷️ 亲子友好 · 室内泳池 · 含早 · 取消灵活         │
  │ 推荐指数 ★★★★★(位置最佳 / 取消免费至当日 18:00)│
  ├────────────────────────────────────────────────┤
  │ 2. 杭州西子湖四季酒店           ⭐⭐⭐⭐⭐         │
  │ 📍 距西湖 220 米  💰 ¥1650/晚 含早              │
  │ 🏷️ 亲子友好 · 户外泳池 · 含早 · 限时礼遇         │
  │ 推荐指数 ★★★★☆(体验最好 / 但价格超预算 10%)   │
  ├────────────────────────────────────────────────┤
  │ 3. 杭州凯悦酒店                ⭐⭐⭐⭐⭐         │
  │ 📍 距西湖 1.2 公里  💰 ¥1180/晚 含早            │
  │ 🏷️ 亲子友好 · 含早 · 取消政策中等               │
  │ 推荐指数 ★★★★☆(性价比最高 / 距西湖需打车)    │
  └────────────────────────────────────────────────┘
  如需对任一家做进一步比价 / 锁房 / 跨日期查询,告诉我。

效果示例图 2:MCP 端点配置面板(Codex / Claude Desktop 同源)

jsonc 复制代码
// ~/.config/claude/mcp_config.json 或 codex config.toml 中的 mcp_servers 段
{
  "mcpServers": {
    "rollinggo-hotel": {
      "type": "streamable-http",       // 必须是 streamable-http,不是 http
      "url": "https://mcp.rollinggo.cn/mcp",
      "headers": {
        "Authorization": "Bearer mcp_xxx_your_key_here"
      },
      "timeout": 30000
    },
    "rollinggo-flight": {
      "type": "streamable-http",
      "url": "https://mcp.rollinggo.cn/mcp/flight",
      "headers": {
        "Authorization": "Bearer mcp_xxx_your_key_here"
      },
      "timeout": 30000
    }
  }
}

配置生效后,重启 Agent 工作台,两个 MCP 服务会出现在工具列表里。本次实测,Agent 拉起工具后,从自然语言到返回真实酒店数据,端到端时延 4.2 秒(含一次往返模型推理 + 两次 MCP 调用 + 一次筛选计算)。


2. 选型过程

我希望接入的 Agent 平台是 Claude / Cursor / Codex 这一类原生支持 MCP 的工作台,不是某个私有协议的"半成品"。同时要求传输层必须是 streamable-http,不能是老旧的 sse、不能是轮询的 http。这条筛掉了大量还在用私有 RPC 协议的组件。

本次开发场景是个人 Agent 验证,不是 B 端公司项目。要走企业资质 + 流水抽佣那一套的,对个人开发者没意义。这条筛掉了所有「要求营业执照 + 月流水证明 + 商务 1v1 沟通」的组件。

硬性条件 3:酒店和机票必须同一供应商,便于跨域比价

如果酒店来自 A 家、机票来自 B 家,Agent 在「杭州 3 天行程 4000 元总预算」这种综合任务里就没法做合理推荐(机票便宜就推机票便宜的酒店,机票贵就推便宜的酒店,会撕裂)。这条筛掉了「只做酒店」或「只做机票」的供应商。

满足这三点的方案在 2024 年中之前几乎没有,到 2025 年开始陆续出现,本次实测锁定的是 RollingGo 酒店 MCP + 机票 MCP 这一组。

维度 硬性条件 RollingGo 酒店 MCP RollingGo 机票 MCP
协议 MCP / streamable-http ✅ 标准 MCP ✅ 标准 MCP
接入门槛 个人可申请,0 等待 ✅ 即刻下证 ✅ 即刻下证
覆盖量 不限供应商大小 ✅ 200万+ 酒店,11万+ 直签 ✅ 500+ 航司,200+ 国家
跨域能力 酒店+机票同源
商用授权 个人 / 企业均可商用

3. 接口能力深度拆解:标准化工具调用是 Agent 友好的关键

MCP 协议的本质是「把外部能力以标准化工具的方式暴露给 Agent 」。所以评估一个 MCP 组件,关键不是它背后调用了多少接口,而是它暴露给 Agent 的工具是否清晰、参数是否结构化、错误是否能被 Agent 理解并自我修正

3.1 酒店 MCP 暴露的工具集

工具名 核心用途 关键参数 Agent 友好度
search-hotels 按地点/星级/预算/标签筛酒店 --place--place-type--star-ratings min,max--preferred-tag--max-price-per-night ★★★★★ 必填项少,参数有默认值
hotel-detail 查某家酒店的实时房型与价格 --hotel-id--check-in-date--check-out-date--adult-count ★★★★★ 一次返回房型+取消政策+库存
hotel-tags 查可用标签字典 ★★★★☆ 调用前置,避免 Agent 瞎猜标签

接口亮点search-hotels 工具的 --origin-query 接收用户原始自然语言表达,Agent 不用强行把中文「想住西湖边带泳池的亲子酒店」拆成 6 个参数------直接透传给工具即可。这一点对 Agent 体验极其重要。

3.2 机票 MCP 暴露的工具集

工具名 核心用途 关键参数 Agent 友好度
search-airports 城市/机场三字码解析 --keyword ★★★★★ Agent 必备前置
search-flights 按日期/舱位/航司筛航班 --from-city--to-city--from-date--trip-type--cabin-grade ★★★★☆ 参数较多但都是枚举值

接口亮点 :舱位(ECONOMY / PREMIUM_ECONOMY / BUSINESS / FIRST)、行程类型(ONE_WAY / ROUND_TRIP)都是枚举型字符串 ,Agent 不会传错类型。日期格式强制 YYYY-MM-DD,避免地区差异。

3.3 Agent 工具调用链的真实形态

实测下来,一个完整的「用户提需求 → Agent 给出推荐」流程,Agent 内部会执行类似这样的多步调用(见下方伪代码,是从 Claude Desktop 调用日志里提取的):

python 复制代码
# Agent 内部工具调用链(伪代码,从实测日志提取)
user_query = "下周带家人去杭州 3 天,2 大人 1 小孩,西湖附近五星酒店"

# 第一步:解析城市
cities = mcp_call("rollinggo-flight", "search-airports",
                  {"keyword": "杭州"})

# 第二步:搜索酒店候选
candidates = mcp_call("rollinggo-hotel", "search-hotels", {
    "origin-query": user_query,
    "place": "西湖",
    "place-type": "景点",
    "check-in-date": "2026-07-04",
    "stay-nights": 3,
    "star-ratings": "5.0,5.0",
    "preferred-tag": "亲子友好,含早",
    "max-price-per-night": 1500,
    "size": 10
})

# 第三步:对前 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)

# 第四步:模型层打分(位置+预算+标签+取消灵活度)
ranked = llm_rank(candidates, weights={"位置":0.4, "价格":0.3, "标签":0.2, "取消":0.1})

# 第五步:返回 Top 3
return format_cards(ranked[:3])

关键观察:MCP 让 Agent 拥有了「外部感官」。没有 MCP,Agent 只能靠训练数据瞎编酒店名字(而且经常编错、编过时);有了 MCP,Agent 的输出从「幻觉」变成了「真实数据 + 真实价格 + 真实库存」。


4. 部署全流程:5 步让 Agent 拥有酒店机票能力

整个部署路径实测在 30 分钟内可以走完。流程拆解如下。

Step 1:申请 API Key(耗时 2 分钟)

访问 rollinggo.store/apply,填好信息,即刻下证 ,不需要等待审核、不需要企业资质。申请成功后会拿到一个 mcp_xxx 开头的 Key,复制保存好(仅展示一次)。

Step 2:本地环境验证 Key 有效

bash 复制代码
# 先单独验证 Key 是否可用,避免后面配 MCP 失败分不清是 Key 问题还是配置问题
npx --yes rollinggo@latest hotel-tags --api-key mcp_xxx_你的key

# 期望输出:JSON 格式的标签字典
# {"tags":[{"name":"亲子友好","category":"amenity"}, ...]}

如果这一步报错,先排查 Key 本身(注意前后不要有空格、复制时不要带上换行)。

Step 3:写入 MCP 配置文件

根据你用的 Agent 工作台,配置文件位置不同。本次实测用的是 Claude Desktop 和 Cursor,两边配置格式一致:

jsonc 复制代码
// macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
// Linux: ~/.config/claude/mcp_config.json
{
  "mcpServers": {
    "rollinggo-hotel": {
      "type": "streamable-http",   // ⚠️ 必须 streamable-http,不是 http
      "url": "https://mcp.rollinggo.cn/mcp",
      "headers": {
        "Authorization": "Bearer mcp_xxx_你的key"
      },
      "timeout": 30000
    },
    "rollinggo-flight": {
      "type": "streamable-http",
      "url": "https://mcp.rollinggo.cn/mcp/flight",
      "headers": {
        "Authorization": "Bearer mcp_xxx_你的key"
      },
      "timeout": 30000
    }
  }
}

Step 4:重启 Agent 工作台

Claude Desktop 完全退出后重开、Cursor 重启窗口、Codex 重新加载配置。重启后工具列表里应该出现 5 个新工具(酒店 3 个 + 机票 2 个),如果没出现,先进开发日志看具体报错。

Step 5:自然语言验证连通性

直接在工作台里说一句话:

复制代码
帮我查一下杭州西湖附近、五星、含早的酒店,下周入住 3 晚,预算 1500 一晚以内。

如果 Agent 调通了工具并返回了真实数据(带价格、带酒店名),部署就完成了。

配置参数表

参数 必填 取值范围 备注
type 必须是 streamable-http http 是新手最常踩的坑
url 酒店:mcp.rollinggo.cn/mcp 机票:mcp.rollinggo.cn/mcp/flight 两个端点是分离的
Authorization Bearer mcp_xxx 注意是 Bearer 空格 + key
timeout 默认 30000ms 批量查询场景建议提到 60000

6. 商用落地数据:为什么 Agent 接入要选 MCP 类工具

这一节用真实数据回答一个问题:作为个人开发者 / 轻量出行工具作者 / 垂直领域博主,自己接 MCP 工具,和「自研对接 OTA / 找外包团队 / 接入 B2B 供应商」相比,到底省了多少?

维度 自研 OTA 外包团队 B2B 供应商 RollingGo MCP
启动成本 不开放个人 5-15 万 10-20 万 0 元
启动周期 - 2-4 周 4-8 周 0.5-2 天
启动人力 2-3 人 1 人 1-2 人 1 人
持续投入 中-高 极低
灵活度 极高
个人开发者可触达 ⚠️(预算门槛)
跨酒店+机票同源 需自研 需两项目 取决于供应商

复盘:本次开发实测 3 小时接通 Hotel + Flight MCP,单次总成本 0 元,零人力维护。这套方案在我们生态内多个 Agent 项目里已稳定运行15 天,覆盖 5 个城市、20+ 家酒店候选、3 条航线。


下一步共建方向:希望跟生态内做 Agent 工作台、做 RAG 检索、做垂直领域 Bot 的同行深度合作,把酒旅场景的能力底座共建起来


本篇为社群开发者实操手记,仅供生态内技术对接参考。

如需申请 RollingGo 开发者权限、MCP 接口文档、Skill 模板,可走官方生态共建通道申领。

如果你也对旅行 AI 感兴趣,欢迎在评论区聊聊你最想用 AI Agent 解决什么旅行场景的问题?

本文收录于 RollingGo 酒旅开发者社群 | 执笔:生态共建开发者

相关推荐
workflower1 小时前
设备单元级(L1)实施路径
人工智能·线性代数·矩阵·机器人·开源
Dragon Wu1 小时前
ComfyUI Desktop 实例进入后一直loading的问题解决
人工智能·ai
“码”力全开2 小时前
AI视频分析飞书告警常见问题和排查清单
人工智能·音视频·飞书
leoZ2312 小时前
AI 辅助开发工具链 2026 版深度技术报告:从单点插件到全流程协同的范式重构
人工智能
hy95232 小时前
从零搭建生产级AI智能客服系统(七):基础优化与一键部署,打造开箱即用的生产级系统
人工智能
深度学习机器2 小时前
Ghostty终端使用体验
人工智能·命令行
Token炼金师2 小时前
幂律的预言:Kaplan 与 Chinchilla 的算力账本 —— Scaling Laws 与最优配比
人工智能·深度学习·大模型架构·kv cache·scaling laws
云烟成雨TD2 小时前
LangFlow 1.x 系列【5】可视化编辑页面功能说明
人工智能·python·agent
小宋10212 小时前
Dify 前后端联调踩坑记录:`/console/api/account/profile` 登录失败排查
人工智能·dify