MCP Agent Orchestration System
Un sistema de orquestación de agentes basado en estados que utiliza el Protocolo de Contexto de Modelo (MCP).
Documentación
Sistema de Orquestación de Agentes MCP
Una implementación en Python de un sistema de orquestación de agentes basado en estados, utilizando el Protocolo de Contexto de Modelos (MCP).
¿Qué es MCP?
El Protocolo de Contexto de Modelos (MCP) permite que las aplicaciones proporcionen contexto a los LLM de manera estandarizada, separando las preocupaciones de proporcionar contexto de la interacción real con el LLM. Con MCP, puedes construir servidores que expongan:
- Recursos: Fuentes de datos que proporcionan información a los LLM
- Herramientas: Funciones que permiten a los LLM realizar acciones
- Prompts: Plantillas reutilizables para interacciones con LLM
Instalación
Requisitos previos
- Python 3.10 o superior
- MCP Python SDK 1.2.0 o superior
Configuración de tu entorno
Usando uv (recomendado)
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create a new directory for our project
uv init mcp-agents-orchestra
cd mcp-agents-orchestra
# Create virtual environment and activate it
uv venv
source .venv/bin/activate # On Unix/macOS
.venv\Scripts\activate # On Windows
# Install dependencies
uv add "mcp[cli]" httpx
Usando pip
# Create a new directory for our project
mkdir mcp-agents-orchestra
cd mcp-agents-orchestra
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Unix/macOS
venv\Scripts\activate # On Windows
# Install dependencies
pip install "mcp[cli]" httpx
Clonar o descargar los archivos del proyecto
Coloca los archivos del proyecto en tu directorio:
orchestrator.py- El servidor MCP principal que implementa la máquina de estadosorchestrator_client.py- Cliente que demuestra el flujo de orquestaciónrequirements.txt- Dependencias del proyecto.gitignore- Archivo de ignorados de Git
Estructura del proyecto
orchestrator.py- El servidor MCP principal que implementa la máquina de estadosorchestrator_client.py- Cliente que demuestra el flujo de orquestaciónrequirements.txt- Dependencias del proyecto
Ejecución del sistema de orquestación
- Inicia el servidor de orquestación directamente para pruebas:
python orchestrator.py
- En una terminal separada, ejecuta el cliente para ver la orquestación en acción:
python orchestrator_client.py
Integración con Claude para Desktop
1. Instalar Claude para Desktop
Asegúrate de tener Claude para Desktop instalado. Puedes descargar la última versión desde el sitio web de Anthropic.
2. Configurar Claude para Desktop
-
Abre tu archivo de configuración de Claude para Desktop:
macOS/Linux:
# Create or edit the configuration file code ~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
# Path may vary depending on your Windows version code %APPDATA%\Claude\claude_desktop_config.json -
Agrega la configuración del servidor orquestador:
{ "mcpServers": { "agent-orchestrator": { "command": "python", "args": [ "/ABSOLUTE/PATH/TO/YOUR/PROJECT/orchestrator.py" ] } } }Reemplaza la ruta con la ruta absoluta a tu archivo orchestrator.py.
-
Guarda el archivo de configuración y reinicia Claude para Desktop.
3. Usando el orquestador en Claude
Una vez configurado, puedes:
- Abrir Claude para Desktop
- Hacer clic en el ícono del servidor MCP en la barra lateral
- Seleccionar "agent-orchestrator" de la lista de servidores disponibles
- Comenzar a interactuar con el sistema de orquestación
Claude podrá:
- Transicionar entre diferentes estados de agente
- Almacenar y recuperar información de la base de conocimientos
- Mantener el contexto de conversación a través de transiciones de estado
- Acceder a prompts específicos de cada estado
Estados del agente
El sistema de orquestación implementa una máquina de estados con los siguientes estados:
- IDLE: Esperando instrucciones
- PLANNING: Creando un plan estructurado para una tarea
- RESEARCHING: Recopilando información necesaria para una tarea
- EXECUTING: Llevando a cabo las acciones planificadas
- REVIEWING: Evaluando resultados y determinando los siguientes pasos
- ERROR: Manejando errores o situaciones inesperadas
Personalización del sistema
Agregar nuevos estados
- Agrega el estado al enum
AgentStateenorchestrator.py - Crea una función de prompt para el nuevo estado
- Actualiza la lógica de transición en
_get_available_transitions() - Agrega manejadores para el nuevo estado en las funciones de acceso a recursos
Crear herramientas personalizadas
Agrega nuevas herramientas creando funciones decoradas con @mcp.tool():
@mcp.tool()
def my_custom_tool(arg1: str, arg2: int, ctx: Context) -> str:
"""Description of what this tool does
Args:
arg1: Description of arg1
arg2: Description of arg2
"""
# Implementation here
return "Result"
Desarrollo y pruebas
Usando la CLI de MCP
La CLI de MCP proporciona herramientas para desarrollo y pruebas:
# Install MCP CLI if you haven't already
pip install "mcp[cli]"
# Test your server with the MCP Inspector
mcp dev orchestrator.py
# Install in Claude Desktop
mcp install orchestrator.py
Pruebas manuales con Python
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async with stdio_client(StdioServerParameters(command="python", args=["orchestrator.py"])) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Test state transitions
await session.call_tool("transition_state", arguments={"new_state": "PLANNING"})
Recursos
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.