mcpField
H
hotelbooking-ai

hotelbooking-ai

本地服务
github.com/RollingGo-AI地图与出行861 周前更新

关于 hotelbooking-ai

hotelbooking-ai 是面向旅行 Agent 开发者的酒店搜索与预订 MCP 服务,提供酒店筛选、实时房价和房型详情,并支持按标签细化搜索。

主要功能

  1. 01按地点和条件搜索酒店
  2. 02获取实时房价与库存
  3. 03查看酒店详情和政策
  4. 04获取筛选用的酒店标签

适用场景

  1. 01为旅行规划 Agent 添加酒店搜索
  2. 02比较商务旅行的酒店选项
  3. 03预订前查询房价

MCP 相关

该服务通过 streamable HTTP 向 MCP 客户端提供酒店搜索和详情工具。核心端点提供 3 种工具,OAuth 2.0 模式还包含预订和订单相关工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"rollinggo-ai-hotelbooking-ai": {
"command": "npx",
"args": [
"-y",
"hotelbooking-ai"
],
"env": {
"ROLLINGGO_API_KEY": "<ROLLINGGO_API_KEY>"
}
}
}
}
启动命令npx -y hotelbooking-ai
需要配置的环境变量
ROLLINGGO_API_KEY密钥RollingGo Hotel API Key

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmhotelbooking-ai1.0.0

工具

3

收录的工具列表 · 更新于 2 周前

参数类型必填说明
sizenumber否要返回的结果数,整数,1~20。默认值为 10。
placestring是用于定义搜索范围的单个可进行地理编码的位置文本,例如 "Beijing"、"Shanghai Pudong International Airport"、"Tokyo Disneyland"、"No. 19 Sanlitun Road, Chaoyang District, Beijing"。
hotelTagsobject否用于价格、品牌和特定设施的结构化标签筛选条件。
hotelTags.requiredTagsarray否必须具备的标签/设施(硬性约束)。
hotelTags.preferredBrandsarray否首选酒店品牌。
hotelTags.maxPricePerNightnumber否每晚最高价格,单位为 RMB(例如 500)。
placeTypestring是位置类型。允许的值:`city`、`airport`、`point_of_interest`、`train_station`、`subway_station`、`hotel`、`district/county`、`detailed address`。必须与 `place` 在语义上保持一致。
countryCodestring否用于货币/区域设置偏好的 ISO 3166-1 alpha-2 国家代码,例如 US、GB、JP。
originQuerystring是用户原始的自然语言查询(原文),用于语义理解和排序。
checkInParamobject否入住参数。字段:adultCount(整数,>=1,默认 2);checkInDate(字符串,YYYY-MM-DD,未来日期);stayNights(整数,1~28,默认 1)。
checkInParam.adultCountnumber否
checkInParam.stayNightsnumber否
checkInParam.checkInDatestring否
filterOptionsobject否可选筛选条件。字段:distanceInMeter(整数,>0,仅适用于 POI);starRatings(数组 [min, max],0.0~5.0,步长 0.5)。
filterOptions.starRatingsarray否
filterOptions.distanceInMeternumber否

详细介绍

RollingGo Hotel MCP — 酒店搜索与预订

Version ModelScope MCP Version License: MIT Python 3.10+

🏠 申请密钥 · 🚀 快速开始 · 📚 示例 · 💬 支持 · 🔍 问答 · 💰通过 RollingGo 创收

这是一个官方 MCP 服务,可让 AI Agent 搜索、比较并预订全球超过 200 万家酒店;该服务填补了 AI 旅行推荐与现实世界预订之间的空白。

服务端点可用工具身份验证
酒店 MCPhttps://mcp.rollinggo.ai/mcpsearchHotels, getHotelDetail, getHotelSearchTagsAuthorization: Bearer <YOUR_API_KEY>
  • 传输协议:streamable-http
  • 定价:完全免费,不限使用次数
  • 访问方式:按照本文档自助接入;适合快速原型开发和工具开发。

RollingGo MCP 还提供 OAuth 2.0 Authorization Code 流程,包含 7 个工具,包括 getHotelSearchTags、searchHotels、getHotelDetail、hotelPriceConfirm、searchHotelOrders 等。该模式面向与企业级生产应用的深度集成,需要通过 [email protected] 联系商务团队。


🌟 为什么选择 RollingGo Hotel MCP?

