360 Secure SkillHub
360 安全技能中心

compass

基于 MCP 的 Compass 房产查询 Skill:借助浏览器扩展在已登录会话中检索房源列表、房源详情、照片、价格历史、可比租赁与经纪人房源,支持地址解析、批量获取与多房源对比,并提供本地按揭与可负担性计算;工具均为只读,需先登录 Compass。

chrischall
chrischall
热度 61.13
最近更新 2026-10-16 18:24:13
分类:搜索依赖:MCP 服务 / 联网浏览搜索 / 第三方 API / 代码执行应用场景:研究 / 购物 / 个人理财 / 推荐

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add chrischall/compass
Metadata
name
compass
description
Look up real-estate listings, property details, photos, price history, and resolve addresses on Compass via MCP. Triggers on phrases like "find homes on compass in", "compass property details for", "compass photos for", "compass price history for", "resolve this address on compass", "compare these compass listings", "what does compass say about", or any request involving Compass properties, prices, or comparisons. Requires compass-mcp installed and the ContextMint Bridge extension active (see Setup below).

compass-mcp

MCP server for Compass — natural-language access to listings, property records, photos, price history, and address resolution. Routes every request through your signed-in compass.com tab via the ContextMint Bridge browser extension, so AWS WAF sees a real browser session instead of a Node process.

⚠️ Compass does not publish a public consumer API. Unlike portals with a JSON API surface, compass.com is a server-rendered React app — there are no /api/... data endpoints to call. Every tool extracts state from the inline scripts each page server-renders (global.uc.sharedReactAppProps.initialResults for search, window.__INITIAL_DATA__.props.listingRelation.listing for homedetails). Requests are dispatched through your own signed-in browser tab via the ContextMint Bridge extension. Use at your own discretion.

Setup

1. Install compass-mcp

.mcp.json (project) or ~/.claude/mcp.json (global):

{
  "mcpServers": {
    "compass": {
      "command": "npx",
      "args": ["-y", "compass-mcp"]
    }
  }
}

2. Install the ContextMint Bridge extension (one-time, shared across all fetchproxy-based MCPs)

Get it from the ContextMint Bridge releases:

  • Chrome: unzip the Chrome zip, then chrome://extensions → Developer mode → Load unpacked → pick the unzipped folder.
  • Safari: the bridge ships inside the ContextMint app; you enable it in Safari's settings. The ContextMint app has no public download yet, so there is no Safari install link to give — use Chrome for now.

ContextMint Bridge is the fetchproxy extension renamed, from the same maintainer (fetchproxy's README points to it); its source is public, so build it yourself or verify a release zip with shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256.

3. Open compass.com and sign in.

That's it. No API keys, no env vars.

Tools

Listing data (public)

  • compass_search_properties — Search by location + filters (price band, beds/baths min, home type). Slugifies free-text into Compass's /homes-for-sale/<slug>/<filters>/ URL routing and extracts the SSR listings array. Returns matching listings with price, beds/baths, sqft, address, and the Compass home URL.
  • compass_get_property — Full record by url (a Compass homedetails URL or path) or listing_id_sha alone. When only the sha is supplied, the tool resolves the canonical path internally via the WAF-immune omnisuggest typeahead, then fetches the /homedetails/<slug>/<sha>_lid/ page. Returns address, neighborhood, beds/baths, sqft, lot size, price + $/sqft, monthly charges, MLS status, amenities, schools, parcel number, listing agent, and extracted_features parsed from the description.
  • compass_get_property_photos — Full photo gallery from listing.media[] — original + thumbnail URLs and pixel dimensions. Floorplans/other media gated behind include_all_categories.
  • compass_get_price_history — Listing-history events (Listed / Sold / Pending / Price Change / Delisted) with date, price, status, MLS attribution. Returns both this-listing and prior-listing aggregates.
  • compass_get_comparable_rentals — Nearby rental listings for a property: lifts the target's city/state/zip, then searches rentals in the same locality. Returns rentals: [] (with target context) when none come back.
  • compass_get_agent_listings — Other listings by the same agent, from /agents/<slug>/ (active by default; closed deals via include_closed).

Resolution & batch

  • compass_get_by_address — Resolve a free-text street address to the canonical Compass URL, listing_id_sha, and pid. Walks the structured typeahead first (WAF-immune), then SSR fallbacks; verifies each candidate against the query before accepting. Returns { resolved: false, error } rather than leaking a wrong URL.
  • compass_resolve_addresses — Bulk version of get_by_address — concurrent server-side resolution of many addresses in one round trip, sharing the same rung walker and per-row error contract.
  • compass_bulk_get — Unbounded structured fetch (up to 200 targets) by url or listing_id_sha. One row per target; per-target errors captured per-row. No summary table.
  • compass_compare_properties — Fetch and align up to 25 properties side-by-side. Per-target errors captured per-row; an opt-in pivoted summary table via include_summary.
  • All three batch tools share an overall deadline (~45s). A row still unsettled when it fires comes back status: "pending", retryable: true with a top-level pending count — not a miss; re-run just those rows.

Local math (no network)

  • compass_calculate_mortgage — PITI calculator. Provide home price, interest rate, optional down payment / taxes / insurance / HOA / PMI; returns a full monthly breakdown + total interest over the term.
  • compass_calculate_affordability — Max purchase price under the 28/36 DTI rule from income, debts, down payment, and rates.

Diagnostics & session

  • compass_healthcheck — Round-trips a no-op request (/robots.txt) through the full bridge to confirm the WebSocket bridge is up, the extension is connected, and the signed-in tab is responsive — in one call.
  • compass_register_session — Registers (or refreshes) a logical session keyed by account identity, so several signed-in accounts can be switched between.
  • compass_get_session_context — Lists every registered session and the active one.
  • compass_set_active_session — Flips which registered session answers future requests.

Not yet supported

  • compass_get_saved_homes / compass_get_saved_searches — Compass renders /overview/favorites and saved searches via an auth-scoped GraphQL endpoint that isn't reachable from a one-shot fetch. Both throw a clear "not yet supported" error today.

Trigger examples

  • "Find me 2-bedroom condos under $1.5M in Brooklyn on Compass" → compass_search_properties
  • "What does Compass say about 42 Monroe St in Brooklyn?" → compass_get_by_address → compass_get_property
  • "Show me the photos for that Compass listing" → compass_get_property_photos
  • "Price history for this Compass home" → compass_get_price_history
  • "Compare these three Compass listings" → compass_compare_properties
  • "Monthly payment on a $500k home, 20% down, 6.5% rate" → compass_calculate_mortgage

Gotchas

  • Sign-in required. If the user isn't signed into compass.com in the bridged Chrome tab, network tools fail with SessionNotAuthenticatedError. Local-math tools work either way.
  • AWS WAF challenge. Compass serves a WAF challenge to fresh sessions and 403s some SSR free-text paths. The address resolver routes through the WAF-immune omnisuggest typeahead to avoid it, and sha-only lookups use the WAF-immune /listing/<sha>/view redirect; solving a challenge in the Chrome tab once unblocks the SSR pages.
  • No write surface. All tools are read-only — no saving homes/searches or submitting contact forms.
  • No market-report / Zestimate-history tool. Compass doesn't expose region-level market data or a historical estimate series in its SSR blob, so there's no equivalent to a market-report tool.
  • Saved homes/searches are stubs. See "Not yet supported" above.