feat: añadir cliente MCP para consumir servidores externos

Implementa el cliente MCP que permite a los agentes conectarse a servidores
MCP externos y usar sus tools como si fueran tools nativas del agente.

Arquitectura implementada:
- shell/mcp/client.go: Cliente MCP con soporte stdio y SSE
- shell/mcp/manager.go: Gestor de múltiples clientes MCP
- tools/mcptools/mcp.go: Bridge que convierte MCP tools → tools.Tool
- shell/mcp/server.go: Movido desde shell/protocols/ para colocación junto al client

Cambios en config:
- MCPServerCfg extendido con campos Transport, Command, Args, Env, Headers,
  Prefix, Timeout para soportar stdio y SSE transport

Integración en runtime:
- agents/runtime.go: Inicializa MCP manager si config.Tools.MCP.Enabled
- buildToolRegistry: Registra tools MCP automáticamente con prefijos configurables
- Agent: Campo mcpManager que se cierra en shutdown

Transportes soportados:
- stdio: Lanza subproceso (ej: npx -y @anthropic/mcp-server-brave-search)
- SSE: Se conecta a servidor HTTP MCP

Las tools MCP son indistinguibles de tools nativas desde el punto de vista
del LLM. Auto-discovery via ListTools(), conversión de JSON Schema a tools.Param.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-03-08 21:22:33 +00:00
parent 5003201dd8
commit 1fccae1568
9 changed files with 489 additions and 8 deletions
+2
View File
@@ -51,11 +51,13 @@ pkg/personality/ tipos de personalidad
shell/llm/ clientes LLM (anthropic, openai)
shell/matrix/ cliente Matrix (mautrix-go)
shell/ssh/ ejecutor SSH
shell/mcp/ cliente y servidor MCP (Model Context Protocol)
shell/effects/ Runner: []Action → side effects
shell/bus/ comunicacion inter-agente
agents/runtime.go Agent{}: ensambla core + shell
agents/<id>/ agent.go (reglas puras) + config.yaml + prompts/system.md
tools/ tool registry + tool implementations (subpackages)
tools/mcptools/ bridge: convierte MCP tools → tools.Tool
internal/config/ schema.go + loader.go
security/ grupos de usuarios/agentes + politicas de permisos (YAMLs)
cmd/launcher/ entrypoint principal (rulesRegistry)