streeteasy-mcp
This server provides an MCP interface to the StreetEasy GraphQL API, enabling LLM agents to search and retrieve NYC rental listings.
search_rentals: Search active NYC rentals filtered by area (name or numeric code), price range, bedrooms, bathrooms, amenities (e.g.WASHER_DRYER,DOORMAN,GYM), no-fee, and pet-friendly options. Supports sorting and pagination (up to 100/page). Returns compact summaries with listing IDs, photos, and URLs.get_rental_details: Retrieve full details for a single listing by ID, including description, amenities, pricing history, building info, nearby transit/schools, and media (photos, floor plans, YouTube/Vimeo videos, 3D tours).list_areas: Look up StreetEasy area names and numeric codes, with optional substring filtering (e.g.'brooklyn','harlem').list_amenities: List all valid amenity enum tokens accepted bysearch_rentals.
Notable limitations: Contact info and tour scheduling are not supported (users follow the listing URL directly). Cloud/datacenter deployments may require a residential proxy to bypass StreetEasy's bot-detection.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@streeteasy-mcpSearch for 2-bedroom apartments in Brooklyn under $3000"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
streeteasy-mcp
A remote MCP server that wraps the StreetEasy GraphQL API so an LLM agent can search and parse NYC rental listings.
It vendors the streeteasy-api
client (v0.4.0) and exposes it over either stdio (local) or Streamable
HTTP (remote) transport, so it can be connected to by Claude or any MCP client.
StreetEasy blocks datacenter/cloud IPs. Its API sits behind PerimeterX
bot-detection that 403s cloud/datacenter IPs (AWS, GCP, Railway, etc.). The
HTTP build deploys fine and the MCP layer works, but the upstream
search_rentals / get_rental_details calls fail from a datacenter unless you
do one of:
Run the stdio server locally from a normal home connection — see Run as a local MCP server, or
Route upstream calls through a residential proxy by setting
STREETEASY_PROXY— this is what lets the hosted HTTP build (Railway, etc.) reach the API. See Proxy / bot-detection.
Tools
Tool | Description |
| Search active NYC rentals by area, price, beds, baths, amenities, pets. Returns compact listings + |
| Full detail for one listing id: description, amenities, pricing history, building info, nearby transit/schools, and resolved media — |
| Look up StreetEasy area names ↔ numeric codes (optionally filtered by a search term). |
| List the valid amenity enum tokens. |
search_rentals accepts area names ("MANHATTAN", "Williamsburg",
"upper east side") or numeric codes, and validates amenity tokens against the
known set.
Media
Photos resolve to Zillow's CDN (photos.zillowstatic.com/fp/{key}-se_large_800_400.jpg),
videos to their provider watch URL (YouTube/Vimeo) plus a thumbnail, and 3D
tours to a direct tour3dUrl. All are public — no auth required.
Not included: contact info & inquiries
Listing agent contact details and "request a tour" inquiries are not exposed.
They live behind StreetEasy's contact flow, which is protected by PerimeterX
bot-detection (a "Press & Hold" human check). Automating it would mean evading
bot-detection, so it's intentionally left out — the right pattern is to surface
the listing url and let a human submit the tour request in their browser.
Related MCP server: Rentalot MCP Server
Endpoints
POST /mcp— the MCP Streamable HTTP endpoint (stateless). Requires a bearer token unlessMCP_DISABLE_AUTHis set — see Authentication.GET /andGET /health— health checks.OAuth:
/.well-known/oauth-authorization-server,/.well-known/oauth-protected-resource,/register,/authorize,/token,/revoke.
Run as a local MCP server (recommended)
Runs over stdio from your machine's residential IP — the configuration that actually reaches StreetEasy.
npm install
npm run build
# register with Claude Code (uses the stdio entry point):
claude mcp add streeteasy -- node "$(pwd)/dist/stdio.js"Then ask Claude to search rentals. To run the stdio server by hand:
npm run start:stdioRun as an HTTP server
npm install
npm run build
npm start # listens on $PORT (default 3000), POST /mcpTest it with the MCP SDK client (see test-client.mjs):
MCP_URL=http://localhost:3000/mcp node test-client.mjsConfiguration
Env var | Purpose |
| Port to listen on. Railway sets this automatically. |
| Public origin the server is reachable at (the OAuth issuer), e.g. |
| Set to |
| Optional. HTTP/HTTPS proxy for all upstream StreetEasy calls, e.g. |
Authentication (OAuth 2.1 + Dynamic Client Registration)
The HTTP transport requires OAuth by default — MCP clients (Claude, etc.) run the standard authorization flow automatically, so you usually don't configure anything. The server is a self-contained OAuth 2.1 authorization server:
Advertises metadata at
/.well-known/oauth-authorization-serverand/.well-known/oauth-protected-resource.Supports Dynamic Client Registration (RFC 7591) at
/register, so clients self-register with no manualclient_id/client_secret./authorize(PKCE S256 required) →/token(authorization-code + refresh), with/revokefor revocation.Unauthenticated
POST /mcpreturns401with aWWW-Authenticateheader pointing at the protected-resource metadata, which kicks off discovery + DCR.
Because the tools expose only public listing data, there's no per-user login:
authorization is auto-approved and the issued bearer token simply gates /mcp.
Tokens are held in memory (single replica); a restart just makes clients
transparently re-register. Set MCP_DISABLE_AUTH=1 to turn the whole layer off.
Proxy / bot-detection
StreetEasy 403s datacenter IPs, so any cloud host (Railway included) must send
upstream requests through a residential proxy. Set STREETEASY_PROXY to a
proxy URL (credentials may be embedded, e.g.
http://user:pass@host:port) and all StreetEasy GraphQL traffic is tunnelled
through it. On startup the server logs the proxy in use with credentials
redacted (Outbound proxy: http://***:***@host:port).
Rotating residential proxies hand out a fresh exit IP per connection, and a
clean IP isn't guaranteed every time, so the client automatically retries a
403 bot-challenge (up to 3 times when a proxy is set) to land on a good IP.
A local stdio server on a residential connection doesn't need a proxy.
Deploy on Railway
This repo ships a Dockerfile. With the Railway CLI:
railway login
railway init --name streeteasy-mcp
# Cloud hosts are datacenter IPs — set a residential proxy so calls aren't 403'd:
railway variables --set "STREETEASY_PROXY=http://user:pass@host:port"
railway up
railway domain # generate a public URL
# Set the OAuth issuer to your public URL (or rely on RAILWAY_PUBLIC_DOMAIN):
railway variables --set "PUBLIC_BASE_URL=https://<your-app>.up.railway.app"Connect from Claude Code
claude mcp add --transport http streeteasy https://<your-app>.up.railway.app/mcpThe client discovers the OAuth endpoints and registers itself automatically
(Dynamic Client Registration) — no client_id / token to configure.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables users to search Airbnb listings with advanced filtering options and retrieve detailed property information through an MCP server interface.22,599MIT

Rentalot MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceMCP server for the Rentalot API. Manage rental properties, contacts, showings, conversations, and more from any AI assistant.221MIT- AlicenseAqualityBmaintenanceAn MCP server for rental apartment aggregation, enabling geographic polygon search, semantic vector search, and LLM-powered analysis. Integrates with AI agents like Claude Desktop to manage apartment hunting workflows.152MIT
- FlicenseNot gradedqualityBmaintenanceRemote MCP server for SUpost, the Stanford student marketplace. Lets AI agents search active listings, fetch listing details, and read verified market statistics.
Related MCP Connectors
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Alec2435/streeteasy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server