mcrentcast/scripts/test_mcp_server.py
Ryan Malloy fedfc7a6cf Update repository URLs and add production installation instructions
- 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
2025-09-09 13:16:24 -06:00

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())