Skip to main content
Glama

Real Estate MCP Server

by agentic-ops
test_resources.pyโ€ข10.3 kB
""" Integration tests for MCP resources """ import json from unittest.mock import Mock, patch import pytest from resources import ( register_agent_resources, register_client_resources, register_location_resources, register_market_resources, register_property_resources, ) class TestPropertyResources: """Test property-related MCP resources""" @pytest.fixture def mock_mcp(self): """Create a mock MCP server and register property resources""" mcp = Mock() resources = {} def mock_resource(uri): def decorator(func): resources[uri] = func return func return decorator mcp.resource = mock_resource register_property_resources(mcp) return resources def test_get_all_properties_resource(self, mock_mcp, test_data_manager): """Test realestate://all-properties resource""" with patch("resources.property_resources.data_manager", test_data_manager): result = mock_mcp["realestate://all-properties"]() data = json.loads(result) assert isinstance(data, list) assert len(data) == 2 assert data[0]["id"] == "TEST001" def test_get_properties_by_area_template(self, mock_mcp, test_data_manager): """Test realestate://properties/area/{area} template""" with patch("resources.property_resources.data_manager", test_data_manager): result = mock_mcp["realestate://properties/area/{area}"]("Test Area") data = json.loads(result) assert data["area"] == "Test Area" assert data["properties_count"] == 2 assert len(data["properties"]) == 2 def test_get_property_insights_template(self, mock_mcp, test_data_manager): """Test realestate://property/{property_id}/insights template""" with patch("resources.property_resources.data_manager", test_data_manager): result = mock_mcp["realestate://property/{property_id}/insights"]("TEST001") data = json.loads(result) assert "property" in data assert "area_context" in data assert "comparable_sales" in data assert data["property"]["id"] == "TEST001" def test_property_insights_nonexistent(self, mock_mcp, test_data_manager): """Test property insights with non-existent property""" with patch("resources.property_resources.data_manager", test_data_manager): result = mock_mcp["realestate://property/{property_id}/insights"]( "NONEXISTENT" ) data = json.loads(result) assert "error" in data class TestAgentResources: """Test agent-related MCP resources""" @pytest.fixture def mock_mcp(self): """Create a mock MCP server and register agent resources""" mcp = Mock() resources = {} def mock_resource(uri): def decorator(func): resources[uri] = func return func return decorator mcp.resource = mock_resource register_agent_resources(mcp) return resources def test_get_all_agents_resource(self, mock_mcp, test_data_manager): """Test realestate://all-agents resource""" with patch("resources.agent_resources.data_manager", test_data_manager): result = mock_mcp["realestate://all-agents"]() data = json.loads(result) assert isinstance(data, list) assert len(data) == 2 assert data[0]["id"] == "AGENT001" def test_get_agent_dashboard_template(self, mock_mcp, test_data_manager): """Test realestate://agent/{agent_id}/dashboard template""" with patch("resources.agent_resources.data_manager", test_data_manager): result = mock_mcp["realestate://agent/{agent_id}/dashboard"]("AGENT001") data = json.loads(result) assert "agent_info" in data assert "performance_metrics" in data assert "active_listings" in data assert data["agent_info"]["id"] == "AGENT001" def test_agent_dashboard_nonexistent(self, mock_mcp, test_data_manager): """Test agent dashboard with non-existent agent""" with patch("resources.agent_resources.data_manager", test_data_manager): result = mock_mcp["realestate://agent/{agent_id}/dashboard"]("NONEXISTENT") data = json.loads(result) assert "error" in data class TestMarketResources: """Test market-related MCP resources""" @pytest.fixture def mock_mcp(self): """Create a mock MCP server and register market resources""" mcp = Mock() resources = {} def mock_resource(uri): def decorator(func): resources[uri] = func return func return decorator mcp.resource = mock_resource register_market_resources(mcp) return resources def test_get_market_overview_resource(self, mock_mcp, test_data_manager): """Test realestate://market-overview resource""" with patch("resources.market_resources.data_manager", test_data_manager): result = mock_mcp["realestate://market-overview"]() data = json.loads(result) # The resource returns market data directly assert isinstance(data, dict) assert "average_price" in data or "market_overview" in data def test_get_area_market_analysis_template(self, mock_mcp, test_data_manager): """Test realestate://market/area/{area} template""" with patch("resources.market_resources.data_manager", test_data_manager): result = mock_mcp["realestate://market/area/{area}"]("Test Area") data = json.loads(result) assert data["area"] == "Test Area" assert "market_data" in data assert "recent_sales" in data assert "area_info" in data class TestClientResources: """Test client-related MCP resources""" @pytest.fixture def mock_mcp(self): """Create a mock MCP server and register client resources""" mcp = Mock() resources = {} def mock_resource(uri): def decorator(func): resources[uri] = func return func return decorator mcp.resource = mock_resource register_client_resources(mcp) return resources def test_get_client_matches_template(self, mock_mcp, test_data_manager): """Test realestate://client/{client_id}/matches template""" with patch("resources.client_resources.data_manager", test_data_manager): result = mock_mcp["realestate://client/{client_id}/matches"]("CLI001") data = json.loads(result) assert data["client_id"] == "CLI001" assert "matching_properties" in data def test_client_matches_nonexistent(self, mock_mcp, test_data_manager): """Test client matches with non-existent client""" with patch("resources.client_resources.data_manager", test_data_manager): result = mock_mcp["realestate://client/{client_id}/matches"]("NONEXISTENT") data = json.loads(result) assert "error" in data class TestLocationResources: """Test location-related MCP resources""" @pytest.fixture def mock_mcp(self): """Create a mock MCP server and register location resources""" mcp = Mock() resources = {} def mock_resource(uri): def decorator(func): resources[uri] = func return func return decorator mcp.resource = mock_resource register_location_resources(mcp) return resources def test_get_all_areas_resource(self, mock_mcp, test_data_manager): """Test realestate://all-areas resource""" with patch("resources.location_resources.data_manager", test_data_manager): result = mock_mcp["realestate://all-areas"]() data = json.loads(result) assert isinstance(data, list) def test_get_amenities_resource(self, mock_mcp, test_data_manager): """Test realestate://amenities resource""" with patch("resources.location_resources.data_manager", test_data_manager): result = mock_mcp["realestate://amenities"]() data = json.loads(result) assert "schools" in data assert "parks_and_recreation" in data class TestAllResources: """Test all resources together""" @pytest.fixture def mock_mcp(self): """Create a mock MCP server and register all resources""" mcp = Mock() resources = {} def mock_resource(uri): def decorator(func): resources[uri] = func return func return decorator mcp.resource = mock_resource # Register all resource modules register_property_resources(mcp) register_agent_resources(mcp) register_market_resources(mcp) register_client_resources(mcp) register_location_resources(mcp) return resources def test_all_resources_registered(self, mock_mcp): """Test that all expected resources are registered""" expected_resources = [ "realestate://all-properties", "realestate://properties/area/{area}", "realestate://property/{property_id}/insights", "realestate://all-agents", "realestate://agent/{agent_id}/dashboard", "realestate://market-overview", "realestate://market/area/{area}", "realestate://client/{client_id}/matches", "realestate://all-areas", "realestate://amenities", ] for resource_uri in expected_resources: assert resource_uri in mock_mcp, f"Resource {resource_uri} not registered" def test_resource_count(self, mock_mcp): """Test that we have the expected number of resources""" assert len(mock_mcp) == 10, f"Expected 10 resources, got {len(mock_mcp)}"

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/agentic-ops/real-estate-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server