arti-cat/mcp-property-server
If you are the rightful owner of mcp-property-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 dayong@mcphub.com.
The Property MCP Server is a FastMCP server designed for querying property listings, offering a robust solution for real estate data management.
Property MCP Server
A FastMCP server for querying property listings with 475 properties.
✨ Now with ChatGPT UI Widget! Interactive property cards with favorites, sorting, and dark mode support.
🎯 NEW: Lead Capture & CRM! Capture leads, match clients to properties, schedule viewings, and manage your sales pipeline. See
🎨 Reusable Widget Templates! Complete patterns and templates for building your own ChatGPT widgets. See
Quick Start
# Install dependencies
pip install -r requirements.txt
# Run with STDIO (for Claude Desktop)
python3 server.py
# Run with HTTP (for remote access)
python3 server.py --http
Tools
Property Search Tools
get_schema()
Returns the data schema for property listings.
query_listings(...)
Search and filter properties.
Parameters:
postcode- Filter by postcode (e.g., "DY4 7LG")property_type- Filter by type (e.g., "Flat")max_price- Maximum pricemin_bedrooms- Minimum bedroomshas_garden- Must have gardenhas_parking- Must have parkinglimit- Max results (default: 5)
calculate_average_price(...)
Calculate average price for matching properties.
Parameters:
postcode- Filter by postcodeproperty_type- Filter by type
Lead Capture & CRM Tools
capture_lead(...)
Capture new buyer or seller leads from conversations.
Parameters:
full_name,email,mobile,role(required)stage- Lead stage (hot/warm/cold/instructed/completed)budget_max,min_bedrooms- For buyersselling_property_id,asking_price- For sellers
match_client(...)
Find properties matching a buyer's preferences.
Parameters:
client_id(required) - Buyer's client IDlimit- Max results (default: 10)
schedule_viewing(...)
Book property viewings with conflict detection.
Parameters:
property_id,buyer_client_id,datetime_iso(required)notes- Optional viewing notes
view_leads(...)
View and filter client pipeline.
Parameters:
role- Filter by buyer/sellerstage- Filter by lead stagelimit- Max results (default: 20)
Testing
# Install test dependencies
pip install pytest pytest-asyncio
# Run tests
python3 -m pytest test_server.py -v
Transports
STDIO (default) - For Claude Desktop, Cursor
python3 server.py
HTTP - For remote access
python3 server.py --http
# Server at http://127.0.0.1:8000/mcp
Project Structure
├── server.py # Main FastMCP server
├── tools.py # Tool implementations
├── data_loader.py # Data loading
├── test_server.py # Pytest tests
├── requirements.txt # Dependencies
├── web/ # React UI widget (NEW!)
│ ├── src/ # React components
│ ├── dist/ # Built bundle
│ └── test.html # Local testing
├── docs/ # Documentation
│ ├── WIDGET_IMPLEMENTATION_PLAN.md
│ ├── WIDGET_DEPLOYMENT.md
│ └── WIDGET_SUMMARY.md
└── data/
└── listings.jsonl # Property data (475 listings)
Claude Desktop Setup
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"property-server": {
"command": "python3",
"args": ["/absolute/path/to/server.py"]
}
}
}
ChatGPT Setup
Requirements
- ChatGPT Pro, Team, Enterprise, or Edu account
- Developer Mode enabled in ChatGPT settings
Setup Steps
-
Start the server with HTTP transport:
python3 server.py --http -
Expose with ngrok:
ngrok http 8000Note your public URL (e.g.,
https://abc123.ngrok-free.dev) -
Enable Developer Mode in ChatGPT:
- Go to Settings → Connectors
- Under Advanced, toggle Developer Mode to enabled
-
Create Connector:
- In Settings → Connectors, click Create
- Name: Property Server
- Server URL:
https://your-ngrok-url.ngrok-free.dev/mcp/ - Check I trust this provider
- Click Create
-
Use in Chat:
- Start a new chat
- Click + → More → Developer Mode
- Enable your Property Server connector
- Ask questions like:
- "Show me properties in DY4 7LG under £100,000"
- "Find flats with parking"
- "What's the average price for 2-bedroom properties?"
Features
- ✅ All 3 tools have
readOnlyHintannotations (no confirmation prompts) - ✅ Natural language queries
- ✅ 475 property listings
- ✅ Filter by postcode, type, price, bedrooms, garden, parking
UI Widget
The server now includes an interactive React widget for ChatGPT:
Features:
- 🏠 Property cards with images
- ❤️ Favorite properties (persisted)
- 🔄 Sort by price or bedrooms
- 🌓 Dark mode support
- 📱 Responsive design
Quick Start:
# Build widget
cd web && npm install && npm run build
# Test locally
open test.html
# Deploy to ChatGPT
# See docs/WIDGET_DEPLOYMENT.md
Documentation:
Widget Templates
This project includes complete reusable templates for building ChatGPT Apps SDK widgets:
- - Overview & quick start
- - Complete implementation guide
- - Quick reference
- - System architecture
- - Project generator
Create a new widget project:
cd docs
./create-widget-project.sh my-widget-name
Production Deployment
Deploy to persistent hosting with automatic HTTPS:
# Quick deploy to Fly.io
./deploy.sh
# Manual deployment
fly launch --no-deploy
fly deploy
Supported Platforms:
- ✅ Fly.io (recommended) - Free tier available
- ✅ Render - Auto-deploy from Git
- ✅ Railway - Simple pricing
- ✅ Google Cloud Run - Scale-to-zero
See for complete guide.