zillow-mcp-server
The Zillow MCP Server is a Model Context Protocol server that delivers real-time Zillow real estate data access. It provides tools for property searching, detailed information retrieval, market trends analysis, and mortgage calculations using the Zillow API and is built using FastMCP and Python.
Zillow MCP Server
A Model Context Protocol (MCP) server that provides real-time access to Zillow real estate data, built with Python and FastMCP.
Features
- 🏠 Property Search: Search for properties by location, price range, and property features
- 💰 Property Details: Get detailed information about specific properties
- 📊 Zestimates: Access Zillow's proprietary home valuation data
- 📈 Market Trends: View real estate market trends for any location
- 🧮 Mortgage Calculator: Calculate mortgage payments based on various inputs
- 🔍 Health Check: Verify API connectivity and monitor performance
Installation
Prerequisites
- Python 3.8 or higher
- A Zillow Bridge API key (request access at )
Setup
-
Clone this repository:
git clone https://github.com/yourusername/zillow-mcp-server.git cd zillow-mcp-server
-
Install the dependencies:
pip install -r requirements.txt
-
Create a
.env
file with your Zillow API key:ZILLOW_API_KEY=your_zillow_api_key_here
Running the Server
Run the server with options:
# Standard stdio mode (for Claude Desktop)
python zillow_mcp_server.py
# HTTP server mode (for remote access)
python zillow_mcp_server.py --http --port 8000
# Debug mode for more verbose logging
python zillow_mcp_server.py --debug
Docker Deployment
You can also run the server using Docker:
# Build the Docker image
docker build -t zillow-mcp-server .
# Run with environment variables
docker run -p 8000:8000 -e ZILLOW_API_KEY=your_key_here zillow-mcp-server
# Or using an env file
docker run -p 8000:8000 --env-file .env zillow-mcp-server
Usage with Claude Desktop
Add the Zillow MCP server to your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"zillow": {
"command": "python",
"args": ["/path/to/zillow_mcp_server.py"]
}
}
}
For remote HTTP server:
{
"mcpServers": {
"zillow-remote": {
"command": "npx",
"args": ["mcp-remote", "https://your-mcp-server-url.com/sse"]
}
}
}
Available Tools
Search Properties
Search for properties based on various criteria:
search_properties(
location: str,
type: str = "forSale",
min_price: Optional[int] = None,
max_price: Optional[int] = None,
beds_min: Optional[int] = None,
beds_max: Optional[int] = None,
baths_min: Optional[float] = None,
baths_max: Optional[float] = None,
home_types: Optional[List[str]] = None
)
Example usage in Claude:
Please search for properties in Seattle with prices between $500,000 and $800,000.
Get Property Details
Get detailed information about a specific property:
get_property_details(
property_id: str = None,
address: str = None
)
Example usage in Claude:
Can you get the details for the property with ID 12345?
Get Zestimate
Get Zillow's estimated value for a property:
get_zestimate(
property_id: str = None,
address: str = None
)
Example usage in Claude:
What's the Zestimate for 123 Main St, Seattle, WA?
Get Market Trends
Get real estate market trends for a specific location:
get_market_trends(
location: str,
metrics: List[str] = ["median_list_price", "median_sale_price", "median_days_on_market"],
time_period: str = "1year"
)
Example usage in Claude:
What are the current real estate trends in Boston over the past year?
Calculate Mortgage
Calculate mortgage payments and related costs:
calculate_mortgage(
home_price: int,
down_payment: int = None,
down_payment_percent: float = None,
loan_term: int = 30,
interest_rate: float = 6.5,
annual_property_tax: int = None,
annual_homeowners_insurance: int = None,
monthly_hoa: int = 0,
include_pmi: bool = True
)
Example usage in Claude:
Calculate the monthly mortgage payment for a $600,000 house with 20% down and a 6% interest rate.
Check Health
Verify the Zillow API connection and get server status:
check_health()
Example usage in Claude:
Please check if the Zillow API is currently responsive.
Get Server Tools
Get a list of all available tools on this server:
get_server_tools()
Example usage in Claude:
What tools are available in the Zillow MCP server?
Available Resources
Property Resource
Get property information as a formatted text resource:
zillow://property/{property_id}
Market Trends Resource
Get market trends information as a formatted text resource:
zillow://market-trends/{location}
Error Handling
The server implements robust error handling with:
- Automatic retries with exponential backoff
- Detailed error logging
- Rate limit handling
- Connection timeouts
- Graceful degradation
Technical Architecture
This MCP server is built using:
- FastMCP: A Pythonic framework for building Model Context Protocol servers
- Requests: For making HTTP requests to the Zillow Bridge API with connection pooling and retries
- Backoff: For implementing exponential backoff retry logic
- python-dotenv: For managing environment variables
The server provides both tools (interactive functions) and resources (static data) that Claude can access to provide real estate information to users.
Limitations and Considerations
- Zillow's API has usage limits (typically 1,000 requests per day per dataset)
- Zillow's terms of service prohibit storing data locally; all requests must be dynamic
- You must properly attribute data to Zillow in the user interface
- The Bridge API format may change; refer to Zillow's documentation for updates
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature-name
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- FastMCP for the Pythonic MCP implementation
- Zillow for providing real estate data APIs
- Model Context Protocol for the standard protocol specification