Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
U.S. real-estate data: property records, AVM value + rent estimates, sale/rental listings.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://realtystack-mcp.vercel.app/mcpRun this in your terminal
claude mcp add --transport http realtystack https://realtystack-mcp.vercel.app/mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"realtystack": {
"url": "https://realtystack-mcp.vercel.app/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"realtystack": {
"type": "http",
"url": "https://realtystack-mcp.vercel.app/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://realtystack-mcp.vercel.app/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account IsaiahDupree, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 3 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, NexusWindows
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Windows computer use in the background: desktop apps driven without your mouse or keyboard.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A remote MCP (Model Context Protocol) connector for the RealtyStack API — U.S. real-estate data built on RentCast: property records search + single-record lookup, AVM sale-value and long-term-rent estimates with comparables, and active sale/rental listings, all in one flat /v1 JSON contract.
Upstream: https://realestate-api-kappa.vercel.app (RealtyStack REST API) — 6 tools, one per /v1 endpoint. Since the upstream deployment is metered (RapidAPI/Apify, and itself layered over RentCast's metered quota), this connector authenticates its own outbound calls with a server-side RapidAPI proxy secret (REALTYSTACK_MCP_PROXY_SECRET, sent as the X-RapidAPI-Proxy-Secret header) and applies a soft per-IP rate limit (REALTYSTACK_MCP_RATE_LIMIT, default 30 tool-calls/hour, in-memory) so this free MCP tier stays a discovery channel rather than an unmetered bypass of the paid listing — see lib/ratelimit.js.
RealtyStack is a plain REST API. Any HTTP client can already call it directly. This repo exists because MCP clients (Claude, ChatGPT, and other MCP-aware agents) don't consume arbitrary REST APIs — they consume MCP tools. realtystack-mcp is a thin adapter layer that:
/v1 endpoint as a discoverable, typed MCP tool (name, description, zod input schema, annotations) that an LLM can reason about and call directly, instead of having to be taught the REST surface out-of-band./mcp endpoint, so it can be registered as a connector in Claude, ChatGPT, or any other MCP client with one URL.fetch to RealtyStack, and the JSON response RealtyStack returns is handed back verbatim as the tool result.RealtyStack's data has no per-user dimension — it's objective real-estate data (property records, valuation estimates, listings). There is nothing to gate per-caller, so this connector intentionally ships with:
api/mcp.js builds a fresh, stateless McpServer per request and serves it with zero MCP-caller auth checks.
The *upstream* RealtyStack deployment gates every /v1/* route behind a RapidAPI proxy secret (see realestate-api/src/guard.js). This connector reaches real data by sending that same secret as the X-RapidAPI-Proxy-Secret header on its outbound fetch calls, read from the REALTYSTACK_MCP_PROXY_SECRET env var. Verified behavior: sending X-RapidAPI-Proxy-Secret passes the guard and returns real data; sending nothing returns 403 "This API is served through RapidAPI.". This is an upstream monetization detail — it does not add any auth to *this* connector, which still has zero MCP-caller auth by design.
One tool per RealtyStack /v1 endpoint (from realestate-api/openapi.yaml; /api/health is intentionally not wrapped):
| Tool | RealtyStack endpoint | Description |
|---|---|---|
search_properties | GET /v1/properties | Search property records by address, city/state/zip, or lat/long radius, with structural filters. |
get_property | GET /v1/properties/{id} | Full detail for one property record by its RentCast id. |
avm_value | GET /v1/avm/value | AVM sale-value estimate (point + range) with scored comparable sales. |
avm_rent | GET /v1/avm/rent | AVM long-term-rent estimate (point + range) with scored comparable rentals. |
search_sale_listings | GET /v1/listings/sale | Active (or inactive) for-sale listings with MLS + agent/office contact. |
search_rental_listings | GET /v1/listings/rental | Active (or inactive) long-term rental listings. |
All 6 tools are read-only GETs, annotated { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true } — none of them write anything, and all of them reflect live, externally-changing real-estate data.
Each tool handler does a plain fetch(\${REALTYSTACK_MCP_API_BASE_URL}${path}\, ...) against the real RealtyStack REST API (adding the X-RapidAPI-Proxy-Secret header when configured) and returns the parsed JSON as MCP tool-result content:
{ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }
Upstream HTTP errors (4xx/5xx) are caught and surfaced as a typed MCP error result via an asError helper rather than crashing the request.
| Var | Purpose | Default |
|---|---|---|
REALTYSTACK_MCP_API_BASE_URL | Upstream RealtyStack base URL | https://realestate-api-kappa.vercel.app |
REALTYSTACK_MCP_PROXY_SECRET | Sent as X-RapidAPI-Proxy-Secret to pass the upstream guard | *(unset — 403 from guarded upstream)* |
REALTYSTACK_MCP_RATE_LIMIT | Soft per-IP tools/call cap per hour | 30 |
api/mcp.js MCP endpoint (StreamableHTTPServerTransport, stateless, no caller auth)
api/health.js GET /api/health lib/tools.js All 6 tool definitions (zod schemas + fetch-and-forward handlers) lib/ratelimit.js Soft in-memory per-IP tools/call cap local-server.js Plain-Node http server for local dev / smoke testing (not deployed) test/smoke.mjs Real end-to-end smoke test (initialize, tools/list, tools/call) vercel.json Routes /mcp -> api/mcp.js, /health -> api/health.js server.json MCP registry metadata
npm install
npm run dev # starts local-server.js on http://localhost:3900
Endpoints locally: POST http://localhost:3900/mcp, GET http://localhost:3900/health.
To hit real upstream data locally, set the proxy secret:
REALTYSTACK_MCP_PROXY_SECRET=<secret> npm run dev
npm run dev & # terminal 1
npm run smoke # terminal 2
test/smoke.mjs drives the running server over real HTTP/JSON-RPC and verifies:
GET /health returns { ok: true, ... }initialize succeeds and reports serverInfo.name === "realtystack"tools/list returns all 6 tools with their zod-derived JSON schemastools/call for search_properties exercises the tool end-to-end (when REALTYSTACK_MCP_PROXY_SECRET is set it asserts a real upstream result; without it, the tool-calling mechanics are still proven and the upstream's honest 403 guard response is accepted)Not deployed by this build (verify first). Once verified:
cd /Users/isaiahdupree/Software/realtystack-mcp
npx vercel --yes --prod
After deploy, the MCP connector URL to register in Claude/ChatGPT/any MCP client is:
https://<deployment-domain>/mcp