传统 AI Agent 只能依据静态训练数据集推荐酒店。RollingGo Hotel MCP 赋予大模型 Agent 直接、实时的交易能力:

✅ 实时房价与可预订库存 — 零延迟价格验证;每条结果都可立即预订。

✅ 供应链 — 全流程完全基于 API。

✅ 全球酒店网络 — 覆盖 200 多个国家/地区的 2,000,000+ 家住宿。拥有 500+ 家供应商,覆盖从豪华连锁酒店到本地精品酒店的各个层级。

✅ 直签合作 — 与 110,000+ 家酒店直接连接,实时同步价格和库存。

✅ 源头价格优势 — 价格源自 OTA 上游;热门地点价格实惠。

✅ 为 Agent 而构建 — 兼容 Cursor、Claude Code、Codex、Windsurf、Copilot 等 40+ 个领先 Agent。

✅ 每次 MCP 调用均可创收 — 设置特定国家/地区的加价,在每笔已完成的预订中赚取佣金,并实时跟踪订单、收入和付款。企业和个人开发者均可灵活提现。


🎯 适用对象

• 构建 AI Agent 的公司或个人开发者

• 希望将酒店预订能力集成到 MCP 客户端的开发者

• 构建旅行规划、商务旅行管理、OTA 和生活服务 Agent 的开发者

• 希望验证 AI Agent 商业交易闭环的产品团队

• 有酒店搜索、价格比较和降价提醒需求的个人******

🎯 使用场景

  • 通用 Agent:为任意 AI Agent 配备原生酒店预订能力。用户可以在一次自然语言对话中比较、筛选并预订酒店。
  • AI 旅行规划工具:将酒店搜索直接集成到自然语言行程中。
  • 企业差旅助手:允许员工通过 Slack、Teams 或自定义聊天界面查询、比较并预订商务行程。
  • 交易演示:无需繁重的后端集成,即可验证端到端 AI Agent 商务和支付流程。

🚀 快速开始

无需编写代码,只需不到 5 分钟,即可将全球酒店搜索和预订功能集成到你的 AI 助手中。

步骤 1:获取开发者 API 密钥
  1. 前往 合作伙伴中心,注册并免费获取密钥。
  2. 你将收到一封电子邮件,其中包含:B2B 合作伙伴中心控制面板的登录凭据(可用于监控订单、配置加价和跟踪收入)。

步骤 2:连接到你的 Agent

推荐客户端:Claude CLI、Codex 和 Cursor。其他兼容 MCP 的客户端(例如 Kiro、Doubao 等)也可以用类似方式配置。

Claude CLI

在项目根目录中创建 .mcp.json:

