7.2 KiB
7.2 KiB
Copilot Instructions for Autogen-MCP-Server
Project Overview
This project implements a hierarchical MCP (Model Context Protocol) server system using AutoGen multi-agent architecture. The system acts as a coordinator for multiple specialized MCP servers through configurable AI agents.
Architecture
- Main MCP Server: Entry point for MCP-capable clients (e.g., AnythingLLM)
- AutoGen Framework: Multi-agent coordination system
- Moderator Agent: Orchestrates and routes requests to specialized agents
- Specialized Agents: Each agent handles specific domains (Azure DevOps, Database, etc.)
- MCP Server Integration: Each specialized agent connects to dedicated MCP servers
- Configuration-Driven: YAML/JSON configuration for agent setup and routing
- FastMCP: The main MCP server implementation MUST use FastMCP as the protocol and server library. No other MCP server implementation is allowed for the entry point.
Key Components
1. MCP Server (Entry Point)
- Implements MCP protocol using FastMCP (mandatory)
- Receives requests from clients
- Forwards to AutoGen moderator
- Returns responses back to clients
2. Moderator Agent
- Analyzes incoming requests
- Determines appropriate specialized agent
- Coordinates multi-agent conversations
- Aggregates and formats responses
3. Specialized Agents
- Domain-specific expertise
- Connected to specialized MCP servers
- Configurable via YAML/JSON
- Pluggable architecture
4. Configuration System
- Agent definitions in YAML/JSON
- Routing rules based on keywords/patterns
- MCP server connections
- Model configurations
- Fallback strategies
Development Guidelines
Virtual Environment Management
- ALWAYS activate the .venv before running any terminal commands
- Use
source .venv/bin/activate(Linux/macOS) or.venv\Scripts\activate(Windows) - Never run Python commands or install packages without the virtual environment activated
- All pip installs, python executions, and package management must be done within the .venv
Project Cleanliness
- Keep the project structure clean and organized
- After creating new files, verify they are actually needed and remove unnecessary ones
- Do not create duplicate files in subdirectories
- NEVER create copies of existing files in subdirectories
- Before creating a new file, check if a similar file already exists
- Remove temporary files, unused imports, and dead code regularly
- Maintain a minimal and focused project structure
File Management Rules
- Check for existing files before creating new ones
- Use existing files and extend them rather than creating duplicates
- If a file needs to be moved, use proper refactoring instead of copying
- Remove any files that become obsolete after refactoring
- Keep related functionality in the same file when appropriate
Code Structure
├── src/ # Source code
│ ├── mcp_server/ # Main MCP server implementation
│ ├── agents/ # AutoGen agent implementations
│ │ ├── moderator.py # Moderator agent
│ │ ├── base_agent.py # Base class for specialized agents
│ │ └── specialized/ # Specialized agent implementations
│ ├── config/ # Configuration management
│ ├── utils/ # Utility functions
│ ├── web_ui/ # Web UI for configuration management
│ │ ├── api/ # REST API endpoints
│ │ ├── static/ # CSS, JS, images
│ │ └── templates/ # HTML templates
│ └── main.py # Entry point
├── config/ # Configuration files
│ ├── example-config.yml # Example configuration
│ └── config.yml # Actual configuration (not in git)
├── tests/ # Test files
│ ├── unit/ # Unit tests
│ └── integration/ # Integration tests
├── logs/ # Log files (not in git)
├── docs/ # Documentation
├── requirements.txt # Python dependencies
├── requirements-dev.txt # Development dependencies
└── .venv/ # Virtual environment
Configuration Format
moderator:
name: "AgentModerator"
model: "gpt-4"
system_message: "..."
agents:
- name: "AzureDevOpsAgent"
specialization: "azure_devops"
model: "gpt-4"
mcp_server:
url: "mcp://azure-devops-server"
tools: ["get_work_items", "create_pull_request"]
routing_rules:
- keywords: ["azure", "devops", "pipeline"]
agent: "AzureDevOpsAgent"
Key Technologies
- Python 3.12+ (3.13+ preferred when available)
- FastMCP: Mandatory for the main MCP server implementation
- AutoGen: Multi-agent framework
- MCP SDK: Model Context Protocol implementation
- FastAPI: Modern web framework for Web UI
- Pydantic: Configuration validation
- PyYAML: Configuration parsing
- AsyncIO: Asynchronous operations
- SQLAlchemy: Database ORM (for configuration storage)
- Uvicorn: ASGI server
Development Phases
- Phase 1: Basic MCP server + single specialized agent
- Phase 2: Moderator agent + routing logic
- Phase 3: Configuration system + multiple agents
- Phase 4: Error handling + monitoring
- Phase 5: Plugin system + hot-reload
Testing Strategy
- Unit tests for each component
- Integration tests for agent communication
- Configuration validation tests
- End-to-end tests with real MCP clients
- Performance tests for multi-agent scenarios
Error Handling
- Graceful degradation when agents/servers unavailable
- Timeout handling for long-running operations
- Fallback strategies in configuration
- Comprehensive logging and monitoring
Performance Considerations
- Async/await for non-blocking operations
- Connection pooling for MCP servers
- Request caching where appropriate
- Token usage optimization
Implementation Notes
Agent Factory Pattern
Use factory pattern to create agents from configuration:
class AgentFactory:
@staticmethod
def create_agent(config: AgentConfig) -> BaseAgent:
# Create agent based on configuration
MCP Server Registry
Maintain registry of available MCP servers:
class MCPServerRegistry:
def register_server(self, name: str, server: MCPServer):
# Register MCP server
def get_server(self, name: str) -> MCPServer:
# Get MCP server by name
Configuration Hot-Reload
Implement configuration reload without restart:
class ConfigManager:
def reload_config(self):
# Reload configuration and update agents
Security Considerations
- Validate all configuration inputs
- Sanitize requests between agents
- Implement proper authentication for MCP servers
- Log all agent interactions for audit
Monitoring & Observability
- Request tracing across agent boundaries
- Performance metrics collection
- Error rate monitoring
- Token usage tracking
Future Enhancements
- Web UI for configuration management
- Agent performance analytics
- Dynamic agent scaling
- Advanced routing algorithms
- Integration with more MCP servers