关于 bookdata
bookdata 是面向住宿搜索和行程规划的本地桥接服务,可按目的地与日期搜索住宿,或获取单个 Booking.com 房源详情。它将调用转发至 HasData Booking MCP 服务,提供只读的房源数据,不支持预订或付款。
主要功能
- 01按目的地、日期和人数搜索住宿
- 02筛选价格、类型、评分及设施
- 03获取房源政策、价格和评价
- 04查看照片与可用房型
- 05按页获取搜索结果
适用场景
- 01比较某目的地指定日期的住宿
- 02查看房源价格、政策和地址
- 03筛选符合设施或评分要求的住宿
MCP 相关
作为 MCP 服务,它在本地提供上游工具列表,并将工具调用和参数转发至 HasData Booking MCP 服务,原样返回结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 2 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 住宿页面的完整 Booking.com URL。仅接受 `booking.com` 和 `www.booking.com` 主机名。 |
| rooms | number | 是 | 预订的客房数。 |
| adults | number | 是 | 所有客房中的成人宾客总人数。 |
| children | number | 是 | 所有客房中的儿童宾客总人数(0–10)。没有儿童时传入 `0`。 |
| currency | string | 否 | 响应中返回的价格所用币种。使用 `hotelCurrency` 可保留每个住宿的本币。请提供一个文档中列出的确切值(共允许 52 种),例如 `hotelCurrency`、`usd`。 |
| language | enum | 否 | Booking.com 界面及响应中本地化字段所用的语言。en-us | en-gb | de | nl | fr | es | es-ar | es-mx | ca | it | pt-pt | pt-br | no | fi | sv | da | cs | hu | ro | ja | zh-cn | zh-tw | pl | el | ru | tr | bg | ar | ko | he | lv | uk | hi | id | ms | th | et | hr | lt | sk | sr | sl | vi | tl | is |
| checkInDate | string | 是 | `YYYY-MM-DD` 格式的入住日期。必须是未来日期,且早于 `checkOutDate`。 |
| checkOutDate | string | 是 | `YYYY-MM-DD` 格式的退房日期。必须晚于 `checkInDate`。 |
| childrenAges | string | 否 | 以逗号分隔的儿童年龄列表,每名儿童对应一个值(每个值为 `0`–`17`)。当 `children > 0` 时必填,且年龄数量必须与 `children` 相等。 示例:`1,3,7` |
详细介绍
bookdata
bookdata 是一个小型本地桥接程序,用于连接托管的 HasData Booking MCP 服务,该服务以 JSON 返回 Booking.com 数据。提供目的地关键词、入住和 退房日期以及入住人数——房间数、成人数、儿童数——即可搜索该目的地可入住的住宿;提供同一日期下某处房源的 Booking.com URL,即可获取该房源的完整详情:身份信息和 地址、政策、价格、评分和评论、照片,以及该时间段内可入住的套房。
该桥接程序不保存任何住宿数据。它会在本地提供上游服务的工具列表,内容与从实时端点 捕获的完全一致,并将每次工具调用转发给上游,原样返回 结果。捕获的工具仅供读取:它会搜索和读取公开的 Booking.com 房源页面。尽管供应商名称中包含 Booking,但其中没有预订、预约、 消息或支付工具。
工具
hasdata_booking_search_getBookingSearchResults— 按目的地搜索住宿。必填:keyword、checkInDate、checkOutDate、rooms、adults、children。可选筛选条件包括childrenAges、sort、价格范围、卧室数和 浴室数、房源类型、星级、评分、 设施和无障碍功能、床铺和 预订偏好、language、currency,以及page(每页 25 条结果)。返回每家酒店的 ID、标题和 URL、位置、政策、价格、评分、 评论摘要和主照片。hasdata_booking_place_getBookingPlaceDetails— 获取某处房源的完整详情。必填:url(Booking.com 房源 URL)、checkInDate、checkOutDate、rooms、adults、children。 可选:childrenAges、language、currency。 返回房源身份信息、地址和坐标、 政策、价格、评分和评论摘要、照片, 以及可入住的套房。
配置
HASDATA_BOOKING_MCP_URL(可选)——覆盖 上游端点。默认为https://mcp.hasdata.com/mcp?apis=booking。(此 覆盖入口是本次重建自行标注的 实现。)HASDATA_API_KEY(可选)——设置后,每个 上游请求都会携带x-api-key: <key>请求头,使用调用方自己的 HasData API 密钥。未设置时, 不会发送密钥请求头。(请求头 名称和环境变量名由原始项目的 registry 记录确定;从此环境 变量转发密钥是本次重建自行标注的实现——原始 工具表面是在不带密钥的情况下捕获的。)
转发机制
首次调用工具时,客户端会与上游建立可流式传输的
HTTP 会话:发送 JSON-RPC
initialize 请求(protocolVersion 2025-03-26,
clientInfo 名称为 bookdata),然后发送
notifications/initialized 通知,接着发送携带调用方参数的
tools/call 请求,参数保持不变。上游以带有
Mcp-Session-Id 请求头的 initialize 响应时,该值会随
此会话后续的每个请求一同发送;该会话会在进程运行期间重复使用。
响应可能是纯 JSON,也可能是服务器发送的事件;两种格式都会读取。
成功的上游结果会原样透传,
包括上游设置的任何 isError 标记。
失败——JSON-RPC 错误、非 2xx 状态、无法读取的响应,或
无法完成的请求——会以 isError 结果返回,其
文本以 bookdata error: 开头(此呈现方式
是本次重建自行标注的实现)。
命令行界面
每个工具也可以作为子命令调用,并接收一个 JSON 参数字符串:
npx @reneturcios/bookdata hasdata_booking_search_getBookingSearchResults '{"keyword":"Paris","checkInDate":"2026-11-10","checkOutDate":"2026-11-14","rooms":1,"adults":2,"children":0}'
npx @reneturcios/bookdata hasdata_booking_place_getBookingPlaceDetails '{"url":"https://www.booking.com/hotel/fr/example.html","checkInDate":"2026-11-10","checkOutDate":"2026-11-14","rooms":1,"adults":2,"children":0}'
npx @reneturcios/bookdata --version
退出代码:成功时为 0,返回 isError
结果时为 1,用法错误时为 2。
MCP 服务
npx -y @reneturcios/bookdata mcp
MCP 客户端配置:
{
"mcpServers": {
"bookdata": {
"command": "npx",
"args": ["-y", "@reneturcios/bookdata", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/bookdata
docker run --rm ghcr.io/cloudcorprecords/bookdata --version
容器的默认命令是 mcp,因此第一种形式是 stdio MCP 服务;其他参数会照常传递给
命令行界面。
开发
npm install
npm run build
npm test
npm run dev
测试套件完全使用桩接的 JSON-RPC 上游运行,不会进行实时网络调用。
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。