A side-by-side look at the Homes MCP and PropFácil MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Homes MCP for real estate work as a local process; choose PropFácil for real estate over a hosted endpoint. You can also run both side by side in one mcpServers block.
homes_search_properties, homes_get_by_address, homes_resolve_addresses.search_properties, get_property, get_property_contact.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Real Estate | Real Estate |
| Quality signal | 56/100 · Good | 55/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 | 19 | 13 |
| Full listing | View Homes MCP | View PropFácil |
homes_search_propertiesSearch listings by free-text location (city/ZIP/neighborhood). Slugifies the input into homes.com's URL routing (a blank or unsluggable location is an error, not an empty result) and parses the JSON-LD `CollectionPage.mainEntity.itemListElement[]`. Filters by `property_type`, `listing_type`, `sort`…homes_get_by_addressResolve one US street address to its canonical homes.com property URL + opaque hash. Walks structured typeahead → slug → city/zip search-fallback with whole-token street + unit verification. Returns `matched_via`; degrades to `{ resolved: false }`.homes_resolve_addressesBulk `homes_get_by_address` (up to 100 addresses, input order preserved, per-row outcomes). Prefer for batches ≥ 3.homes_get_propertyFull record for a property by URL. Parses JSON-LD + DOM-side sections: address, lat/lng, beds/baths, sqft, year built, price, status, agent (name/title/profile — telephone/email only with `include_agent_contact: true`) + brokerage, highlights, schools, HOA (raw + monthly), lot size (sqft + acres),…homes_get_property_photosFull photo gallery scraped from `<img>` tags on the detail page (JSON-LD only carries one image). Returns `{ url, position, alt? }` per photo, filtered to the homes.com CDN.homes_bulk_getFetch up to 200 properties' structured records in one call (per-row errors, input order preserved).homes_compare_propertiesSide-by-side comparison of 2–8 properties with an aligned summary table. Per-target errors captured per-row. Concurrent fetches.homes_get_nearby_listingsThe "Homes for Sale Near This Property" cross-link cards from a detail page (For Sale, optionally Rentals). URL + address only.homes_get_historyCombined price + tax history in one fetch: `listing_events`, `ownership_events`, `lien_events`, normalized `events_normalized`, and `tax_records`. `events_normalized` sets `price_change_pct` only on `PriceChange` rows; other rows carry homes.com's "List to Sale" figure as `list_to_sale_pct` (no `do…homes_get_property_history*Deprecated* — price/ownership/lien timelines only. Prefer `homes_get_history`.homes_get_tax_history*Deprecated* — year-by-year tax records only. Prefer `homes_get_history`.homes_get_market_reportMedian / average / $-per-sqft for a market, derived from the `sold` search page's JSON-LD. A blank or unsluggable location is an error, not an empty market.search_propertiesUse this when the user wants to find authorized PropFácil property listings in Mexico by city, transaction type, price, bedrooms, or geographic radius.get_propertyUse this when the user wants the details of one authorized PropFácil listing and has supplied a listingKey or ID from search_properties.get_property_contactUse this when the user explicitly asks to contact the advertiser or open the authorized original listing for a property previously returned by PropFácil.render_property_resultsUse this when, after search_properties, the user would benefit from interactive property cards, comparison, details, or a map. Pass only listing IDs already returned by a data tool.restore_property_resultsUse this when the PropFácil app needs to restore the latest public property selection for the current MCP session after its widget is recreated.publish_propertyUse this when an authenticated user explicitly asks to publish a property publicly on PropFácil. This creates a public listing and is safe to retry with the same idempotencyKey.my_listingsUse this when an authenticated user asks to review the property listings they published on PropFácil.list_property_listsUse this when an authenticated user wants to see their PropFácil favorite lists. This returns only lists owned by the linked user.get_property_listUse this when an authenticated user wants to inspect one of their PropFácil favorite lists and its saved properties.save_property_to_listUse this when an authenticated user asks to save a property to a favorite list. If no list is supplied, use the idempotent default list named Favoritos.rename_property_listUse this when an authenticated user asks to rename one of their PropFácil favorite lists.remove_property_from_listUse this when an authenticated user asks to remove a saved property from one of their PropFácil lists. The list remains available if it becomes empty.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": {
"homes-mcp": {
"command": "npx",
"args": [
"-y",
"homes-mcp"
]
}
}
}
{
"mcpServers": {
"propf-cil": {
"url": "https://www.propfacil.com/api/mcp"
}
}
}