Enhanced Model Context Protocol Framework for ME2AI with intelligent agent routing
Project description
ME2AI MCP - Enhanced Model Context Protocol Framework
The ME2AI MCP package extends the official MCP (Model Context Protocol) package with enhanced functionality for building robust MCP servers with standardized patterns, tools, and utilities.
Overview
This framework provides a consistent foundation for all ME2AI MCP server implementations with improved error handling, logging, and statistics tracking. All ME2AI services should use this package as a foundation for their MCP implementations.
Features
- Enhanced Base Classes:
ME2AIMCPServerwith built-in logging, error handling, and statistics tracking - Improved Tool Registration:
register_tooldecorator with automatic error handling - Authentication System: API Key and Token authentication with environment variable support
- Agent-Tool Routing Layer: Intelligent request routing with specialized agents and dynamic tool discovery
- Built-in Utilities: Text sanitization, response formatting, HTML processing
- Standardized Patterns: Consistent response structures and error formats
- Comprehensive Testing: Unit, integration, and performance tests with 100% coverage for core components
- CI/CD Integration: GitHub Actions workflows for automated testing and quality assurance
- Code Quality Tools: Automated linting, formatting, and type checking
Installation
# Install from PyPI (recommended)
pip install me2ai_mcp
# Install specific version
pip install me2ai_mcp==0.0.7
# Install from GitHub
pip install git+https://github.com/achimdehnert/me2ai_mcp.git
# Install with all optional dependencies
pip install me2ai_mcp[all]
# Install with specific feature set
pip install me2ai_mcp[web]
Alternatively, install directly from GitHub:
# Install from GitHub
pip install git+https://github.com/achimdehnert/me2ai_mcp.git
See INSTALLATION.md for detailed installation options.
Agent-Tool Routing Layer
Die neue Routing-Schicht in Version 0.0.7 ermöglicht intelligentes Routing von Anfragen an spezialisierte Agenten basierend auf Anfragemuster und Toolkategorien:
Hauptkomponenten
- BaseAgent: Basisklasse für alle Agenten-Implementierungen
- RoutingAgent: Agent mit dynamischer Tool-Auswahl basierend auf Anfragen
- SpecializedAgent: Domänenspezifischer Agent für bestimmte Toolsets
- MCPRouter: Zentrale Komponente für Anfragen-Weiterleitung und Agentenverwaltung
Beispiel: Agent-Routing-System
from me2ai_mcp import ME2AIMCPServer, SpecializedAgent, MCPRouter, RoutingRule
# Server mit Tools erstellen
server = ME2AIMCPServer("routing_example")
@server.register_tool
def process_text(text):
"""Verarbeitet Text."""
return {"processed": text.upper()}
@server.register_tool
def store_data(data):
"""Speichert Daten."""
return {"stored": True, "data": data}
# Router erstellen
router = MCPRouter(server)
# Spezialisierte Agenten registrieren
text_agent = SpecializedAgent(
"text_agent", "Text Agent", tool_names=["process_text"]
)
data_agent = SpecializedAgent(
"data_agent", "Data Agent", tool_names=["store_data"]
)
router.register_agent(text_agent)
router.register_agent(data_agent)
# Routing-Regeln hinzufügen
router.add_routing_rule(RoutingRule("text|process", "text_agent", 100))
router.add_routing_rule(RoutingRule("data|store", "data_agent", 90))
# Anfragen verarbeiten
result_text = router.process_request("Process this text")
result_data = router.process_request("Store some data")
Weitere Details und Beispiele finden Sie in den Beispielen im examples/-Verzeichnis.
Quick Start
from me2ai_mcp.base import ME2AIMCPServer
# Create a new MCP server
server = ME2AIMCPServer(
server_name="my_server",
description="Example ME2AI MCP Server",
version="1.0.0"
)
# Register a tool
@server.register_tool
def process_data(input_text: str):
"""Process input data and return results."""
return {
"processed": input_text.upper(),
"length": len(input_text)
}
# Execute the tool
result = server.execute_tool("process_data", {"input_text": "hello world"})
print(result) # {'processed': 'HELLO WORLD', 'length': 11}
Core Components
Base Server
The ME2AIMCPServer class provides the foundation for all ME2AI MCP servers with:
- Automatic tool registration and discovery
- Consistent error handling and logging
- Tool execution statistics tracking
- Standard response formatting
Authentication
The AuthManager class provides standardized authentication handling:
- Environment variable based token management
- Support for multiple token sources
- Token validation and verification
Tools
Pre-built tools for common operations:
- Web content fetching and HTML parsing
- File system operations
- GitHub repository operations
Examples
See the examples/ directory for detailed implementation examples:
basic_server.py- Simple MCP server implementationgithub_mcp_server.py- GitHub integration example
Testing
Run the comprehensive test suite:
# Run all tests
python -m pytest
# Run with coverage report
python -m pytest --cov=me2ai_mcp
Development
- Clone the repository
- Install development dependencies:
pip install -e ".[dev]" - Run tests:
pytest - Follow ME2AI coding standards for contributions
Documentation
For detailed documentation on components and usage, see the docstrings in the code.
License
MIT License
Contact
- Project maintained by ME2AI Team
- Email: info@me2ai.dev
- GitHub: https://github.com/achimdehnert/me2ai_mcp
LLM Providers
- OpenAI: Utilizing GPT models for advanced language understanding
- Groq: High-performance inference with Mixtral-8x7b model
- Anthropic: Claude models for enhanced reasoning capabilities
Expert Agents
German Professor
- Language learning and cultural guidance
- Tools:
- German dictionary lookup
- Grammar checking
- Text translation
- Cultural research
Dating Expert
- Relationship advice and interpersonal skills
- Tools:
- Dating profile analysis
- Conversation pattern evaluation
- Relationship research
SEO Expert
- Search engine optimization strategies
- Tools:
- Website SEO analysis
- Keyword research
- Competition analysis
Researcher
- Academic research and analysis
- Tools:
- Comprehensive search (Web, Wikipedia, Academic papers)
- Data analysis with Python
- Citation generation
- Research summarization
Life Coach
- Personal development and goal setting
- Tools:
- Goal setting templates
- Mindfulness exercises
- Progress tracking
Moderator
- Conversation management and guidance
- Tools:
- Conversation flow management
- Topic suggestion
- Conflict resolution
System Features
- Enhanced Memory Management: Persistent conversation history for contextual responses
- Interactive CLI: User-friendly command-line interface
- Flexible Architecture: Easily extensible for new agents and tools
- Automatic Routing: Smart query routing to the most appropriate expert
- Comprehensive Testing: Unit, integration, performance, and load tests
Installation
Basic Installation
pip install -e .
Development Installation
pip install -e ".[dev]"
Environment Setup
Create a .env file in the project root with your API keys:
OPENAI_API_KEY=your_openai_key
GROQ_API_KEY=your_groq_key
ANTHROPIC_API_KEY=your_anthropic_key
Usage
Starting the CLI
python -m me2ai
Available Commands
talk <message>: Send a message to the current agentswitch <agent>: Switch to a different agentauto <message>: Let the router automatically select the best expertlist: Show available agentsclear: Clear conversation historyhelp: Show help messagequit: Exit the program
Example Interactions
Automatic Expert Selection
You> auto How do I optimize my website for search engines?
Routing your question...
Selected expert: SEO Expert
Reason: Query relates to website optimization
SEO Expert: Let me analyze your website's SEO factors...
[Uses SEO analysis tools to provide recommendations]
Research Query
You> auto What are the latest developments in quantum computing?
Routing your question...
Selected expert: Researcher
Reason: Query requires academic research
Researcher: Let me research this comprehensively...
[Uses multiple research tools to provide cited findings]
Development
Project Structure
me2ai/
├── agents/ # Agent implementations
│ ├── base.py # Base agent interface
│ ├── coaching_agents.py
│ ├── expert_agents.py
│ ├── routing_agent.py
│ └── factory.py
├── tools/ # Specialized tools
│ ├── web_tools.py
│ ├── language_tools.py
│ ├── dating_tools.py
│ └── research_tools.py
├── llms/ # LLM providers
│ ├── base.py
│ ├── openai_provider.py
│ ├── groq_provider.py
│ └── anthropic_provider.py
├── tests/ # Test suite
└── cli.py # CLI implementation
Adding New Tools
- Create a new tool class implementing the Tool protocol
- Add tool-specific dependencies to pyproject.toml
- Update relevant agent to use the new tool
Adding New Agents
- Create a new agent class inheriting from BaseAgent
- Add agent-specific tools and system prompt
- Update factory.py to support the new agent
- Update router agent to recognize the new expertise
Running Tests
Basic Test Suite
pytest tests/ -v
With Coverage Report
pytest tests/ -v --cov=. --cov-report=html
Specific Test Categories
# Run only integration tests
pytest tests/ -m integration
# Run only performance tests
pytest tests/ -m performance
# Run only load tests
pytest tests/ -m load
# Run only slow tests
pytest tests/ -m slow
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run the test suite
- Submit a pull request
Code Quality Standards
- Use type hints
- Follow Google style docstrings
- Maintain test coverage
- Keep code modular and extensible
Current Development Status
Test Status (as of 2024-12-22)
- ✅ CLI Tests: All 19 tests passing
- ❌ Load Tests: 4 tests failing
test_moderate_loadtest_heavy_loadtest_mixed_agent_loadtest_memory_load
Recent Changes
-
Agent Initialization
- Fixed agent initialization to properly handle system prompts and roles
- Implemented memory management in expert agents
- Added proper async support for agent responses
-
Expert Agent Updates
- German Professor: Enhanced language learning capabilities
- Dating Expert: Improved relationship advice system
- SEO Expert: Added technical SEO analysis tools
-
Code Quality
- Current test coverage: 37%
- Improved error handling in agent factory
- Enhanced async/await patterns in CLI
Known Issues
-
Load Tests
- Memory initialization issues in load tests
- Need to improve async handling in high-load scenarios
-
Performance
- Some response delays under heavy load
- Memory usage optimization needed
Next Steps
- Fix load test failures
- Improve test coverage
- Optimize memory management
- Enhance error handling
License
MIT License - See LICENSE file for details
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file me2ai_mcp-0.0.8.tar.gz.
File metadata
- Download URL: me2ai_mcp-0.0.8.tar.gz
- Upload date:
- Size: 392.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf3d0e4c4b366a58cfb50d4df458e03b17db3df462f8d5595b1d2072f88c9c77
|
|
| MD5 |
7939ce697ab66b9eedf2977d603b4231
|
|
| BLAKE2b-256 |
21078bcd0322b81563edd7d5944e0a34ec907d6122fa336c7333460c3fea240f
|
File details
Details for the file me2ai_mcp-0.0.8-py3-none-any.whl.
File metadata
- Download URL: me2ai_mcp-0.0.8-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49db9ec6ccd73499eef45ea6026d424e971b6899ce474f55067c8f1021bccaad
|
|
| MD5 |
3fecec42ecedd97ba6d9704ca414f3c3
|
|
| BLAKE2b-256 |
ee29665375549340739c7de1da493942989985a8cc936de2843dbc2f5723008c
|
File details
Details for the file me2ai_mcp-0.0.8-py2.py3-none-any.whl.
File metadata
- Download URL: me2ai_mcp-0.0.8-py2.py3-none-any.whl
- Upload date:
- Size: 199.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c0efe0f2eb6302de119fbbd9dbed3d9454c41b32fba1ef289a6d93a69210d4c
|
|
| MD5 |
292def9d6b943546fceea007a8c7efc2
|
|
| BLAKE2b-256 |
91af527cef968b8fa5c719692fe4fb1c3450c00b7be6cf514c522bc0422f843f
|