关于 Inside Airbnb
Inside Airbnb 是面向短租市场研究者的 MCP 服务,提供所覆盖城市的 Airbnb 房源统计与可筛选的房源记录。它包含价格、房型、街区和可订状态等信息,且各城市数据带有各自的抓取日期。
主要功能
- 01列出覆盖城市及房源数量
- 02查看城市、房型和街区价格中位数
- 03按条件筛选房源记录
- 04返回可订状态与评价数量
适用场景
- 01比较不同城市的短租价格
- 02分析街区或房型的房源分布
- 03按价格和房型筛选房源
MCP 相关
通过 MCP 提供城市列表、城市汇总和房源筛选工具。可连接 Pipeworx 网关,也可作为本地 stdio MCP 服务运行;独立运行时没有可查询的数据。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/inside-airbnb/mcpclaude mcp add --transport http pipeworx-io-inside-airbnb https://gateway.pipeworx.io/inside-airbnb/mcp{"mcpServers":{"pipeworx-io-inside-airbnb":{"type":"http","url":"https://gateway.pipeworx.io/inside-airbnb/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-inside-airbnb":{"type":"http","url":"https://gateway.pipeworx.io/inside-airbnb/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-inside-airbnb":{"type":"http","url":"https://gateway.pipeworx.io/inside-airbnb/mcp"}}}{"mcpServers":{"pipeworx-io-inside-airbnb":{"serverUrl":"https://gateway.pipeworx.io/inside-airbnb/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
44| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| q | string | 否 | question 的别名。 |
| ask | string | 否 | question 的别名。 |
| text | string | 否 | question 的别名。 |
| input | string | 否 | question 的别名。 |
| packs | array | 否 | 可选。将路由限制为这些包的 slug(例如 ["sec-form-d","sec-13f"]),路由器随后只会从这些包中的工具进行选择。省略则使用默认的完整目录路由。Slug 可从 list_packs / search_packs / https://pipeworx.io/directory 获取;未列出或未知的 slug 会被忽略,并在 _meta.pack_scope.ignored 中列出。如果没有任何 slug 能匹配问题,则会在整个目录中路由,并设置 _meta.pack_scope.full_catalog:true(绝不会返回空答案)。 |
| query | string | 否 | question 的别名。 |
| prompt | string | 否 | question 的别名。 |
| message | string | 否 | question 的别名。 |
| question | string | 是 | 用自然语言表达的问题或请求。支持 query、q、prompt、text、input、ask、message 作为别名。 |
详细介绍
@pipeworx/inside-airbnb
按城市提供短租(Airbnb)房源数据:每晚房价中位数、房间类型和街区细分,以及可筛选的房源级记录——价格、房间类型、可订状态、评价数——涵盖此数据包已加载的所有城市。Fleet #2973。
属于 Pipeworx——一个将 AI Agent 连接到 1784+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未获其认可,也非由其发布。
工具
list_str_cities()— 列出所有覆盖的城市,以及房源数、总体每晚房价中位数和该城市自己的抓取日期(data_as_of— 各城市的覆盖日期不同)。str_city_summary(city)— 房源总数、总体房价中位数、按房间类型细分的数据(整套房屋/公寓、独立房间、合住房间、酒店房间——每种类型都包含各自的数量和房价中位数),以及按房源数排序的热门街区(每个街区都包含各自的数量和房价中位数)。如果城市未覆盖,工具会按名称拒绝请求,并列出所有已覆盖城市。str_listings(city, neighbourhood?, room_type?, min_price?, max_price?, limit?, offset?)— 房源级记录:ID、公开房源 URL、房源标题、街区、房间类型、价格、最少入住晚数、评价数、最近评价日期、availability_365,以及房东的房源总数(纯数字)。limit默认为 50(最大值为 200);如果匹配记录数超过返回数,响应会带有truncated: true和total_matching,而不是悄然丢弃记录。
城市名称采用宽松匹配("NYC"、"New York"、"new-york-city" 均可;参见 src/store.ts 中的 CITY_ALIASES)。room_type 接受四种标准值,也接受宽松匹配("apartment" → "Entire home/apt")。
个人数据
Inside Airbnb 的原始房源文件中,每一行都包含 host_id、host_profile_id、host_name(房东的名字)和 license(可能包含当地注册号)。加载程序不会读取这四列中的任何一列,且此数据包所服务的任何 D1 表中都不存在这些列——没有可供误选的列,而不仅仅是响应结构中省略了字段。保留 calculated_host_listings_count 是因为它是纯计数,而非标识符——它表示该房东经营的房源数量,而非房东身份。每个响应仅限于房源级或城市/街区级数据:价格、房间类型、可订状态、街区、评价数以及由这些数据汇总得到的指标,外加房源 ID 和公开的 https://www.airbnb.com/rooms/<id> URL(这两项在 Airbnb 自己的网站上已经公开)。
认证
无需密钥。工具仅通过 Pipeworx 网关提供响应,数据存放在该网关中;单独运行 npm install 没有可读取的数据,在此环境中,每个工具都会抛出清晰的 "not bound in this runtime" 错误,而不是返回空列表。
许可证
Inside Airbnb 以 CC BY 4.0
(https://creativecommons.org/licenses/by/4.0/) 发布内容。根据 Inside Airbnb 自己的署名要求,此处每个工具响应都包含 source、source_url、license 和 attribution 字段,并引用该许可证。
数据来源
- Inside Airbnb,按城市提供的房源摘要——由社区维护的公开 Airbnb 房源数据快照,按城市独立抓取和发布,采用 CC BY 4.0 许可证。该项目仅发布按城市划分的批量文件(没有实时查询 API),因此此数据包会构建数据副本(
scripts/inside-airbnb/load-data.mjs),而非充当代理。只注明发布者和数据集,不得注明下载路径、目录、文件名、端点、数据源 URL 或查询形式(CLAUDE.md 第 9b 步)。路由仅存在于scripts/inside-airbnb/load-data.mjs中。
覆盖范围
精选了北美、欧洲、亚太地区的主要城市,以及南美、非洲和中东的少数城市——确切的实时城市列表请参见 list_str_cities,完整表格(slug、国家、抓取日期)请参见 scripts/inside-airbnb/load-data.mjs。这里并未涵盖 Inside Airbnb 发布数据的所有城市(其覆盖范围超过一百个城市),而是从各地区精选出具有代表性的一组城市。扩展覆盖范围时,只需在加载器的 CITIES 表中添加一行,然后使用 --cities <new-slug> 重新运行即可——架构和工具都无需更改。
已知限制——扩展此数据包前请先阅读
每个城市的抓取日期相互独立,且会逐渐变化。 Inside Airbnb 按各城市自己的节奏重新抓取数据(大约每季度一次,各城市之间不同步),因此,同一轮加载的不同城市的 data_as_of 合理地会有所不同——这不是错误,而是此数据包中每个城市唯一真实的来源信息。刷新数据时,应针对每个城市重新检查 https://insideairbnb.com/get-the-data/ 上的当前日期,而不是复用加载器中写死的日期。
中位数在加载时预先计算,而非在查询时计算。 D1/SQLite 没有 MEDIAN() 聚合函数,而常见的整数偏移子查询写法若在每次请求中按街区运行一次,会很快超出 D1 的单次查询 CPU 预算。加载器会在 Node 中,针对该城市完整的内存价格数组,一次性计算所有中位数(全市、按房型、按街区),并存储结果——因此 str_city_summary 只需执行一次 SELECT,而非 N 次。若要扩展聚合指标(例如增加价格百分位数),需修改加载器的聚合步骤,而不是添加运行时查询。
listings.name 是房源自身的标题,不是房东信息。 这是房东为房源填写的自由文本(例如“公园附近的温馨单间公寓”),不会被排除——它不是此数据包删除的四项个人信息之一。房东若在房源标题中写入自己的姓名,该信息此前就已显示在 Airbnb 自己的公开页面上;此数据包不会增加 Inside Airbnb 在该列中已发布内容之外的任何信息披露,并且完全不会读取单独的、明确属于个人信息的 host_name 列。
刷新或扩展数据
node scripts/inside-airbnb/load-data.mjs # full reload, all covered cities
node scripts/inside-airbnb/load-data.mjs --cities paris,london # reload a subset
node scripts/inside-airbnb/load-data.mjs --concurrency 4 # be gentler on the upstream
需要使用登录 Pipeworx Cloudflare 账户的 wrangler。每次运行都会替换 cities、neighbourhoods 和 listings(DROP 后重新加载),而非追加,并且仅处理传入的城市。使用 --cities 指定子集重新加载时,仍会删除并重建整个架构,因此完整加载后若使用子集重新运行,其他城市的数据表仍会保留,只是因为 DROP TABLE 和 CREATE TABLE 每次完整运行时只执行一次,而不是每个城市执行一次;使用子集重新运行适用于测试某个城市的解析结果,不适用于生产环境的部分刷新。生产环境刷新时,请传入所有要保留的城市,或完全省略 --cities。
快速开始
添加到 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"inside-airbnb": {
"url": "https://gateway.pipeworx.io/inside-airbnb/mcp"
}
}
}
此端点实际提供的内容
https://gateway.pipeworx.io/inside-airbnb/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 的共享元工具——ask_pipeworx、discover_tools、search_within、remember/recall 和网关范围内的其余工具。因此,你看到的工具数量会多于此表:目前,单个工具包端点除了列出该工具包自身的工具,还会列出约 30 个共享工具。连接的 initialize 响应会说明其确切范围,是当天适用范围的权威说明。
这是有意为之,并非意外的多路复用。元工具让限定范围的连接也能回答此工具包未涵盖的问题——通过 ask_pipeworx 在整个目录中路由——无需再添加第二个 MCP 服务。目前无法挂载不含这些元工具的工具包端点;如果额外的架构定义占用的上下文超过路由功能带来的价值,不妨只连接一次完整网关,而不是连接多个工具包端点。
或者连接完整的 Pipeworx 网关,直接列出所有工具包的工具,而不只是此工具包的工具:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
两个 URL 都连接到同一个网关,也能访问相同的 1784+ 个数据源。唯一的区别是哪些工具包的工具会被直接列出;无论连接哪个 URL,ask_pipeworx 都能访问全部工具。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/list_str_cities \
-H 'Content-Type: application/json' \
-d '{}'
首次调用无需账号。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/list_str_cities。查找工具:使用 {"query":"..."} 调用 POST https://gateway.pipeworx.io/v1/tools/search_packs。
独立运行(无需网关账号)
此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账号,也无需与网关往返通信:
{
"mcpServers": {
"inside-airbnb": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-inside-airbnb"]
}
}
}
或者直接运行,以确认它可以启动:
npx -y @pipeworx/mcp-inside-airbnb
它通过 stdin/stdout 使用 MCP,并针对仅此工具包的工具响应 initialize/tools/list/tools/call——不包含上文网关连接额外提供的任何共享元工具。来源相同,工具相同,但不提供 ask_pipeworx 路由。
使用 ask_pipeworx
你可以用通俗英语提问,而不是直接调用工具——此功能既适用于上文的工具包端点,也适用于完整网关:
ask_pipeworx({ question: "your question about Inside Airbnb data" })
网关会选择合适的工具,并自动填入参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。