mcpField
H
homes-mcp

homes-mcp

本地服务
github.com/chrischall商业与营销04 天前更新

关于 homes-mcp

homes-mcp 是面向 Claude 等 MCP 客户端的 homes.com 房产服务,供购房者搜索房源、查看物业资料并进行贷款估算。它通过 ContextMint Bridge 使用已登录的浏览器会话读取页面数据;使用须遵守 homes.com 条款,且仅限个人非商业用途。

主要功能

  1. 01按地点和条件搜索房源
  2. 02解析地址并批量查询
  3. 03查看物业详情、照片与历史
  4. 04比较房源及市场报告
  5. 05读取已保存房源和搜索
  6. 06计算购房能力与抵押贷款

适用场景

  1. 01按城市或邮编查找待售房源
  2. 02核对物业税费、价格变动和照片
  3. 03并排比较多处物业
  4. 04根据收入或贷款条件估算预算

MCP 相关

提供房源搜索、物业信息、历史、市场报告及贷款计算等工具给 MCP 客户端。homes.com 请求经 ContextMint Bridge 转发到用户已登录的浏览器标签页。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"chrischall-homes": {
"command": "npx",
"args": [
"-y",
"homes-mcp"
],
"env": {
"HOMES_WS_PORT": "<HOMES_WS_PORT>",
"HOMES_COMMUNITIES_FILE": "<HOMES_COMMUNITIES_FILE>"
}
}
}
}
启动命令npx -y homes-mcp
需要配置的环境变量
HOMES_WS_PORTOverride the fetchproxy WebSocket port (default 37149).
HOMES_COMMUNITIES_FILEPath to a JSON array of community names for feature extraction; overrides the built-in Lake Lure / mountain-NC default vocabulary.

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

安装包
npmhomes-mcp2.1.11

工具

21

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

参数类型必填说明
sortenum否排序顺序。目前仅支持 "newest"。newest
viewenum否响应格式:"compact"(默认)会省略响应中其他位置已有的字段;"full" 会返回此服务端支持的所有字段。compact 会从响应中移除图片/头像 URL;"full" 会原样返回 Homes.com 的负载。不支持字段投影:此服务端没有经过验证的记录表明哪些 Homes.com 字段重要,擅自指定可能会丢弃调用方需要的字段。compact | full
limitinteger否要返回的房源数量上限(默认值为 40,也是 homes.com SSR 页面大小)。传入大于 40 的值仍会受页面大小限制;响应会设置 `truncated: true`,并将 `total_estimated` 设为 homes.com 报告的总数。
locationstring是自由文本地点:城市、邮编、街区(例如 "Atlanta, GA"、"Brooklyn, NY"、"30311"、"Park Slope")
price_maxnumber否USD 价格上限(含)。作为 homes.com 的 `?price-max=` 筛选条件传入。与 price_min 配合使用,可按价格区间细分房源较多的市场,使每个分段低于约 40 条的 SSR 上限。
price_minnumber否USD 价格下限(含)。作为 homes.com 的 `?price-min=` 筛选条件传入。可与 property_type / listing_type 组合使用。两者同时提供时,必须小于或等于 price_max。
listing_typeenum否搜索类别。默认为 for_sale。"sold" 返回近期已售房源(有助于了解市场情况)。"for_rent" 返回出租房源。"open_houses" 返回已安排开放看房的房源。"new_construction" 返回 /new-homes/ 下的开发商房源。for_sale | sold | for_rent | open_houses | new_construction
property_typeenum否限定为特定的 homes.com 房源类型。可与 listing_type 组合使用。single_family | condo | townhouse | land | mobile | multi_family

详细介绍

homes-mcp

CI npm license

将 homes.com 房地产服务接入 MCP 服务,供 Claude 使用——通过自然语言搜索房源、解析地址、获取房产详情、价格/税费历史记录、市场报告、已保存的房源、照片集,以及进行可负担性/抵押贷款计算。

⚠️ homes.com 未发布面向消费者的公共 API。此服务会读取 homes.com 自身发送到浏览器的相同服务端渲染 HTML 和 Schema.org JSON-LD,并通过 ContextMint Bridge 浏览器扩展,经由你已登录的浏览器标签页进行访问。每个请求都会使用你现有的会话——你的 Cookie、TLS 和 JS 上下文——就像你亲自在浏览器中点击一样。请将此视为对 homes.com 的非正式使用。使用风险由你自行承担。

工具

