Airbnb搜索扩展

一款提供高级筛选功能和详细房源信息的Airbnb搜索桌面扩展,适用于旅行规划和住宿研究。

作者 By openbnb-org
本地部署 旅行规划 房源搜索
GitHub

Airbnb搜索和列表-桌面扩展(DXT)

一个全面的桌面扩展,用于搜索Airbnb房源,具有高级过滤功能和详细的房产信息检索。构建为以桌面扩展(DXT)格式打包的模型上下文协议(MCP)服务器,便于安装和与兼容的AI应用程序一起使用。

特性

🔍 高级搜索功能

  • 基于位置的搜索 支持城市、州和地区
  • 国际定位支持 通过客户端地理编码,因此非美国查询(例如“法国巴黎”、“丹麦哥本哈根”)返回正确城市的结果
  • 谷歌地图地点ID 精确定位目标的集成
  • 属性类型筛选 适用于整个家庭、私人房间、共享房间或酒店房间
  • 日期筛选 支持入住和退房日期
  • 访客配置 包括成人、儿童、婴儿和宠物
  • 价格范围过滤 具有最低和最高价格限制
  • 分页支持 用于浏览大型结果集

🏠 详细房产信息

  • 全面的上市详情 包括设施、政策和亮点
  • 位置信息 带有坐标和邻域详细信息
  • 众议院规则和政策 以便做出明智的预订决定
  • 属性描述 以及关键特征
  • 直接链接 轻松预订Airbnb房源

🛡️ 安全与合规

  • Robots.txt合规性 具有可配置的测试覆盖
  • 请求超时管理 防止挂起请求
  • 增强的错误处理 详细记录
  • 限速意识 尊重API的使用
  • 安全配置 通过DXT用户设置

安装

适用于克劳德桌面

此扩展打包为桌面扩展(DXT)文件。要安装:

  1. 下载 .dxt 文件来自发布页面
  2. 打开兼容的AI应用程序(例如,Claude Desktop)
  3. 通过应用程序的扩展管理器安装扩展
  4. 根据需要配置扩展设置

用于光标等。

开始之前,请确保 Node.js 已安装在您的桌面上 npx 工作。

  1. 转到:光标设置>工具和集成>新MCP服务器
  2. 将以下内容添加到您的 mcp.json:

JSON``` 1 2 3 4 5 6 7 8 9 10 11{ “mcpServers”: { “airbnb”: { “command”: “npx”, “args”: [ “-y”, “@openbnb/mcp-server-airbnb” ] } } }


要忽略所有请求的robots.txt,请使用此版本 `--ignore-robots-txt` 参数


JSON```
1
2
3
4
5
6
7
8
9
10
11
12{
  "mcpServers": {
    "airbnb": {
      "command": "npx",
      "args": [
        "-y",
        "@openbnb/mcp-server-airbnb",
        "--ignore-robots-txt"
      ]
    }
  }
}
  1. 重新启动。

配置

该扩展提供以下用户可配置选项:

忽略robots.txt

  • 类型:布尔值(复选框)
  • 默认: false
  • 描述:向Airbnb发出请求时绕过robots.txt限制
  • 推荐:除非出于测试目的需要,否则保持禁用状态

禁用第三方地理编码

  • 类型:布尔值(复选框)
  • 环境变量: DISABLE_GEOCODING
  • 默认: false
  • 描述:跳过Photon/Nominim地理编码步骤,让Airbnb自己解析位置字符串。启用此功能可恢复PR前的行为——每次搜索只会 airbnb.com,没有第三方电话。
  • 推荐:保持禁用状态,除非您特别需要零第三方出站流量。启用此功能后,非美国搜索可能会返回不正确的结果。看 外部服务.

工具

使用全面的过滤选项搜索Airbnb房源。

参数:

  • location (必需):要搜索的位置(例如,“加利福尼亚州旧金山”)。当供应时没有 placeId,服务器通过Photon/Nominim在客户端对该字符串进行地理编码——请参见 外部服务.
  • placeId (可选):谷歌地图地点ID。覆盖 location 并且完全跳过客户端的地理编码(没有第三方调用)。
  • checkin (可选):YYYY-MM-DD格式的入住日期
  • checkout (可选):YYYY-MM-DD格式的退房日期
  • adults (可选):成年人数量(默认值:1)
  • children (可选):子项数量(默认值:0)
  • infants (可选):婴儿数量(默认值:0)
  • pets (可选):宠物数量(默认值:0)
  • minPrice (可选):每晚最低价格
  • maxPrice (可选):每晚最高价格
  • cursor (可选):浏览结果的分页光标
  • propertyType (可选):按属性类型筛选— entire_home, private_room, shared_room,或 hotel_room
  • ignoreRobotsText (可选):覆盖此请求的robots.txt