{
  "mcpServers": {
    "Rollinggo-Hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "type": "http",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

或者直接通过命令行添加:

claude mcp add \
  --transport http \
  --header "Authorization: Bearer YOUR_API_KEY" \
  Dida-Hotel \
  https://mcp.rollinggo.ai/mcp
Codex

配置文件位置:项目根目录下的 .codex/config.json,或全局路径 ~/.codex/config.json

{
  "mcpServers": {
    "Rollinggo-Hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "type": "streamable-http",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
Cursor

配置文件位置:项目根目录下的 .cursor/mcp.json,或全局路径 ~/.cursor/mcp.json

{
  "mcpServers": {
    "Rollinggo-Hotel": {
      "url": "https://mcp.rollinggo.ai/mcp",
      "type": "streamable-http",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

将 YOUR_API_KEY 替换为你的实际 API 密钥。

直接使用 cURL 测试

注意:cURL 必须包含 -H "Accept: application/json, text/event-stream",否则服务将返回 400 错误。

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": "Shanghai Bund five-star hotel",
        "place": "Shanghai Bund",
        "placeType": "Attraction",
        "checkInParam": {
          "checkInDate": "2026-06-01",
          "stayNights": 2
        },
        "filterOptions": {
          "starRatings": [5.0]
        },
        "size": 3
      }
    },
    "id": 1
  }'

步骤 3:发起首次 MCP 调用

配置完成后,只需告诉你的 AI 助手:

“帮我找一家上海外滩附近的五星级酒店,入住日期为后天。”

AI 将自动调用 searchHotels 工具并返回酒店列表。

酒店搜索示例
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "searchHotels",
    "arguments": {
      "originQuery": "Shanghai Bund five-star hotel",
      "place": "Shanghai Bund",
      "placeType": "Attraction",
      "checkInParam": {
        "checkInDate": "2026-06-01",
        "stayNights": 2
      },
      "filterOptions": {
        "starRatings": [5.0]
      },
      "size": 3
    }
  },
  "id": 1
}

步骤 4:查看结果和示例数据

酒店搜索结果(真实数据)

搜索“上海外滩五星级酒店”,入住 2 晚,结果如下:

酒店星级每晚最低价格距离外滩
Fairmont Peace Hotel Shanghai⭐⭐⭐⭐⭐$648124m
The Peninsula Shanghai⭐⭐⭐⭐⭐$940252m
预期响应 JSON 示例
{
  "message": "Hotel search successful",
  "hotelInformationList": [
    {
      "hotelId": 29529,
      "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
      "name": "Fairmont Peace Hotel on the Bund",
      "address": "No. 20 Nanjing East Road",
      "starRating": 5.0,
      "price": {
        "message": "Price query successful. Lowest price: 648, Currency: USD",
        "hasPrice": true,
        "currency": "USD",
        "lowestPrice": 648.0
      },
      "hotelAmenities": ["Bar", "Gym", "Pool", "SPA", "Parking", "WIFI"],
      "tags": ["SPA Service", "Resort Hotel", "Sports-Friendly Hotel"]
    }
  ]
}

🔧 可用工具

官方文档 | RollingGo MCP 工具

服务注册了 3 个核心工具,可处理从搜索到预订的完整流程:

1) searchHotels

按位置、日期、价格、星级和标签查找酒店。

  • 输入参数:
    • originQuery(string,必填):用户的原始文本请求(例如:“查找东京每晚低于 $200 的精品酒店”)。
    • place(string,必填):具体目的地、景点或机场名称。
    • placeType(string,必填):位置类型(city、airport、point_of_interest、hotel 等)。支持的值:city、airport、point_of_interest、train_station、subway_station、hotel、district/county、detailed address。
    • countryCode(string,可选):ISO 3166-1 alpha-2 国家代码,例如 CN、US。
    • size(number,可选,默认值:5):返回的酒店数量,最多 20 家。
    • checkInParam(object,可选):入住相关参数。
    • filterOptions(object,可选):筛选参数。
    • hotelTags(object,可选):标签/品牌/预算筛选条件。
🔎 查看详细输入参数(checkInParam、filterOptions、hotelTags)

checkInParam 字段:

  • adultCount(number,可选,默认值:2):每间房的成人数。
  • checkInDate(string,可选,格式:YYYY-MM-DD):入住日期。如果省略、日期已过或格式错误,则默认设为明天。
  • stayNights(number,可选,默认值:1):入住晚数(最多 28 晚)。

filterOptions 字段:

  • distanceInMeter(number,可选):与 POI 的直线距离,单位为米。使用 POI 时默认为 2000。
  • starRatings(number[],可选):星级范围,默认为 [0.0, 5.0],步长为 0.5。

hotelTags 字段:

  • requiredTags(string[],可选):必需标签(硬性条件)。
  • preferredBrands(string[],可选):偏好品牌。
  • maxPricePerNight(number,可选):每晚最高预算(CNY)。
📄 查看响应 JSON Schema 示例
{
  "message": "Hotel search succeeded",
  "hotelInformationList": [
    {
      "hotelId": 43615,
      "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
      "name": "Sunworld Dynasty Hotel Beijing",
      "brand": null,
      "address": "50 Wangfujing Street",
      "destinationId": "6140156",
      "latitude": 39.917748,
      "longitude": 116.412249,
      "distanceInMeters": 205,
      "starRating": 5.0,
      "price": {
        "message": "Price found, lowest: 626.0, currency: CNY",
        "hasPrice": true,
        "currency": "CNY",
        "lowestPrice": 626.0
      },
      "areaCode": "CN",
      "description": "...",
      "imageUrl": "https://image-cdn.RollingGo.com/...",
      "hotelAmenities": ["24h Front Desk", "WiFi"],
      "score": 1.0,
      "tags": ["Near Shopping Mall", "Free WiFi"]
    }
  ]
}

注意: price 是一个对象,而不是数字。根据城市/供应来源的不同,某些字段可能缺失或为 null。


2) getHotelDetail

获取所选酒店的实时房型、动态价格、库存和取消政策。

  • 输入参数:
    • hotelId(number,可选):酒店 ID。不能与 name 同时使用;如果两者都已提供,则优先使用 hotelId。
    • name(string,可选):酒店名称(模糊匹配)。
    • dateParam(object,可选):入住/退房日期参数。
    • occupancyParam(object,可选):住客人数和房间数量参数。
    • localeParam(object,可选):国家和货币参数。
