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 fetchproxy 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 fetchproxy extension. Use at your own discretion.
.mcp.json (project) or ~/.claude/mcp.json (global):
{
"mcpServers": {
"compass": {
"command": "npx",
"args": ["-y", "compass-mcp"]
}
}
}
git clone https://github.com/chrischall/fetchproxy
cd fetchproxy
npm ci
npm --workspace=@fetchproxy/extension-chrome run build
Then in Chrome: chrome://extensions → Developer mode → Load unpacked → pick packages/extension-chrome/dist/.
That's it. No API keys, no env vars.
compass_search_properties — Search by location + filters (price band, beds/baths min, home type). Slugifies free-text into Compass's /homes-for-sale/// 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//_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// (active by default; closed deals via include_closed).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.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.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_get_session_context — Lists every registered session and the active one.compass_set_active_session — Flips which registered session answers future requests.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.compass_search_propertiescompass_get_by_address → compass_get_propertycompass_get_property_photoscompass_get_price_historycompass_compare_propertiescompass_calculate_mortgageSessionNotAuthenticatedError. Local-math tools work either way./listing//view redirect; solving a challenge in the Chrome tab once unblocks the SSR pages.共 12 个版本