#!/usr/bin/env python3
"""
Basic usage examples for MCP Router
"""
import sys
from pathlib import Path
# Add src to path
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
from router import MCPRouter, TaskType
from client import MCPRouterClient
def example_routing():
"""Example of routing queries."""
print("=" * 60)
print("MCP Router - Basic Routing Examples")
print("=" * 60)
router = MCPRouter()
queries = [
("Explain quantum computing", "balanced"),
("Write a Python function to sort a list", "speed"),
("Design a distributed system architecture", "quality"),
("Summarize this article", "cost"),
]
for query, strategy in queries:
print(f"\nQuery: {query}")
print(f"Strategy: {strategy}")
print("-" * 60)
decision = router.route(query, strategy=strategy)
print(f"Selected: {decision.selected_model.name}")
print(f"Confidence: {decision.confidence:.2%}")
print(f"Reasoning: {decision.reasoning}")
print(f"Estimated Cost: ${decision.estimated_cost:.6f}")
def example_execution():
"""Example of executing queries through the router."""
print("\n" + "=" * 60)
print("MCP Router - Query Execution Examples")
print("=" * 60)
router = MCPRouter()
client = MCPRouterClient(router)
queries = [
"What is 2+2?",
"Write a hello world function in Python",
]
for query in queries:
print(f"\nQuery: {query}")
print("-" * 60)
try:
result = client.execute(query, strategy="balanced")
print(f"Model: {result['model']}")
print(f"Response: {result['content'][:200]}...")
print(f"Usage: {result['usage']}")
except Exception as e:
print(f"Error: {e}")
def example_custom_model():
"""Example of adding a custom model."""
print("\n" + "=" * 60)
print("MCP Router - Custom Model Registration")
print("=" * 60)
router = MCPRouter()
from router import ModelCapabilities, TaskType
# Register a custom model
router.register_model(ModelCapabilities(
name="Custom Fast Model",
provider="custom",
model_id="custom-fast-v1",
supports_reasoning=True,
supports_code=True,
max_tokens=4096,
context_window=16000,
cost_per_1k_tokens_input=0.10,
cost_per_1k_tokens_output=0.20,
avg_latency_ms=200,
reasoning_quality=0.70,
code_quality=0.75,
speed_score=0.98,
preferred_tasks=[TaskType.CODE_EDIT, TaskType.SUMMARIZATION],
api_key_env_var="CUSTOM_API_KEY"
))
print("Custom model registered!")
print(f"Total models: {len(router.models)}")
def example_statistics():
"""Example of viewing routing statistics."""
print("\n" + "=" * 60)
print("MCP Router - Statistics")
print("=" * 60)
router = MCPRouter()
# Make some routing decisions
queries = [
"Explain machine learning",
"Write Python code",
"Summarize this",
]
for query in queries:
router.route(query)
# Get statistics
stats = router.get_routing_stats()
print(f"\nTotal Routes: {stats['total_routes']}")
print(f"Model Usage:")
for model_id, count in stats.get('model_usage', {}).items():
print(f" {model_id}: {count}")
print(f"Average Confidence: {stats.get('avg_confidence', 0):.2%}")
if __name__ == "__main__":
try:
example_routing()
example_execution()
example_custom_model()
example_statistics()
except Exception as e:
print(f"Error: {e}")
import traceback
traceback.print_exc()
sys.exit(1)