forked from MCP/llm-fusion-mcp
Revolutionary architecture that bridges remote LLMs with the entire MCP ecosystem! ## 🌟 Key Features Added: - Real MCP protocol implementation (STDIO + HTTP servers) - Hybrid LLM provider system (OpenAI-compatible + Native APIs) - Unified YAML configuration with environment variable substitution - Advanced error handling with circuit breakers and provider fallback - FastAPI HTTP bridge for remote LLM access - Comprehensive tool & resource discovery system - Complete test suite with 4 validation levels ## 🔧 Architecture Components: - `src/llm_fusion_mcp/orchestrator.py` - Main orchestrator with hybrid providers - `src/llm_fusion_mcp/mcp_client.py` - Full MCP protocol implementation - `src/llm_fusion_mcp/config.py` - Configuration management system - `src/llm_fusion_mcp/error_handling.py` - Circuit breaker & retry logic - `config/orchestrator.yaml` - Unified system configuration ## 🧪 Testing Infrastructure: - Complete system integration tests (4/4 passed) - MCP protocol validation tests - Provider compatibility analysis - Performance benchmarking suite 🎉 This creates the FIRST system enabling remote LLMs to access the entire MCP ecosystem through a unified HTTP API! 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
195 lines
4.9 KiB
YAML
195 lines
4.9 KiB
YAML
# LLM Fusion MCP - Universal Tool Orchestrator Configuration
|
|
# Configuration for providers, MCP servers, and HTTP API settings
|
|
|
|
# =============================================================================
|
|
# LLM PROVIDER CONFIGURATION
|
|
# =============================================================================
|
|
providers:
|
|
openai:
|
|
api_key: "${OPENAI_API_KEY}"
|
|
base_url: "https://api.openai.com/v1"
|
|
models:
|
|
- "gpt-4o"
|
|
- "gpt-4o-mini"
|
|
- "o3-high"
|
|
- "o3-low"
|
|
interface: "openai"
|
|
default_model: "gpt-4o-mini"
|
|
|
|
gemini:
|
|
api_key: "${GOOGLE_API_KEY}"
|
|
base_url: "https://generativelanguage.googleapis.com/v1beta/openai/"
|
|
models:
|
|
- "gemini-2.5-flash"
|
|
- "gemini-2.5-pro"
|
|
- "gemini-2.0-flash"
|
|
interface: "openai"
|
|
default_model: "gemini-2.5-flash"
|
|
|
|
anthropic:
|
|
api_key: "${ANTHROPIC_API_KEY}"
|
|
models:
|
|
- "claude-3.5-sonnet-20241022"
|
|
- "claude-3.5-haiku-20241022"
|
|
interface: "native"
|
|
default_model: "claude-3.5-sonnet-20241022"
|
|
|
|
grok:
|
|
api_key: "${XAI_API_KEY}"
|
|
base_url: "https://api.x.ai/v1"
|
|
models:
|
|
- "grok-3"
|
|
- "grok-vision-beta"
|
|
interface: "native"
|
|
default_model: "grok-3"
|
|
|
|
# Default provider for requests that don't specify one
|
|
default_provider: "gemini"
|
|
|
|
# =============================================================================
|
|
# MCP SERVER CONFIGURATION
|
|
# =============================================================================
|
|
mcp_servers:
|
|
# Local STDIO MCP servers
|
|
filesystem:
|
|
type: "stdio"
|
|
command: ["uvx", "mcp-server-filesystem"]
|
|
args: ["/home/rpm"]
|
|
namespace: "fs"
|
|
auto_start: true
|
|
restart_on_failure: true
|
|
timeout: 30
|
|
|
|
git:
|
|
type: "stdio"
|
|
command: ["npx", "@modelcontextprotocol/server-git"]
|
|
namespace: "git"
|
|
auto_start: true
|
|
working_directory: "."
|
|
environment:
|
|
GIT_EDITOR: "nano"
|
|
|
|
memory:
|
|
type: "stdio"
|
|
command: ["npx", "@modelcontextprotocol/server-memory"]
|
|
namespace: "memory"
|
|
auto_start: true
|
|
|
|
# Remote HTTP MCP servers (examples)
|
|
weather:
|
|
type: "http"
|
|
url: "https://weather-mcp.example.com"
|
|
namespace: "weather"
|
|
headers:
|
|
Authorization: "Bearer ${WEATHER_API_KEY}"
|
|
timeout: 15
|
|
|
|
database:
|
|
type: "http"
|
|
url: "https://db-mcp.internal.example.com"
|
|
namespace: "db"
|
|
auth:
|
|
type: "bearer"
|
|
token: "${DB_MCP_TOKEN}"
|
|
|
|
# MCP server connection settings
|
|
mcp_settings:
|
|
max_concurrent_connections: 10
|
|
connection_timeout: 30
|
|
heartbeat_interval: 60
|
|
auto_reconnect: true
|
|
max_reconnect_attempts: 3
|
|
|
|
# =============================================================================
|
|
# HTTP API SERVER CONFIGURATION
|
|
# =============================================================================
|
|
http_server:
|
|
host: "0.0.0.0"
|
|
port: 8000
|
|
cors_origins: ["*"]
|
|
cors_methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"]
|
|
cors_headers: ["*"]
|
|
|
|
# Authentication (set to false for development)
|
|
auth_required: false
|
|
api_keys: []
|
|
|
|
# Rate limiting
|
|
rate_limit:
|
|
enabled: true
|
|
requests_per_minute: 100
|
|
burst_limit: 20
|
|
|
|
# Request/Response limits
|
|
max_request_size: 50 # MB
|
|
request_timeout: 300 # seconds
|
|
|
|
# Development settings
|
|
reload: true
|
|
debug: true
|
|
|
|
# =============================================================================
|
|
# PERFORMANCE CONFIGURATION
|
|
# =============================================================================
|
|
performance:
|
|
# Connection pooling
|
|
connection_pool_size: 20
|
|
max_connections_per_provider: 10
|
|
|
|
# Caching
|
|
cache:
|
|
enabled: true
|
|
provider_models_ttl: 300 # 5 minutes
|
|
tool_results_ttl: 60 # 1 minute
|
|
max_cache_size: 1000 # entries
|
|
|
|
# Concurrency limits
|
|
max_concurrent_requests: 50
|
|
max_concurrent_tools: 20
|
|
|
|
# Timeouts
|
|
provider_timeout: 120
|
|
tool_timeout: 300
|
|
|
|
# =============================================================================
|
|
# LOGGING CONFIGURATION
|
|
# =============================================================================
|
|
logging:
|
|
level: "${LOG_LEVEL:INFO}"
|
|
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
|
|
# Log files
|
|
file_logging:
|
|
enabled: true
|
|
path: "logs/"
|
|
max_size: "10MB"
|
|
backup_count: 5
|
|
|
|
# Request logging
|
|
access_log: true
|
|
error_log: true
|
|
|
|
# Provider-specific logging
|
|
provider_logs:
|
|
enabled: true
|
|
include_request_body: false
|
|
include_response_body: false
|
|
|
|
# =============================================================================
|
|
# MONITORING & HEALTH CHECKS
|
|
# =============================================================================
|
|
monitoring:
|
|
health_check_interval: 30
|
|
metrics_enabled: true
|
|
|
|
# Provider health monitoring
|
|
provider_health:
|
|
check_interval: 60
|
|
failure_threshold: 3
|
|
recovery_threshold: 2
|
|
|
|
# MCP server health monitoring
|
|
mcp_health:
|
|
check_interval: 30
|
|
ping_timeout: 5
|
|
restart_failed_servers: true |