工具用途
homes_search_properties按自由文本位置(城市/邮编/社区)搜索房源。将输入转换为适用于 homes.com URL 路由的 slug(位置为空或无法转换为 slug 时会报错,而不是返回空结果),并解析 JSON-LD CollectionPage.mainEntity.itemListElement[]。可按 property_type、listing_type、sort 和 price_min/price_max 价格区间筛选。返回地址、价格、卧室/浴室数量、平方英尺、主照片、经纪人 + 经纪公司;超过约 40 条房源的 SSR 上限时会标记 truncated/total_estimated。
homes_get_by_address将一个美国街道地址解析为 homes.com 上对应的规范房产 URL + 不透明哈希。依次尝试结构化输入提示 → slug → 城市/邮编搜索回退,并验证完整街道名称和单元号。返回 matched_via;无法解析时返回 { resolved: false }。
homes_resolve_addresses批量调用 homes_get_by_address(最多 100 个地址,保留输入顺序,逐行返回结果)。批量处理 3 个或更多地址时优先使用。
homes_get_property按 URL 获取房产的完整记录。解析 JSON-LD + DOM 侧的各个部分:地址、纬度/经度、卧室/浴室数量、平方英尺、建造年份、价格、状态、经纪人(姓名/职务/个人资料;仅当 include_agent_contact: true 时包含电话/电子邮件)+ 经纪公司、亮点、学校、HOA(原始值 + 月费)、土地面积(平方英尺 + 英亩)、停车位、供暖/制冷、MLS ID/来源、税费、上市天数、降价记录、extracted_features。可选内嵌 price_history/tax_history。
homes_get_property_photos从详情页的 <img> 标签抓取完整照片库(JSON-LD 仅包含一张图片)。每张照片返回 { url, position, alt? },并筛选出 homes.com CDN 中的照片。
homes_bulk_get单次调用获取最多 200 套房产的结构化记录(逐行返回错误,保留输入顺序)。
homes_compare_properties并排比较 2–8 套房产,并提供对齐的摘要表。逐行记录每个目标的错误。并发获取数据。
homes_get_nearby_listings获取详情页中“此房产附近待售房源”交叉链接卡片(待售房源,可选租赁房源)。仅返回 URL + 地址。
homes_get_history单次获取价格 + 税费历史:listing_events、ownership_events、lien_events、标准化后的 events_normalized 和 tax_records。events_normalized 仅在 PriceChange 行设置 price_change_pct;其他行包含 homes.com 的“挂牌价到成交价”数值 list_to_sale_pct(不含 dom / source_mls 键)。
homes_get_property_history已弃用 — 仅提供价格/所有权/留置权时间线。请优先使用 homes_get_history。
homes_get_tax_history已弃用 — 仅提供逐年税费记录。请优先使用 homes_get_history。
homes_get_market_report根据市场的中位数/平均值/每平方英尺价格,数据取自 sold 搜索页面的 JSON-LD。位置为空或无法转换为 slug 时会报错,而不是返回空市场结果。
homes_get_saved_homes获取已登录用户收藏的房产。需要通过身份验证。
homes_get_saved_searches获取已登录用户保存的搜索。需要通过身份验证。
homes_calculate_affordability本地负担能力计算器 — 根据收入 + DTI + 利率计算最高购房价格。不访问网络。
homes_calculate_mortgage本地 PITI 计算器 — 计算本金 + 利息、税费、保险、HOA、PMI。不访问网络。
homes_estimate_rent_vs_buy本地租房与买房模型 — 需提供 monthly_rent(homes.com 没有可用于推算该值的租金信号;见下文)。不访问网络。
homes_healthcheck通过 fetchproxy 桥接层对 /robots.txt 执行往返请求(使用来自 @chrischall/mcp-utils/fetchproxy 的共享 registerBridgeHealthcheckTool),并返回诊断信息:桥接层角色/端口/版本、扩展连接状态(bridge.session_state、pending_pair_code、extension_connected)、分类后的 error.kind(timeout / bridge_down / session_not_ready / protocol / unknown),以及通俗易懂的提示,用于区分“桥接层已关闭”、“扩展未连接/配对码待处理”和“homes.com 侧问题”。
homes_get_session_context / homes_register_session / homes_set_active_session列出/注册/切换账户 标签,供你自行记录管理。仅设置标签:请求始终使用 fetchproxy 浏览器标签页当前登录的账户。
已知数据缺口:租金估算

homes.com 不会在其面向消费者的网站上发布任何租金估算——没有 rent_zestimate 的对应数据,也没有房产详情页上的“预估租金”组件,更没有可比租赁房源的接口。homes_estimate_rent_vs_buy 工具可用于计算,但调用方必须直接传入 monthly_rent(无法从 homes.com 获取租金估算后再传入)。

如需租赁相关信息,请使用配套 MCP:zillow_get_property 的详情记录中包含 rent_zestimate,而 redfin_get_comparable_rentals 可根据 URL 返回租赁可比房源。可参阅 issue #28 了解可行性调查。

条款确认

使用此 MCP 服务即表示你确认并同意以下内容:

1. 此服务会访问你自己的 homes.com 会话。 每个请求都会通过 ContextMint Bridge 扩展,经由你自己的浏览器标签页发送——使用你的 Cookie、你的 TLS 和你的会话。它不会、也无法访问其他人的账户。

