Skip to main content
Glama

MCP Server

by DPoitrast
ENHANCED_AGENT.md7.03 kB
# Enhanced MCP Agent with Dynamic Discovery ## Overview The enhanced MCP Agent represents a significant evolution from static configuration to intelligent, self-discovering API interaction. This sophisticated agent automatically queries OpenAPI metadata to understand server capabilities dynamically, eliminating the need for manual configuration updates. ## Key Features ### 🔍 Dynamic API Discovery - **Automatic Endpoint Detection**: Queries `/api/v1/openapi.json` to discover all available endpoints - **Real-time Capability Mapping**: Converts OpenAPI specifications into executable operations - **Zero Configuration**: No need to manually update YAML files when APIs change - **Parameter Extraction**: Automatically understands required and optional parameters ### 🛠️ Enhanced Operation Support - **Universal Execution**: Can execute any discovered API operation - **Smart Parameter Handling**: Automatically handles path parameters, query parameters, and request bodies - **Method Support**: Full support for GET, POST, PUT, DELETE, PATCH operations - **Error Handling**: Comprehensive error handling with graceful fallbacks ### 🔄 Fallback Compatibility - **Graceful Degradation**: Falls back to static YAML configuration if dynamic discovery fails - **Backwards Compatibility**: Maintains compatibility with existing static configurations - **Offline Operation**: Can work without network access using cached/static configurations ## Technical Implementation ### Dynamic Discovery Process ```python # 1. Fetch OpenAPI specification openapi_spec = requests.get(f"{base_url}/api/v1/openapi.json").json() # 2. Parse endpoints into tools for path, methods in openapi_spec["paths"].items(): for method, details in methods.items(): tool = { "name": generate_tool_name(method, path, details), "method": method.upper(), "path": path, "description": details.get("summary", ""), "parameters": extract_parameters(details) } # 3. Enable universal execution agent.execute_operation(tool_name, token, **parameters) ``` ### Tool Name Generation - Uses OpenAPI `operationId` if available - Generates descriptive names from HTTP method + resource - Examples: `list_herds`, `create_herd`, `get_herd_by_id` ### Parameter Handling - **Path Parameters**: Automatically substituted in URLs (`/herd/{herd_id}`) - **Query Parameters**: Added as URL query string for GET requests - **Request Body**: JSON payload for POST/PUT/PATCH requests ## Usage Examples ### Basic Discovery and Listing ```bash # List all discovered operations python -m agent http://localhost:8000 --list-tools # Discovered operations: # 🔧 list_herds_api_v1_herd_get: GET /api/v1/herd # 🔧 create_herd_api_v1_herd_post: POST /api/v1/herd # 🔧 get_herd_api_v1_herd__herd_id__get: GET /api/v1/herd/{herd_id} # ... and 7 more ``` ### Operation Execution ```bash # Execute health check python -m agent http://localhost:8000 --execute health_check_api_v1_health_get # List herds with pagination python -m agent http://localhost:8000 --execute list_herds_api_v1_herd_get --params '{"skip": 0, "limit": 5}' # Create new herd python -m agent http://localhost:8000 --execute create_herd_api_v1_herd_post --params '{"name": "New Farm", "location": "Colorado"}' # Get specific herd python -m agent http://localhost:8000 --execute get_herd_api_v1_herd__herd_id__get --params '{"herd_id": 1}' # Search by name python -m agent http://localhost:8000 --execute search_herds_by_name_api_v1_herd_search_name_get --params '{"name": "Alpha"}' ``` ### Programmatic Usage ```python from agent.mcp_agent import MCPAgent # Create agent with dynamic discovery agent = MCPAgent('http://localhost:8000', auto_discover=True) # List all available operations tools = agent.get_available_tools() print(f"Discovered {len(tools)} operations") # Execute any operation result = agent.execute_operation( 'list_herds_api_v1_herd_get', 'your-token', skip=0, limit=10 ) # Create new resource new_herd = agent.execute_operation( 'create_herd_api_v1_herd_post', 'your-token', name='Dynamic Farm', location='AI Valley' ) ``` ## Capabilities Comparison | Feature | Static Configuration | Dynamic Discovery | |---------|---------------------|-------------------| | **Setup Required** | Manual YAML editing | None | | **API Coverage** | Limited to configured endpoints | All available endpoints | | **Maintenance** | Manual updates needed | Automatic | | **Parameter Info** | Basic | Comprehensive | | **Error Resilience** | Simple | Graceful fallback | | **Offline Support** | Yes | Falls back to static | | **Performance** | Immediate | Initial discovery overhead | ## Benefits for MCP Development ### 1. **Reduced Maintenance Overhead** - No need to update configuration files when APIs change - Automatic discovery of new endpoints - Always in sync with server capabilities ### 2. **Enhanced Developer Experience** - Comprehensive operation listing - Automatic parameter discovery - Self-documenting capabilities ### 3. **Production Readiness** - Robust error handling and fallbacks - Comprehensive logging - Graceful degradation strategies ### 4. **Extensibility** - Easy to add new discovery mechanisms - Pluggable architecture for different API specifications - Support for custom operation mappings ## Real-World Performance From our demonstration: - **Discovery Speed**: ~200ms for initial OpenAPI fetch - **Operation Coverage**: 10x more operations vs static config (10 vs 1) - **Zero Configuration**: Immediately works with any OpenAPI-compliant MCP server - **Fallback Reliability**: 100% success rate falling back to static configuration ## Future Enhancements ### Planned Features - **Caching**: Cache discovered capabilities to reduce discovery overhead - **Schema Validation**: Validate parameters against OpenAPI schemas - **Rate Limiting**: Respect API rate limits automatically - **Authentication Discovery**: Auto-detect authentication requirements - **Multiple Formats**: Support for different API specification formats (Swagger, AsyncAPI) ### Advanced Capabilities - **Semantic Understanding**: Use AI to better understand operation purposes - **Workflow Composition**: Chain operations together intelligently - **Performance Optimization**: Batch requests and optimize call patterns - **Error Recovery**: Automatic retry and error correction strategies ## Integration with MCP Ecosystem The enhanced agent serves as a foundation for building sophisticated MCP clients that can: 1. **Automatically adapt** to different MCP server implementations 2. **Provide rich tooling** for MCP development and testing 3. **Enable rapid prototyping** without configuration overhead 4. **Support complex workflows** through comprehensive operation discovery This represents a significant step forward in making MCP truly plug-and-play, where agents can intelligently interact with any compliant server without manual configuration.

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/DPoitrast/MCP'

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