demo.pyโข3.01 kB
#!/usr/bin/env python3
"""
Working demonstration of the MCP Testing Harness
"""
import asyncio
import sys
from pathlib import Path
# Add src to path
sys.path.insert(0, str(Path(__file__).parent / "src"))
async def demo():
"""Demonstrate the MCP server functionality."""
print("๐ฏ MCP Testing Harness Demo")
print("=" * 35)
try:
# Import our modules
from core.server import MCPServer, MCPServerInfo
from core.testing import MCPServerTester
from datetime import datetime
print("โ
Imports successful!")
# Create server
server = MCPServer(host="localhost", port=8000, debug=True)
print("โ
Server created!")
# Create tester
tester = MCPServerTester()
print("โ
Tester created!")
# Show built-in tools
print(f"\n๐ง Built-in tools ({len(server.builtin_tools)}):")
for tool_name, tool_info in server.builtin_tools.items():
print(f" - {tool_name}: {tool_info['description']}")
# Test server registry
print("\n๐ Testing server registry...")
# Create a test server
test_server = MCPServerInfo(
id="",
name="Demo Server",
description="A demonstration MCP server",
version="1.0.0",
host="localhost",
port=8001,
status="stopped",
created_at=datetime.now(),
tools=[],
config={"demo": True}
)
# Register the server
server_id = await server.registry.register_server(test_server)
print(f"โ
Registered server with ID: {server_id}")
# List servers
servers = await server.registry.list_servers()
print(f"โ
Found {len(servers)} registered servers:")
for srv in servers:
print(f" - {srv.name} ({srv.host}:{srv.port}) - {srv.status}")
# Update server status
await server.registry.update_server_status(server_id, "running")
print("โ
Updated server status to 'running'")
# Unregister server
success = await server.registry.unregister_server(server_id)
print(f"โ
Unregistered server: {'Success' if success else 'Failed'}")
print("\n๐ Demo completed successfully!")
print("\n๐ก Your MCP Testing Harness is fully functional!")
print(" Next steps:")
print(" 1. Start the server: py -3 start_server.py")
print(" 2. Test with client: py -3 test_client.py")
print(" 3. Use with any MCP client")
print(" 4. Continue with Phase 2 (web interface)")
except Exception as e:
print(f"โ Error in demo: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
asyncio.run(demo())