2. homes.com 的使用条款适用于你对本服务的使用,就像适用于你直接使用 homes.com 一样。条款禁止未经书面许可进行自动化爬取,IDX 房源数据仅授权用于个人非商业用途。每次调用此服务中的工具,即表示你同意这些条款。

3. 仅限个人非商业用途。 本项目与 homes.com 或 CoStar Group 无关联,也未获其认可、赞助或与其合作。这是一款个人自动化工具,用于读取 homes.com 发送到你浏览器的相同服务器渲染 HTML 和 Schema.org JSON-LD。请勿用它批量提取房源、再分发 IDX 数据、训练 AI 模型、填充竞争性房地产产品,或用于任何商业目的。

4. 不保证稳定性。 此服务会读取 SSR 页面的 Schema.org JSON-LD(<script type="application/ld+json">)和 DOM 端的 <img> 标签;这些页面的 URL 规则(/<city>-<state>/、/property/<slug>/<id>/)可能在不另行通知的情况下更改。服务可能会出错,也可能停止工作。这是设计使然——相关页面并非由 homes.com 维护。

5. 你须对将此服务与你访问 homes.com 相关联所产生的任何后果承担全部责任,包括速率限制、账户停用、IP 封禁、AWS WAF 验证挑战,或 homes.com 采取的任何执法措施。如果 homes.com 对你的使用提出异议,请停止使用此服务。

本节是维护者本着诚信对条款所作的摘要,不构成法律建议,也不会修改或取代 homes.com 的实际使用条款。

安装

选项 A — npx(首次发布后)

添加到 .mcp.json:

{
  "mcpServers": {
    "homes": {
      "command": "npx",
      "args": ["-y", "homes-mcp"]
    }
  }
}
选项 B — 从源代码安装
git clone https://github.com/chrischall/homes-mcp
cd homes-mcp
npm install
npm run build
{
  "mcpServers": {
    "homes": {
      "command": "node",
      "args": ["/path/to/homes-mcp/dist/bundle.js"]
    }
  }
}
一次性浏览器设置

homes-mcp 通过 ContextMint Bridge 扩展与浏览器通信。该扩展由所有基于 fetchproxy 的 MCP(zillow-mcp、opentable-mcp、resy-mcp、……)共享,并需单独安装——此处不包含该扩展。请从 ContextMint Bridge releases 获取:

  • **Chrome:**下载 Chrome 压缩包并解压,然后打开 chrome://extensions → 切换到开发者模式 → 加载已解压的扩展程序 → 选择解压后的文件夹。
  • **Safari:**目前尚不可用——该扩展将内置于 ContextMint 应用中,但目前没有公开下载链接。暂时请使用 Chrome。

来源。 ContextMint Bridge 是 fetchproxy 浏览器扩展的新名称,由同一位维护者开发;fetchproxy 自己的 README(扩展)中也指向了它。其源代码公开于 nullnet-app/contextmint-bridge:你可以自行构建,也可以根据旁边发布的 .sha256 文件校验发布压缩包(shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256)。目前还没有 Chrome 网上应用店页面。

打开 homes.com 并登录即可。该服务所需的身份验证就完成了。

工作原理

┌────────────────┐  stdio   ┌──────────────────┐   WS   ┌──────────────────┐    fetch()    ┌─────────────┐
│ MCP client     │◀────────▶│  dist/bundle.js  │◀──────▶│  ContextMint     │◀────────────▶│ homes.com  │
│ (Claude, etc.) │          │  (Homes MCP)    │ :37149 │  Bridge          │   (real TLS, │ (your tab)  │
└────────────────┘          └──────────────────┘        │  (separate)      │   cookies)    └─────────────┘

MCP 服务在 Node 中运行,但所有对 homes.com 的 HTTP 调用都会通过 ContextMint Bridge 扩展发送到你当前打开的浏览器标签页。每个请求都使用你现有的会话——TLS 指纹、Cookie 和 JS 执行上下文都与屏幕上已打开的页面一致。没有无头浏览器替身,没有独立身份,也没有第三方代理:只有你的真实浏览器代表自己行事,由 MCP 服务决定要请求什么。

homes.com 的页面是 SSR React,且没有公开的 JSON API——每个工具都会从各页面内嵌的 Schema.org JSON-LD 区块(<script type="application/ld+json">)中提取数据。搜索页面会将房源放在 CollectionPage.mainEntity.itemListElement[] 中;详情页面会输出一个 RealEstateListing 图节点,其中 mainEntity 包含地址、面积和地理位置,offers.offeredBy[] 则包含房源经纪人。由于 JSON-LD 只包含一张主图,照片会从 DOM 中抓取。客户端会将这些内容封装为工具接口,因此调用方无需自行解析 HTML。

命令

npm test               # tsc typecheck + vitest, mocked transport, no network
npm run test:watch
npm run test:coverage
npm run build          # tsc --noEmit + esbuild bundle → dist/bundle.js
npm run dev            # node dist/bundle.js (after build)

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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