zillow-mcp-server
If you are the rightful owner of zillow-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server that provides real-time access to Zillow real estate data, built with Python and FastMCP.
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