- Update all GitHub URLs to git.supported.systems/MCP/mcrentcast - Add production installation using uvx --from git+https://... - Distinguish between development and production installation methods - Fix pyproject.toml project URLs
79 lines
2.2 KiB
Python
79 lines
2.2 KiB
Python
#!/usr/bin/env python
|
|
"""Test the MCP server functionality."""
|
|
|
|
import asyncio
|
|
import json
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add src to path
|
|
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
|
|
|
|
from mcrentcast.server import app
|
|
|
|
|
|
async def test_tools():
|
|
"""Test MCP server tools."""
|
|
print("Testing mcrentcast MCP Server")
|
|
print("=" * 50)
|
|
|
|
# List available tools
|
|
tools = []
|
|
for name, func in app._tools.items():
|
|
tools.append(name)
|
|
print(f" - {name}")
|
|
|
|
print(f"\nTotal tools: {len(tools)}")
|
|
|
|
# Test set_api_key
|
|
print("\n1. Testing set_api_key...")
|
|
result = await app._tools["set_api_key"](api_key="test_key_basic")
|
|
print(f" Result: {result}")
|
|
|
|
# Test get_api_limits
|
|
print("\n2. Testing get_api_limits...")
|
|
result = await app._tools["get_api_limits"]()
|
|
print(f" Result: {json.dumps(result, indent=2)}")
|
|
|
|
# Test search_properties (with cache miss)
|
|
print("\n3. Testing search_properties...")
|
|
result = await app._tools["search_properties"](
|
|
city="Austin",
|
|
state="TX",
|
|
limit=2
|
|
)
|
|
print(f" Found {result.get('count', 0)} properties")
|
|
print(f" Cached: {result.get('cached', False)}")
|
|
|
|
# Test again (should hit cache)
|
|
print("\n4. Testing search_properties (cache hit)...")
|
|
result = await app._tools["search_properties"](
|
|
city="Austin",
|
|
state="TX",
|
|
limit=2
|
|
)
|
|
print(f" Found {result.get('count', 0)} properties")
|
|
print(f" Cached: {result.get('cached', False)}")
|
|
print(f" Cache age: {result.get('cache_age_hours', 'N/A')} hours")
|
|
|
|
# Test get_cache_stats
|
|
print("\n5. Testing get_cache_stats...")
|
|
result = await app._tools["get_cache_stats"]()
|
|
print(f" Result: {json.dumps(result, indent=2)}")
|
|
|
|
# Test get_usage_stats
|
|
print("\n6. Testing get_usage_stats...")
|
|
result = await app._tools["get_usage_stats"](days=7)
|
|
print(f" Result: {json.dumps(result, indent=2)}")
|
|
|
|
print("\n" + "=" * 50)
|
|
print("All tests completed successfully!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# Set environment for testing
|
|
os.environ["USE_MOCK_API"] = "true"
|
|
os.environ["RENTCAST_API_KEY"] = "test_key_basic"
|
|
|
|
asyncio.run(test_tools()) |