Cowork24 MCP vs Redfin MCP
A side-by-side look at the Cowork24 MCP and Redfin MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Cowork24 MCP for real estate work; choose Redfin MCP for real estate as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
CChoose Cowork24 MCP when
- You need dedicated capabilities in the Real Estate domain.
Choose Redfin MCP when
- You need dedicated capabilities in the Real Estate domain.
- You prefer a local stdio subprocess transport.
- You want tools like
redfin_search_properties, redfin_sweep_area, redfin_get_property.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | C Cowork24 MCP | |
|---|---|---|
| Category | Real Estate | Real Estate |
| Quality signal | 37/100 · Fair | 64/100 · Good |
| Install command | Not confirmed yet | Confirmed |
| Transport | — | Local subprocess (stdio) |
| 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 | — | 3 |
| Directory activity | 1 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | Not listed | 22 |
| Full listing | View Cowork24 MCP | View Redfin MCP |
Tools & capabilities
Cowork24 MCP tools
No tool names declared yet. Check the project README from the listing page.
Redfin MCP tools 22
redfin_search_propertiesSearch Redfin listings by location (city, ZIP, neighborhood, or full street address) and optional filters. Resolves the location via Redfin's autocomplete then queries the gis API; full street addresses short-circuit to the single matched home (no gis call). Returns matching properties with price, beds/baths, sqft, year built, address, and the Redfin home URL. `resolved_as` is `'region'` / `'address'`. `coverage` is `'full'` (gis indexed this region), `'profile_only'` (Redfin has profiles for individual addresses here but search isn't indexed — use redfin_get_by_address per property), or `'none'`. `result_cap_hit: true` signals the result page is full — gis returned as many rows as requested (`limit`, default 40, max 350) — so more listings likely exist; raise `limit` or narrow with price/beds filters. ZIP queries that fall into Redfin's cross-continent fallback (e.g. ZIP 28746 returning Seattle results) now error loudly. Only `for_sale` status is supported; `sold` / `for_rent` return an error (use redfin_get_comparable_rentals for rentals, redfin_get_market_report for sold-price trends). Read-only; safe to call repeatedly.redfin_sweep_areaEnumerate EVERY for-sale Redfin listing inside a bounding box without silent truncation. Redfin's gis API returns at most 350 homes per call and ignores server-side filters, so this tool searches drawn-map polygons, recursively quarters any tile that hits the cap, dedupes by property_id and re-applies the caller's filters locally. Homes outside the box and tiles where Redfin drifted to another region are left out. Alternatively pass `zips` (ZIP mode) to sweep a list of ZIP regions instead of map tiles, when Redfin ignores drawn-map polygons. Returns a completeness summary (requests, tiles or ZIPs, unique listings, tiles/ZIPs still at the cap, drift warnings) plus the listings inline by default; pass the optional `output_path` to write them to a new JSON file instead, for large areas (inside the output directory: REDFIN_OUTPUT_DIR, default ~/Downloads/redfin-mcp). Sequential requests with a delay. Read-only against Redfin; the only write is the optional local output file.redfin_get_propertyFetch a property's full Redfin record. Provide one of: (a) `url` — full Redfin homedetails URL or path, resolved via the initialInfo endpoint; (b) `property_id` alone — resolved internally by following Redfin's /home/<id> redirect to the canonical listing, then initialInfo; or (c) `property_id` + `listing_id` — fastest, skips resolution and goes straight to aboveTheFold. Returns address, beds/baths, sqft, lot_size (sq ft), year built, price, status, days on market, plus derived fields (lot_size_acres, price_drop_*, hoa_monthly_usd, last_sold_*, tax_annual, extracted_features). lot_size / lot_size_acres are null (never 0) for condos and listings with no public-records lot. `primary_photo_url` is a raw Redfin CDN URL and is dropped on the default `compact` view — pass `view: "full"` for it, or use `redfin_get_property_photos` for the whole gallery. The raw marketing description is OMITTED by default — opt in with `include_description: true`. Set `include_price_history: true` to bundle the full price history (and the cross-MCP-normalized `events_normalized` view) inline; set `include_tax_history: true` for `tax_history`. Read-only; safe to call repeatedly.redfin_get_saved_homesThe signed-in user's favorited homes on redfin.com. Returns `{ count, homes }` — each home has address, price, beds/baths, status — plus a `note` when none were found (no favorites vs. a page-scrape miss). Requires the user to be signed in. Read-only; safe to call repeatedly.redfin_get_saved_searchesThe signed-in user's saved searches on redfin.com, derived from the saved-searches page HTML. Returns `{ count, searches }`; each entry is `{ url, region_segment, display_text }`. Requires the user to be signed in. When none are found, `searches` is empty and a `note` explains it may be no saved searches or a page-scrape miss. Read-only; safe to call repeatedly.redfin_get_market_reportMarket report for a Redfin region: median list/sold prices, $/sqft, sale-to-list ratio, total homes for sale + sold, all with year-over-year and month-over-month change. Provide either (a) `location` — free-text we resolve via autocomplete (best with city names; "New York", "Seattle"; neighborhoods typically return empty data), or (b) `region_id` + `region_type` directly. `property_type` defaults to 1 (all). Each metric returns `{ label, value, unit, yoy_change_fraction, yoy_direction, mom_change_fraction, mom_direction }`. Read-only; safe to call repeatedly.redfin_calculate_mortgageLocal-only mortgage payment calculator. Returns a full PITI breakdown (principal + interest, property tax, insurance, HOA, PMI) and total interest over the life of the loan. No network call — fully deterministic, safe to use for scenario comparison without burning a fetch. Provide either `down_payment` OR `down_payment_percent`; defaults to 20%. Property tax can be given as `property_tax_annual` or `property_tax_rate` (% of home price). PMI applies automatically when LTV > 80% and `pmi_rate` is provided.redfin_get_price_historyListing-price events for a property — listings, price changes, pending, sold, etc. Each entry has a date, event description, price, days-on-market at that point, and the data-source attribution (MLS, county records, etc.). Also returns the tax-history series from public records. Provide either `url` or `property_id`+`listing_id`. Read-only; safe to call repeatedly.redfin_compare_propertiesFetch and compare 2 to 25 Redfin properties side-by-side. Provide an array of targets, each either a `url` or a `property_id`+`listing_id` pair. Returns the full per-property record (price, beds/baths, sqft, year built, HOA monthly, last sold, derived price-drop, etc.). For >25 properties or workflows that don't need side-by-side analysis use `redfin_bulk_get`. Pass `include_summary: true` for an aligned-by-field `summary` table (default false to save context — the per-row records carry the same data, so emitting both duplicates ~30% of the response weight). Each record's `extracted_features` (lake_front, hot_tub, basement, furnished, dock, community) is always included. The raw marketing description is omitted by default — opt in with `include_description: true`. Errors for individual properties are captured per-row with a `status` (`ok` / `timeout` / `bridge_down` / `protocol` / `pending` / `other`) and `retryable`. Server-side concurrency (~6 in flight) with retry-once-on-timeout per row; the whole call is bounded by an overall deadline, and any row still unsettled then comes back as `status: "pending"` (retryable) with a `pending` count.redfin_get_climate_riskFirst Street Foundation climate risk scores for a property. COVERS: flood (factor 1–10, FEMA zones, 30-year annual chance series), fire (factor 1–10, relative risk, insurance price band, provider count), heat (factor 1–10, cumulative-risk projections at 0/5/10/15/20-year horizons). DOES NOT COVER: landslide. This is the Helene-relevant risk vector in the NC mountains market and many parts of California / the Pacific Northwest. First Street has no landslide product — for that vector check the NC Geological Survey landslide hazard maps (NC-specific) or USGS landslide hazard data (national). Surfaced on every response as `not_covered: ['landslide']`. Response shape: when First Street data is available, `available: true` with the risk blocks; when not, `{ available: false, reason }` where reason is one of `no_first_street_data`, `new_construction`, `address_outside_coverage`. Sourced from Redfin's server-rendered homedetails HTML (no clean stingray endpoint exists). Pass a homedetails URL (full or path) — it must end in a `/home/<propertyId>` segment; any other page is rejected without being fetched. When a `cluster_id` is surfaced, properties with the same value typically share identical climate scores — use that to group N properties and skip redundant fetches.redfin_get_climate_risk_bulkFetch climate risk for up to 100 property URLs in a single call. Same per-property shape as `redfin_get_climate_risk`; output preserves input order. Per-row error capture — properties without First Street data return `{ available: false, reason }` without aborting the batch. Server-side concurrency (~5 fetches in flight) with retry-once-on-timeout per URL. The whole call is bounded by an overall deadline: any URL still unsettled then comes back as `status: "pending"` (retryable) with a `pending` count, so re-run just those. Use this when batching ~60-property workflows where climate risk is the dominant cost. Limitations from the per-property tool apply (no landslide coverage).redfin_get_area_climate_baselineFetch climate risk for a small set of representative URLs in an area, then return their averaged baseline values plus the shared cluster_id when present. Use this as a cheap area-level read BEFORE fanning out a per-property call: if all sample properties agree (same cluster_id, same fire/flood/heat factors), the baseline applies to the whole cluster and N redundant fetches are avoidable. Pass 2–10 URLs you believe represent the area; returns the aggregate plus the per-URL responses for transparency. Server-side concurrency (~5 fetches in flight) with retry-once-on-timeout per URL; the whole call is bounded by an overall deadline, and any sample still unsettled then comes back as `status: "pending"` (retryable) with a `pending` count and is left out of the averages. Limitations of the per-property tool apply (no landslide coverage — note documented in the per-property tool description).- +10 more on the listing page
Ready-to-paste client configs
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.
Cowork24 MCP
No confirmed install command for Cowork24 MCP yet — follow the setup steps linked from its listing page rather than a guessed package name.
Redfin MCP
{
"mcpServers": {
"redfin-mcp": {
"command": "npx",
"args": [
"-y",
"redfin-mcp"
]
}
}
}