退货:

  • 包含房产详细信息、定价和直接链接的搜索结果
  • 用于浏览其他结果的分页信息
  • 搜索参考URL

airbnb_listing_details

获取有关特定Airbnb房源的详细信息。

参数:

  • id (必填):Airbnb房源ID
  • checkin (可选):YYYY-MM-DD格式的入住日期
  • checkout (可选):YYYY-MM-DD格式的退房日期
  • adults (可选):成年人数量(默认值:1)
  • children (可选):子项数量(默认值:0)
  • infants (可选):婴儿数量(默认值:0)
  • pets (可选):宠物数量(默认值:0)
  • ignoreRobotsText (可选):覆盖此请求的robots.txt

退货:

  • 详细的房产信息包括:

  • 带坐标的位置详细信息

  • 便利设施

  • 众议院规则和政策

  • 物业亮点和描述

  • 直接链接到列表

技术细节

建筑

  • 运行时:Node.js 18+
  • 协议:通过stdio传输的模型上下文协议(MCP)
  • 格式:桌面扩展(DXT)v0.1
  • 依赖项:安全性和可靠性的外部依赖性最小

外部服务

除了 airbnb.com,服务器向两个第三方服务发出地理编码请求,将位置查询转换为精确的地图边界框。这绕过了Airbnb自己的服务器端地理编码器,该编码器会对许多非美国查询产生不正确的结果(例如,“法国巴黎”位于旺代;“丹麦哥本哈根”位于威斯康星州)。

服务端点用于备注
光子photon.komoot.io主地理编码器,每次搜索时都会调用 placeId由Komoot托管的基于OSM的免费服务。每次搜索一个请求。
提名nominatim.openstreetmap.org回退地理编码器,仅在Photon不返回边界框时调用OSMF使用政策 (最大约1个要求/秒)。

每次搜索只发送 location 从请求到地理编码器的字符串——没有其他请求字段,没有IP地理位置,没有跟踪标识符。当然,位置字符串本身就是用户键入的字符串。

选择退出: 有两种方法可以跳过地理编码器:

  • 根据请求: 提供明确的 placeId.何时 placeId 如果存在,服务器直接使用Airbnb自己的位置查找,而无需第三方调用。
  • 全球地: 设置环境变量 DISABLE_GEOCODING=true。服务器将完全跳过Photon/Nominim,并将原始位置字符串传递给Airbnb。这恢复了每次搜索的PR前行为,并保证了零第三方出站流量——代价是Airbnb自己的地理编码器错误处理了非美国地点的错误结果。默认为 false.

如果地理编码器无法访问或未返回任何结果,服务器将退回直接向Airbnb发送位置字符串,就像以前一样——因此,中断的最坏情况是国际搜索降级为之前的(损坏的)行为,而不是搜索完全失败。

错误处理

  • 带有时间戳的全面错误记录
  • Airbnb页面结构发生变化时的优雅降级
  • 网络请求的超时保护
  • 用于故障排除的详细错误消息

安全措施

  • 默认情况下符合Robots.txt
  • 请求超时限制
  • 输入验证和净化
  • 安全的环境变量处理
  • 无敏感数据存储

演出

  • 使用Cheerio进行高效的HTML解析
  • 在适当的情况下请求缓存
  • 最小内存占用
  • 快速启动和响应时间

兼容性

  • 平台:macOS、Windows、Linux
  • Node.js:18.0.0或更高
  • 克劳德桌面:0.10.0或更高
  • 其他MCP客户端:与任何支持MCP的应用程序兼容

发展

从源头构建

BASH``` 1 2 3 4 5 6# Install dependencies npm install

Build the project

npm run build

Watch for changes during development

npm run watch


### 测试


可以通过直接运行MCP服务器来测试扩展:


BASH```
1
2
3
4# Run with robots.txt compliance (default)
node dist/index.js
# Run with robots.txt ignored (for testing)
node dist/index.js --ignore-robots-txt

法律和伦理考虑

  • 遵守Airbnb的服务条款:此扩展用于合法的研究和预订协助
  • Robots.txt合规性:默认情况下,扩展程序尊重robots.txt
  • 速率限制:注意请求频率,避免让Airbnb的服务器不堪重负
  • 数据使用:仅出于合法目的提取公开信息

支持

  • 问题:报告漏洞和功能请求 GitHub问题
  • 文档:存储库中提供了其他文档
  • 社区:加入关于MCP和DXT开发的讨论

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

贡献

欢迎投稿!请阅读贡献指南,并提交任何改进请求。


备注:此扩展不隶属于Airbnb,股份有限公司。它是一个独立的工具,旨在帮助用户搜索和分析公开的Airbnb房源。