Skip to main content
Glama

MCP Agent Orchestration System

by aviz85
README.md5.81 kB
# MCP Agent Orchestration System A Python implementation of a state-based agent orchestration system using the Model Context Protocol (MCP). ## What is MCP? The Model Context Protocol (MCP) allows applications to provide context for LLMs in a standardized way, separating the concerns of providing context from the actual LLM interaction. With MCP, you can build servers that expose: - **Resources**: Data sources that provide information to LLMs - **Tools**: Functions that allow LLMs to perform actions - **Prompts**: Reusable templates for LLM interactions ## Installation ### Prerequisites - Python 3.10 or higher - MCP Python SDK 1.2.0 or higher ### Setting Up Your Environment #### Using uv (recommended) ```bash # 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 ``` #### Using pip ```bash # 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 ``` ### Clone or Download Project Files Place the project files in your directory: - `orchestrator.py` - The main MCP server implementing the state machine - `orchestrator_client.py` - Client demonstrating the orchestration flow - `requirements.txt` - Dependencies for the project - `.gitignore` - Git ignore file ## Project Structure - `orchestrator.py` - The main MCP server implementing the state machine - `orchestrator_client.py` - Client demonstrating the orchestration flow - `requirements.txt` - Dependencies for the project ## Running the Orchestration System 1. Start the orchestration server directly for testing: ```bash python orchestrator.py ``` 2. In a separate terminal, run the client to see the orchestration in action: ```bash python orchestrator_client.py ``` ## Integrating with Claude for Desktop ### 1. Install Claude for Desktop Make sure you have Claude for Desktop installed. You can download the latest version from [Anthropic's website](https://claude.ai/desktop). ### 2. Configure Claude for Desktop 1. Open your Claude for Desktop configuration file: **macOS/Linux:** ```bash # Create or edit the configuration file code ~/Library/Application\ Support/Claude/claude_desktop_config.json ``` **Windows:** ```bash # Path may vary depending on your Windows version code %APPDATA%\Claude\claude_desktop_config.json ``` 2. Add the orchestrator server configuration: ```json { "mcpServers": { "agent-orchestrator": { "command": "python", "args": [ "/ABSOLUTE/PATH/TO/YOUR/PROJECT/orchestrator.py" ] } } } ``` Replace the path with the absolute path to your orchestrator.py file. 3. Save the configuration file and restart Claude for Desktop. ### 3. Using the Orchestrator in Claude Once configured, you can: 1. Open Claude for Desktop 2. Click on the MCP server icon in the sidebar 3. Select "agent-orchestrator" from the list of available servers 4. Start interacting with the orchestration system Claude will be able to: - Transition between different agent states - Store and retrieve information from the knowledge base - Maintain conversation context across state transitions - Access state-specific prompts ## Agent States The orchestration system implements a state machine with the following states: - **IDLE**: Waiting for instructions - **PLANNING**: Creating a structured plan for a task - **RESEARCHING**: Gathering information needed for a task - **EXECUTING**: Carrying out planned actions - **REVIEWING**: Evaluating results and determining next steps - **ERROR**: Handling errors or unexpected situations ## Customizing the System ### Adding New States 1. Add the state to the `AgentState` enum in `orchestrator.py` 2. Create a prompt function for the new state 3. Update the transition logic in `_get_available_transitions()` 4. Add handlers for the new state in resource access functions ### Creating Custom Tools Add new tools by creating functions decorated with `@mcp.tool()`: ```python @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" ``` ## Development and Testing ### Using the MCP CLI The MCP CLI provides tools for development and testing: ```bash # 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 ``` ### Manual Testing with Python ```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"}) ``` ## Resources - [MCP Python SDK Documentation](https://github.com/anthropics/anthropic-mcp) - [Model Context Protocol Specification](https://github.com/anthropics/anthropic-mcp/blob/main/README.md) ## License This project is licensed under the MIT License - see the LICENSE file for details.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aviz85/mcp-agents-orchestra'

If you have feedback or need assistance with the MCP directory API, please join our Discord server