RentCast MCP Server (unofficial)
# RentCast MCP Server (unofficial)
An [MCP](https://modelcontextprotocol.io) server that lets Claude (or any MCP client) query the [RentCast](https://www.rentcast.io) property API — rent and sale-value estimates, market stats, property records, and active listings — through six read-only tools.
## Why it looks the way it does
- **Read-only.** All six tools only read; nothing here can change a RentCast account.
- **A curated six, not a 1:1 API dump.** These are the endpoints that make the best agent workflows, described so the model chains them correctly (e.g. `list_active_listings` → `get_rent_estimate` per address → rank by upside).
- **Clean errors.** A bad key, an inactive subscription, or a rate-limit comes back as a plain sentence the agent can act on, not a stack trace.
## Install (≈3 minutes)
```bash
git clone https://github.com/hasankhadra/rentcast-mcp.git
cd rentcast-mcp
npm install && npm run build
```
Then add this to your Claude Desktop config — `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, `%APPDATA%\Claude\claude_desktop_config.json` on Windows — and fully restart Claude Desktop:
```json
{
"mcpServers": {
"rentcast": {
"command": "node",
"args": ["/absolute/path/to/rentcast-mcp/dist/index.js"],
"env": {
"RENTCAST_API_KEY": "your_rentcast_api_key"
}
}
}
}
```
Replace the path with where you cloned the repo, and the key with your own from [app.rentcast.io](https://app.rentcast.io) (the free tier is 50 requests/month — keep `limit` values modest). The six `rentcast` tools appear in the tools menu once Claude Desktop restarts.
## Tools
| Tool | What it does |
|------|------|
| `search_properties` | Search property records by address, city/state, zip, or lat-long + radius. |
| `get_property_details` | Full attributes for one property, by RentCast id or address. |
| `get_rent_estimate` | Long-term monthly **rent** estimate (AVM) for an address, with comparables. |
| `get_value_estimate` | Sale-price (market **value**) estimate (AVM) for an address, with comparables. |
| `get_market_stats` | Zip-level sale & rental market stats — averages, days on market, listing counts. |
| `list_active_listings` | Currently active `sale` or `rental` listings for an area. |
All tools are read-only. Prices are USD; rents are USD/month; areas are square feet.
## Try it
Once it's wired into Claude Desktop, ask:
> **"What's the rent estimate for 5500 Grand Lake Dr, San Antonio, TX 78244? How does it compare to the zip code's average rent?"**
Claude calls `get_rent_estimate` for the address and `get_market_stats` for `78244`, then compares — e.g. an estimated ~$1,630/mo against the zip's ~$1,555/mo average.
And the one a human can't do in a single step against the RentCast dashboard:
> **"Find 3-bed active rental listings in Austin, TX under $2,500/mo, and estimate the fair-market rent for each so I can spot the underpriced ones."**
Claude calls `list_active_listings` (rental, Austin TX, 3 bed), filters by price, then fans out `get_rent_estimate` per address and ranks by the gap between asking rent and estimated rent — chaining tools across the API in a way the dashboard doesn't.
## Development
```bash
npm run build # compile TypeScript → dist/
npm run dev # tsc --watch
npm start # run the built server on stdio
```
Layout: `src/rentcastClient.ts` is the single HTTP/auth/error layer; each tool lives in its own file under `src/tools/`; `src/index.ts` registers them and opens the stdio transport. For local testing outside Claude Desktop, copy `.env.example` to `.env` and run `RENTCAST_API_KEY=... npm start`.
---
**Unofficial — built to show what an official RentCast MCP server could look like.** Want it official — OAuth, full tool set, maintained under your name? Hasan Khadra · [hk@hasankhadra.me](mailto:hk@hasankhadra.me) · [hasankhadra.me/mcp](https://hasankhadra.me/mcp)
## License
[MIT](./LICENSE)
TDQS
Scored across 6 tools
Each tool serves a clearly distinct purpose: searching property records, fetching full property details, estimating rent, estimating sale value, getting market stats, and listing active listings. The descriptions explicitly contrast related tools (e.g., search_properties vs. list_active_listings) so an agent will not confuse them.
All tool names follow a consistent verb_noun pattern with lowercase and underscores: get_property_details, search_properties, get_rent_estimate, get_value_estimate, get_market_stats, list_active_listings. The verbs vary (get, search, list) but the style is uniform and predictable.
Six tools is well-scoped for a real estate data API, covering search, details, valuation, market stats, and listings without unnecessary bloat. Each tool has a concrete role, and the count feels appropriate for the domain.
The tool set covers the core workflows: lookup a property (search_properties), get its full record (get_property_details), estimate rent and value, compare against market stats, and find active listings. There are no obvious dead ends; listings feed into estimates via the returned addresses, and stats provide context.