wire llms, ui tweaks

This commit is contained in:
2026-04-12 11:32:36 -03:00
parent 4de44baf98
commit 0f122fa8f7
22 changed files with 960 additions and 203 deletions

View File

@@ -11,20 +11,38 @@ from typing import Any
from fastmcp import Client
# Server configurations for stdio transport
SERVERS = {
"shared": {
def _env() -> dict:
"""Forward LLM-related env vars to MCP server subprocesses."""
import os
env = {}
for key in (
"LLM_PROVIDER", "GROQ_API_KEY", "GROQ_MODEL",
"ANTHROPIC_API_KEY", "ANTHROPIC_MODEL",
"OPENAI_API_KEY", "OPENAI_BASE_URL", "OPENAI_MODEL",
"AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_DEFAULT_REGION",
"BEDROCK_MODEL_ID", "USE_BEDROCK",
"PATH",
):
val = os.getenv(key)
if val:
env[key] = val
return env
def _server_config(module: str) -> dict:
"""Build server config with current env vars (called at connect time, not import time)."""
return {
"command": "uv",
"args": ["run", "python", "-m", "mcp_servers.shared"],
},
"ops": {
"command": "uv",
"args": ["run", "python", "-m", "mcp_servers.ops"],
},
"passenger": {
"command": "uv",
"args": ["run", "python", "-m", "mcp_servers.passenger"],
},
"args": ["run", "python", "-m", module],
"env": _env(),
}
SERVER_MODULES = {
"shared": "mcp_servers.shared",
"ops": "mcp_servers.ops",
"passenger": "mcp_servers.passenger",
}
# Agent profiles — which servers each agent connects to
@@ -43,9 +61,9 @@ class MCPMultiClient:
async def connect(self, server_names: list[str]) -> None:
"""Connect to the specified MCP servers."""
for name in server_names:
if name not in SERVERS:
raise ValueError(f"Unknown server: {name}. Available: {list(SERVERS.keys())}")
config = {"mcpServers": {"default": SERVERS[name]}}
if name not in SERVER_MODULES:
raise ValueError(f"Unknown server: {name}. Available: {list(SERVER_MODULES.keys())}")
config = {"mcpServers": {"default": _server_config(SERVER_MODULES[name])}}
client = Client(config)
await client.__aenter__()
self._clients[name] = client