🔎 查看详细输入参数(dateParam、occupancyParam、localeParam)

dateParam 字段:

  • checkInDate(string,可选,格式:YYYY-MM-DD):入住日期。如果为空、格式错误或日期已过,则默认为明天。
  • checkOutDate(string,可选,格式:YYYY-MM-DD):退房日期。如果为空、格式错误或日期不晚于入住日期,则默认为 checkInDate + 1 天。

occupancyParam 字段:

  • adultCount(number,可选,默认值:2):每间房的成人数。
  • childCount(number,可选,默认值:0):每间房的儿童数。
  • childAgeDetails(number[],可选):儿童年龄,例如 [3, 5]。
  • roomCount(number,可选,默认值:1):房间数量。

localeParam 字段:

  • countryCode(string,可选,默认值:US):ISO 3166-1 alpha-2 国家代码。
  • currency(string,可选,默认值:USD):货币代码。
📄 查看响应 JSON Schema 示例
{
  "success": true,
  "errorMessage": null,
  "hotelId": 43615,
  "bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
  "name": "Sunworld Dynasty Hotel Beijing",
  "checkIn": "2026-03-05",
  "checkOut": "2026-03-06",
  "roomRatePlans": [
    {
      "roomTypeId": 4984714,
      "roomName": "Superior Room",
      "roomNameCn": "高级客房",
      "ratePlanId": "7012072001634754626",
      "ratePlanName": "Superior Room King Bed, 1 King Bed",
      "bedType": 73,
      "bedTypeDescription": "Unknown",
      "currency": "CNY",
      "totalPrice": 0,
      "totalSalesRate": null,
      "inventoryCount": null,
      "isOnRequest": null,
      "recommendIndex": null,
      "cancellationPolicies": [
        {
          "fromDate": "2026-03-02T10:00:00+08:00",
          "toDate": null,
          "amount": 634,
          "percent": null,
          "type": null,
          "description": null
        }
      ],
      "includedFees": null,
      "excludedFees": null,
      "metadata": null
    }
  ]
}

**注意:**失败时,响应可能包含错误消息(例如“获取价格失败,请稍后重试”)或结构化错误字段。roomRatePlans 数组可能很长,建议在客户端分页或限制显示内容。


3) getHotelSearchTags

获取包含所有可筛选标签名称(例如“免费 WiFi”“健身房”“适合儿童”)的元数据,以细化搜索筛选。适合本地缓存和客户端意图映射。

📄 查看响应 JSON Schema 示例
{
  "tags": [
    {
      "name": "Free WiFi",
      "category": "Core Amenities",
      "description": "Provides free WiFi"
    }
  ],
  "usageGuide": {
    "tagUsage": "Place tag names into hotelTags.preferredTags (preference), requiredTags (hard requirement), or excludedTags (exclusion)",
    "exampleRequest": "{...}"
  }
}

常见标签类别:

  • 品牌与评分
  • 特色亮点
  • 核心设施
  • 家庭与儿童
  • 服务详情
  • 服务与餐饮
  • 交通与支付
  • 景观与房型
  • 酒店类型
  • 价格

📚 使用示例

示例 1:城市搜索
{
  "originQuery": "Find 4-star+ hotels in Beijing for 2 nights",
  "place": "Beijing",
  "placeType": "city",
  "checkInParam": {
    "checkInDate": "2026-03-01",
    "stayNights": 2
  },
  "filterOptions": {
    "starRatings": [4.0, 5.0]
  },
  "size": 5
}
示例 2:设置标签和预算限制
{
  "originQuery": "Find quality hotels in Beijing with free WiFi, budget under 1000 per night",
  "place": "Beijing",
  "placeType": "city",
  "hotelTags": {
    "requiredTags": ["Free WiFi"],
    "maxPricePerNight": 1000
  },
  "size": 5
}
示例 3:查询酒店房型和价格
{
  "hotelId": 43615,
  "dateParam": {
    "checkInDate": "2026-03-05",
    "checkOutDate": "2026-03-06"
  },
  "occupancyParam": {
    "adultCount": 2,
    "roomCount": 1
  },
  "localeParam": {
    "currency": "CNY",
    "countryCode": "CN"
  }
}

💬 问答

🔍故障排除指南

问答

