Airbnb搜索和列表-桌面扩展(DXT)
一个全面的桌面扩展,用于搜索Airbnb房源,具有高级过滤功能和详细的房产信息检索。构建为以桌面扩展(DXT)格式打包的模型上下文协议(MCP)服务器,便于安装和与兼容的AI应用程序一起使用。
特性
🔍 高级搜索功能
- 基于位置的搜索 支持城市、州和地区
- 国际定位支持 通过客户端地理编码,因此非美国查询(例如“法国巴黎”、“丹麦哥本哈根”)返回正确城市的结果
- 谷歌地图地点ID 精确定位目标的集成
- 属性类型筛选 适用于整个家庭、私人房间、共享房间或酒店房间
- 日期筛选 支持入住和退房日期
- 访客配置 包括成人、儿童、婴儿和宠物
- 价格范围过滤 具有最低和最高价格限制
- 分页支持 用于浏览大型结果集
🏠 详细房产信息
- 全面的上市详情 包括设施、政策和亮点
- 位置信息 带有坐标和邻域详细信息
- 众议院规则和政策 以便做出明智的预订决定
- 属性描述 以及关键特征
- 直接链接 轻松预订Airbnb房源
🛡️ 安全与合规
- Robots.txt合规性 具有可配置的测试覆盖
- 请求超时管理 防止挂起请求
- 增强的错误处理 详细记录
- 限速意识 尊重API的使用
- 安全配置 通过DXT用户设置
安装
适用于克劳德桌面
此扩展打包为桌面扩展(DXT)文件。要安装:
- 下载
.dxt文件来自发布页面 - 打开兼容的AI应用程序(例如,Claude Desktop)
- 通过应用程序的扩展管理器安装扩展
- 根据需要配置扩展设置
用于光标等。
开始之前,请确保 Node.js 已安装在您的桌面上 npx 工作。
- 转到:光标设置>工具和集成>新MCP服务器
- 将以下内容添加到您的
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"
]
}
}
}
- 重新启动。
配置
该扩展提供以下用户可配置选项:
忽略robots.txt
- 类型:布尔值(复选框)
- 默认:
false - 描述:向Airbnb发出请求时绕过robots.txt限制
- 推荐:除非出于测试目的需要,否则保持禁用状态
禁用第三方地理编码
- 类型:布尔值(复选框)
- 环境变量:
DISABLE_GEOCODING - 默认:
false - 描述:跳过Photon/Nominim地理编码步骤,让Airbnb自己解析位置字符串。启用此功能可恢复PR前的行为——每次搜索只会
airbnb.com,没有第三方电话。 - 推荐:保持禁用状态,除非您特别需要零第三方出站流量。启用此功能后,非美国搜索可能会返回不正确的结果。看 外部服务.
工具
airbnb_search
使用全面的过滤选项搜索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_roomignoreRobotsText(可选):覆盖此请求的robots.txt
退货:
- 包含房产详细信息、定价和直接链接的搜索结果
- 用于浏览其他结果的分页信息
- 搜索参考URL
airbnb_listing_details
获取有关特定Airbnb房源的详细信息。
参数:
id(必填):Airbnb房源IDcheckin(可选):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房源。