A side-by-side look at the Compass MCP and Fabrica MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Compass MCP for real estate work as a local process; choose Fabrica for real estate over a hosted endpoint. You can also run both side by side in one mcpServers block.
compass_search_properties, compass_get_property, compass_get_property_photos.search_properties, get_property, get_lending_market.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Real Estate | Real Estate |
| Quality signal | 56/100 · Good | 57/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 0 |
| Directory activity | 0 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 18 | 19 |
| Full listing | View Compass MCP | View Fabrica |
compass_search_propertiesSearch listings by location, price band, beds, home type. Slugifies free-text into Compass's URL routing and extracts the SSR listings array.compass_get_propertyFull record for a property by URL or `listing_id_sha`. Address, neighborhood, beds/baths, sqft, lot, price + $/sqft, monthly charges, MLS status, amenities, schools, parcel number.compass_get_property_photosFull photo gallery — every image in `listing.media[]` with original + thumbnail URLs and pixel dimensions. Floorplans/other media gated behind `include_all_categories`.compass_get_price_historyFull listing-history events (Listed / Sold / Pending / Price Change / Delisted) with date, price, status, and MLS attribution. Returns both this-listing and prior-listing aggregates.compass_compare_propertiesSide-by-side comparison of up to 25 properties with an opt-in aligned summary table. Per-target errors captured per-row. Concurrent fetches.compass_calculate_affordabilityLocal affordability calculator — max purchase price from income + DTI + rates. No network.compass_get_by_addressResolve a free-text street address to the canonical Compass URL, `listing_id_sha`, and `pid` in one call. Returns `{ resolved: false, error: "no listing found" }` rather than throwing when there is no match.compass_resolve_addressesBulk version of `compass_get_by_address`: resolves many addresses in one call with the same rung walker and a per-row error contract.compass_bulk_getFetch up to 200 listings by URL or `listing_id_sha` in one call. One row per target; per-target errors captured per-row.compass_get_comparable_rentalsNearby rental listings for a property, searched in the target's own city/state/ZIP.compass_get_agent_listingsA Compass agent's active listings (closed deals via `include_closed`).compass_calculate_mortgageLocal PITI calculator — principal+interest, taxes, insurance, HOA, PMI. No network.search_propertiesSearch tokenized real properties on the Fabrica protocol (Ethereum Mainnet). Returns a list of properties matching the given filters, or counts per state or county with groupBy. When a state or county is given, the response includes the link to that location's page on fabrica.land. Each result is a real parcel of land in the US, held in a trust whose beneficial interest is an ERC-1155 token.get_propertyGet comprehensive details about a specific tokenized property on Fabrica (Ethereum Mainnet), including legal description, valuation, property tax status, Property checks (with their 5-digit numeric encoding), current ownership and holders, active loans, marketplace listings and offers, recent activity, photos and a parcel map image link. Also its lifecycle stage (premint, minted, removal in progress), fees assessed on the token with approval and payment state (fees is null when none are assessed), and flags for a duplicate parcel claim or the marketplace screen (an empty list when none apply). An old premint ID that was replaced by a minted token returns the successor. Boundary geometry is returned by get_property_map. The response includes the URL of the operating agreement (the trust instrument) that governs the token; get_trust_documents returns the full legal record. Pass display: "fullscreen" to ask a host that renders the property card to open it fullscreen (the host may decline). Owner names: the majority holder's chosen display name is returned; the deed grantor from Fabrica's own records is in get_trust_documents; owner names from third-party parcel data are never returned.get_lending_marketGet an overview of the Fabrica lending market: loan counts, loans, DeFi lending pool liquidity and utilization, average APR, and recent loan events. Owners borrow against their properties through the DeFi lending pool (pool-based lending). Loan records also include historical peer-to-peer loans made through a former integration that is now retired.get_portfolioGet a wallet's Fabrica portfolio: properties owned (paged), active loans (as borrower or lender), marketplace orders, credit history, and total portfolio value. Counts and totals always cover the whole wallet.get_protocol_statsGet protocol-wide statistics for the Fabrica real property tokenization platform: total properties, estimated value, lending volume and loan counts, DeFi lending pool TVL and utilization, geographic distribution, and contract addresses.get_property_mapGet GeoJSON boundary data for a tokenized property, for mapping, spatial analysis, and visualization. The county boundary is added only with includeCountyBounds: true.get_trust_documentsGet the legal record of a tokenized property: the trust that holds it (holding entity, formation date), the trust agreement that governs the token (name, version, link), the legal description, the parcel identifiers (FIPS, APN, county, state), the recorded deed reference and grantor, and documents the owner uploaded. The agreement text is included only when includeAgreementText is true (it is long); trust.agreementResource is the MCP resource with this token's own agreement. Owner names: the deed grantor from Fabrica's own records is returned; a holder's chosen display name is in get_property; owner names from third-party parcel data are never returned. Property checks are not a title search or title insurance. The token represents the beneficial interest in the trust; the trustee is designated by the token holder and is, by default, the holder.get_tax_statusGet whether a tokenized property's taxes are current, past due or unknown, according to Fabrica's Property checks: the status, which signal it comes from (the Property Taxes Current check, the DeFi lending pool's block reason, both, or a note that they disagree), when it was checked and when the checks expire, and whether it limits borrowing. It is a data lookup, not the county's own statement; the amount due and the due date are not available.explain_confidence_scoreExplain a Fabrica property's Property checks from their numeric encoding (formerly called the confidence score; the tool name keeps it). The encoding is a 5-digit positional number where each digit represents a different verification group: recovery status (ten-thousands), past title (thousands), ownership (hundreds), onchain history (tens), basic validation (ones). Each digit is a category value, not a count; with a tokenId the response also counts the individual checks that pass. Max: 75342. Property checks are a starting point for your own research, not a title search or title insurance.get_borrow_quoteGet borrowing options for a specific tokenized property: DeFi lending pool liquidity (max loan amount, durations), existing loan status, the reasons when the pool shows no capacity (tax status, price oracle checks), and in limits what binds the amount (limitedBy: pool_liquidity, ltv, pool_limit, tax_status, oracle, existing_loan or unknown) with the collateral price, the pool's free liquidity and the highest loan-to-value. The oracle block shows how the collateral price is derived from the valuation sources. Answers questions such as 'How much can I borrow against this property?'. The amount is an estimate; the rate is set by a live quote when borrowing.get_valuationGet every value the Fabrica API holds for a property, each with its source, date and confidence: the estimate and the sources it comes from, the Fabrica AVM, Prycd and county assessor figures, the signed valuations the DeFi lending pool reads, the pool's oracle state (feed freshness, onchain price, usable price) with the reason when a price is missing, and the valuation report link. Presents data with its provenance; it suggests no price.get_activityGet the activity feed for a property or wallet, or, with no tokenId, slug or address, the most recent activity across every property on the network: mints, transfers, sales, listings, loans started/repaid/liquidated, configuration changes, and more. Covers transaction history and event timelines.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"compass-mcp": {
"command": "npx",
"args": [
"-y",
"compass-mcp"
]
}
}
}
{
"mcpServers": {
"fabrica": {
"url": "https://mcp.fabrica.land/mcp"
}
}
}