Q1:配置后客户端未显示工具

  1. 检查 JSON 配置格式是否正确
  2. 确认 url 和 type 是否正确
  3. 确认 Authorization 标头中的 API Key 是否正确
  4. 重启客户端(更改仅在重启后生效)

Q2:返回 401 Unauthorized API Key 无效或格式错误:

  1. API Key 应以 mcp_ 开头
  2. 在 Authorization: Bearer YOUR_API_KEY 中,Bearer 后必须有一个空格
  3. 确保 API Key 中没有多余的空格或换行符

Q3:返回 400 Bad Request 使用 cURL 直接调用时常见。请检查是否包含 Accept 标头:

-H "Accept: application/json, text/event-stream"

Q4:searchHotels 返回空结果

  1. 检查 place 和 placeType 是否匹配(例如,“Shanghai Bund”应与“Attraction”搭配)
  2. 放宽筛选条件(移除星级/标签限制)
  3. 确认 checkInDate 不是过去的日期

Q5:价格与实际价格不符 搜索结果显示的是参考价格;实时价格可能有所不同。目前仅支持查询,暂不支持在线预订。

💬 支持

  • 📧 邮箱:[email protected]
  • 🐛 问题反馈:在 GitHub Issues 提交问题或功能请求。
  • 💬 Discord 社区:加入我们的 Discord Server,或扫描下方二维码,与其他开发者交流、讨论集成方案,并获得 RollingGo 团队的实时支持。
Discord 支持

🌟 RollingGo Hotel MCP(OAuth)v2.3 重大更新

v2.3 优化了订单查询结构,并新增多个订单详情字段,帮助 Agent 更好地处理入住、支付和取消场景。注意:此更新仅适用于 OAuth 集成版本,不适用于本文档介绍的 API Key 版本。OAuth 版本需要联系 [email protected] 办理商务接入。

变更内容
未变更的工具(4)
  • getHotelSearchTags — 获取所有已启用的酒店筛选标签
  • searchHotels — 根据条件搜索全球酒店列表
  • getHotelDetail — 获取酒店可用房型和价格
  • hotelPriceConfirm — 锁定所选房型的实时最终零售价
已修改的工具(2)
  • createHotelBookingWithPaymentURL — 移除 alipayUrlScene 参数;将 bookingResult.paymentUrl 统一为通用结账链接
  • searchHotelOrders — 输出简化为 9 个核心字段(orderNo、hotelName、roomName、orderStatus、totalPrice 等),用于列表视图;完整详情移至专用工具
新增的工具(1)
  • getHotelOrderDetail — 根据 orderNo 查询完整的结构化订单详情,包括 hotelConfirmationNo、住客名单、床型、联系电话、坐标、付款/取消截止时间和政策标记
新增字段
  • hotelConfirmationNo — 酒店端真实确认号,可供前台查询
  • stayInfo.bedTypeStr — 易于阅读的床型描述(例如:"1 King Bed (1.8m)")
  • stayInfo.guestNames — 用于核验的官方拼音/英文住客姓名列表
  • priceInfo.paymentDeadline — 付款截止时间戳(YYYY-MM-DD HH:mm:ss),用于倒计时提醒
  • policyInfo.freeCancelDeadline — 免费取消截止时间戳,用于检查退款期限
  • policyInfo.isCancelable — 当前是否仍可免费取消

工具数量: 共 7 个(从 v2.2 的 6 个增加)——新增 1 个、修改 2 个、未更改 4 个。


附录

🔣 如果要本地部署

方法 A:通过 uv 运行(推荐——零配置设置)

如果已安装 uv,即可立即运行服务:

uv run --with-requirements requirements.txt server.py
方法 B:标准 Python 设置
# Clone the repository
git clone https://github.com/DIDA-AI/dida_hotel_mcp_global.git
cd dida_hotel_mcp_global

# Setup virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies and run
pip install -r requirements.txt
python server.py

本地服务将在 http://localhost:8000/mcp 上运行,并自动将请求转发到安全的 RollingGo 全球 API 节点。


🔑 安全与标头

  • 本地服务会将请求转发到安全的 DIDA 全球 API。
  • 请始终在标头中提供 API Key。密钥必须以 mcp_ 开头。
  • 必需标头:Authorization: Bearer mcp_your_key_here

📜 许可证

本项目采用 MIT License 授权,详情请参阅 LICENSE 文件。


由 RollingGo 团队倾心打造 ❤️

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。