A Model Context Protocol (MCP) server that provides comprehensive access to Constellation 1 real estate data APIs. This server enables LLMs to perform property searches, agent research, market analysis, and media retrieval through RESO (Real Estate Standards Organization) standardized interfaces.
- π Comprehensive Real Estate Data - Access to Properties, Agents, Offices, Media, and Market Analytics
- π Advanced Property Search - Full OData querying with filtering, sorting, and field selection
- π€ Agent & Office Discovery - Complete MLS member and brokerage information
- πΈ Media & Marketing Assets - Property photos, videos, virtual tours, and documents
- π Market Analytics - Days on market, pricing trends, and historical data
- π Enterprise Security - OAuth2 authentication with automatic token management
- π Rich Resources - Built-in field reference and query examples accessible via MCP
- β‘ Performance Optimized - Dynamic metadata parsing, intelligent caching, and response optimization
- Contact your RESO API provider to obtain Constellation 1 API access
- Obtain your client credentials (client_id and client_secret)
- Ensure you have access to the required RESO endpoints
Add the server to your MCP client configuration:
Add to your Cursor MCP settings (~/.cursor/mcp.json or through Command Palette > Open MCP Settings > New MCP Server):
{
"mcpServers": {
"constellation1": {
"command": "npx",
"args": ["-y", "constellation1-mcp-server"],
"env": {
"CONSTELLATION1_CLIENT_ID": "your-client-id-here",
"CONSTELLATION1_CLIENT_SECRET": "your-client-secret-here"
}
}
}
}Add to claude_desktop_config.json:
{
"mcpServers": {
"constellation1": {
"command": "npx",
"args": ["constellation1-mcp-server"],
"env": {
"CONSTELLATION1_CLIENT_ID": "your-client-id-here",
"CONSTELLATION1_CLIENT_SECRET": "your-client-secret-here"
}
}
}
}# Set environment variables
export CONSTELLATION1_CLIENT_ID="your-client-id-here"
export CONSTELLATION1_CLIENT_SECRET="your-client-secret-here"
# Run the server
npx constellation1-mcp-serverreso_query- Query RESO entities with full OData supportreso_help- Get field references, examples, and best practices
{
"tool": "reso_query",
"arguments": {
"entity": "Property",
"filter": "StandardStatus eq 'Active' and City eq 'Seattle'",
"select": "ListingKey,ListPrice,BedroomsTotal,BathroomsTotal,UnparsedAddress,PublicRemarks",
"orderby": "ListPrice asc",
"top": 25
}
}{
"tool": "reso_query",
"arguments": {
"entity": "Property",
"filter": "StandardStatus eq 'Active' and PhotosCount gt 0",
"expand": "Media($filter=MediaCategory eq 'Photo' and Permission ne 'Private';$orderby=Order asc;$top=5)",
"select": "ListingKey,ListPrice,UnparsedAddress,PhotosCount",
"top": 10
}
}{
"tool": "reso_query",
"arguments": {
"entity": "Member",
"filter": "MemberFullName eq 'John Smith'",
"select": "MemberMlsId,MemberFullName,MemberEmail,MemberDirectPhone,OfficeName,MemberDesignation"
}
}{
"tool": "reso_query",
"arguments": {
"entity": "Property",
"filter": "StandardStatus eq 'Closed' and CloseDate ge 2024-01-01",
"select": "ListingKey,ClosePrice,CloseDate,BedroomsTotal,LivingArea,City,DaysOnMarket",
"orderby": "CloseDate desc",
"top": 100
}
}{
"tool": "reso_help",
"arguments": {
"topic": "examples"
}
}CONSTELLATION1_CLIENT_ID(required) - Your Constellation 1 OAuth client IDCONSTELLATION1_CLIENT_SECRET(required) - Your Constellation 1 OAuth client secret
CONSTELLATION1_BASE_URL(optional, default:https://listings.cdatalabs.com/odata) - API base URLCONSTELLATION1_AUTH_URL(optional, default:https://authenticate.constellation1apis.com/oauth2/token) - OAuth token endpoint
The server also supports these alternative environment variable names:
CLIENT_ID/CLIENT_SECRETRESO_CLIENT_ID/RESO_CLIENT_SECRET
This server accesses RESO-compliant real estate data through the Constellation 1 API. Monitor your API usage and ensure compliance with your RESO API provider's terms of service.
The server provides built-in MCP resources with documentation and examples:
constellation1://docs/field-reference- Comprehensive RESO field reference guideconstellation1://docs/quick-start- Common query patterns and examples
Access these through your MCP client's resource interface.
The server returns structured errors with helpful context:
{
"error": {
"code": "AUTH_FAILED",
"message": "OAuth2 authentication failed: 401 Unauthorized",
"context": {
"endpoint": "https://authenticate.constellation1apis.com/oauth2/token",
"status": 401
}
}
}Common error codes:
INVALID_ENTITY- Unsupported RESO entity typeAUTH_FAILED- OAuth2 authentication failedAPI_ERROR- RESO API request failedSKIP_LIMIT_EXCEEDED- Pagination skip limit exceededMETADATA_FETCH_FAILED- Unable to load RESO metadata
- API credentials are never logged or exposed in responses
- Input validation prevents injection attacks through Zod schemas
- OAuth2 tokens are securely cached and automatically refreshed
- All API communication uses HTTPS with proper certificate validation
git clone https://github.com/david-pivonka/constellation1-mcp-server.git
cd constellation1-mcp-server
npm install
npm run buildnpm testnpm run build
CONSTELLATION1_CLIENT_ID="your-client-id" CONSTELLATION1_CLIENT_SECRET="your-client-secret" npx @modelcontextprotocol/inspector ./dist/index.jsContributions are welcome! Please submit pull requests to our GitHub repository.
MIT License - see LICENSE file for details.