devflow-ai
Version:
Enterprise-grade AI agent orchestration with swarm management UI dashboard
530 lines (402 loc) • 15 kB
Markdown
# MCP (Model Context Protocol) Implementation
This directory contains a comprehensive implementation of the Model Context Protocol (MCP) for Claude-Flow, providing robust server lifecycle management, tool registration and discovery, protocol version negotiation, security, performance monitoring, and integration with the broader orchestration system.
## Overview
The MCP implementation provides:
- **Server Lifecycle Management**: Start, stop, restart, and health monitoring
- **Tool Registry**: Registration, discovery, and capability negotiation
- **Protocol Management**: Version compatibility checking and negotiation
- **Security**: Authentication, authorization, and session management
- **Performance Monitoring**: Real-time metrics, alerting, and optimization suggestions
- **Orchestration Integration**: Seamless integration with Claude-Flow components
## Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ MCP Orchestration Integration │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Lifecycle Mgr │ │ Performance Mon │ │ Protocol Mgr │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ MCP Server │ │ Tool Registry │ │ Auth Manager │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Request Router │ │ Session Manager │ │ Load Balancer │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Stdio Transport │ │ HTTP Transport │ │ WebSocket (TBD) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## Core Components
### 1. MCP Server (`server.ts`)
The main MCP server implementation providing:
- Protocol-compliant request/response handling
- Tool execution and management
- Session management
- Health status reporting
- Integration with orchestration components
```typescript
import { MCPServer } from './mcp/server.js';
const server = new MCPServer(config, eventBus, logger);
await server.start();
```
### 2. Lifecycle Manager (`lifecycle-manager.ts`)
Manages server lifecycle with robust error handling:
- State management (stopped, starting, running, stopping, error)
- Health monitoring with configurable intervals
- Auto-restart with exponential backoff
- Graceful shutdown with timeout
- Event emission for state changes
```typescript
import { MCPLifecycleManager } from './mcp/lifecycle-manager.js';
const lifecycle = new MCPLifecycleManager(config, logger, serverFactory);
await lifecycle.start();
```
### 3. Tool Registry (`tools.ts`)
Enhanced tool registration and discovery:
- Capability-based tool registration
- Tool discovery by category, tags, and permissions
- Metrics tracking (invocations, success rate, execution time)
- Protocol version compatibility checking
- Input validation with JSON Schema
```typescript
import { ToolRegistry } from './mcp/tools.js';
const registry = new ToolRegistry(logger);
registry.register(tool, capability);
const tools = registry.discoverTools({ category: 'filesystem' });
```
### 4. Protocol Manager (`protocol-manager.ts`)
Handles protocol version negotiation:
- Version compatibility checking
- Capability negotiation
- Feature support detection
- Deprecation warnings
- Migration guidance
```typescript
import { MCPProtocolManager } from './mcp/protocol-manager.js';
const protocolManager = new MCPProtocolManager(logger);
const result = await protocolManager.negotiateProtocol(clientParams);
```
### 5. Authentication Manager (`auth.ts`)
Comprehensive security implementation:
- Multiple auth methods (token, basic, OAuth)
- Session management with timeouts
- Permission-based authorization
- Rate limiting and brute force protection
- Token refresh and revocation
```typescript
import { AuthManager } from './mcp/auth.js';
const auth = new AuthManager(authConfig, logger);
const result = await auth.authenticate(request, session, context);
```
### 6. Performance Monitor (`performance-monitor.ts`)
Real-time performance monitoring:
- Request/response time tracking
- Percentile calculations (P50, P95, P99)
- Custom alerting rules
- Optimization suggestions
- Resource usage monitoring
```typescript
import { MCPPerformanceMonitor } from './mcp/performance-monitor.js';
const monitor = new MCPPerformanceMonitor(logger);
const requestId = monitor.recordRequestStart(request, session);
monitor.recordRequestEnd(requestId, response);
```
### 7. Orchestration Integration (`orchestration-integration.ts`)
Seamless integration with Claude-Flow:
- Component health monitoring
- Tool registration for orchestration features
- Event forwarding and coordination
- Reconnection logic with exponential backoff
- Cross-component communication
```typescript
import { MCPOrchestrationIntegration } from './mcp/orchestration-integration.js';
const integration = new MCPOrchestrationIntegration(
mcpConfig,
orchestrationConfig,
components,
logger,
);
await integration.start();
```
## Quick Start
### Basic Server Setup
```typescript
import { MCPIntegrationFactory } from './mcp/index.js';
// Development setup
const { server, lifecycleManager, performanceMonitor } =
await MCPIntegrationFactory.createDevelopmentSetup(logger);
await lifecycleManager.start();
```
### Full Integration Setup
```typescript
import { MCPOrchestrationIntegration } from './mcp/orchestration-integration.js';
const integration = new MCPOrchestrationIntegration(
mcpConfig,
{
enabledIntegrations: {
orchestrator: true,
swarm: true,
agents: true,
resources: true,
memory: true,
monitoring: true,
terminals: true,
},
autoStart: true,
enableMetrics: true,
enableAlerts: true,
},
{
orchestrator,
swarmCoordinator,
agentManager,
resourceManager,
memoryManager,
messageBus,
monitor,
eventBus,
terminalManager,
},
logger,
);
await integration.start();
```
### Tool Registration
```typescript
// Register a simple tool
server.registerTool({
name: 'filesystem/read',
description: 'Read file contents',
inputSchema: {
type: 'object',
properties: {
path: { type: 'string' },
},
required: ['path'],
},
handler: async (input) => {
const { path } = input as { path: string };
return await fs.readFile(path, 'utf-8');
},
});
// Register with enhanced capabilities
const toolRegistry = new ToolRegistry(logger);
toolRegistry.register(tool, {
name: 'filesystem/read',
version: '1.0.0',
description: 'Read file contents with encoding support',
category: 'filesystem',
tags: ['file', 'read', 'io'],
supportedProtocolVersions: [{ major: 2024, minor: 11, patch: 5 }],
requiredPermissions: ['filesystem.read'],
});
```
## Configuration
### MCP Config
```typescript
const mcpConfig: MCPConfig = {
transport: 'http',
host: '0.0.0.0',
port: 3000,
tlsEnabled: true,
enableMetrics: true,
auth: {
enabled: true,
method: 'token',
tokens: ['secure-token-here'],
users: [
{
username: 'admin',
password: 'hashed-password',
permissions: ['*'],
roles: ['admin'],
},
],
},
loadBalancer: {
enabled: true,
maxRequestsPerSecond: 100,
maxConcurrentRequests: 50,
},
sessionTimeout: 3600000, // 1 hour
maxSessions: 1000,
};
```
### Orchestration Config
```typescript
const orchestrationConfig: MCPOrchestrationConfig = {
enabledIntegrations: {
orchestrator: true,
swarm: true,
agents: true,
resources: true,
memory: true,
monitoring: true,
terminals: true,
},
autoStart: true,
healthCheckInterval: 30000,
reconnectAttempts: 3,
reconnectDelay: 5000,
enableMetrics: true,
enableAlerts: true,
};
```
## Monitoring and Alerting
### Performance Metrics
The performance monitor tracks:
- Request count and success rate
- Response time percentiles (P50, P95, P99)
- Throughput (requests per second)
- Memory and CPU usage
- Error rates by category
### Custom Alerts
```typescript
performanceMonitor.addAlertRule({
id: 'high_latency',
name: 'High Response Time',
metric: 'p95ResponseTime',
operator: 'gt',
threshold: 5000, // 5 seconds
duration: 60000, // 1 minute
enabled: true,
severity: 'high',
actions: ['log', 'notify', 'escalate'],
});
```
### Optimization Suggestions
The system automatically generates optimization suggestions based on:
- Response time patterns
- Memory usage trends
- Throughput bottlenecks
- Error rate analysis
## Security Features
### Authentication Methods
1. **Token Authentication**: Static or generated tokens
2. **Basic Authentication**: Username/password with bcrypt hashing
3. **OAuth**: JWT token validation (extensible)
### Authorization
- Permission-based access control
- Role-based authorization
- Tool-specific permissions
- Session-based authorization
### Security Measures
- Rate limiting with exponential backoff
- Brute force protection
- Token expiration and refresh
- Session timeout management
- Input validation and sanitization
## Error Handling
### Reconnection Logic
- Exponential backoff for failed connections
- Circuit breaker pattern for failing components
- Health check recovery
- Graceful degradation
### Error Recovery
- Automatic restart on critical failures
- State preservation during restarts
- Error categorization and handling
- Rollback capabilities
## Testing
Comprehensive test suite covering:
- Unit tests for all components
- Integration tests for cross-component interaction
- Performance benchmarks
- Security validation
- Protocol compliance testing
```bash
npm test src/mcp/tests/mcp-integration.test.ts
```
## Transport Implementations
### Stdio Transport (`transports/stdio.ts`)
For command-line and process-based communication:
- Standard input/output handling
- Process lifecycle management
- Error stream handling
### HTTP Transport (`transports/http.ts`)
For web-based communication:
- RESTful API endpoints
- WebSocket upgrade support
- CORS handling
- TLS/SSL support
### WebSocket Transport (Planned)
For real-time bidirectional communication:
- Connection management
- Message framing
- Reconnection handling
## Extension Points
### Custom Tools
Implement custom tools by providing:
- Tool definition with schema
- Handler function
- Capability information
- Permission requirements
### Custom Transports
Implement the `ITransport` interface:
- Request/response handling
- Connection management
- Health status reporting
### Custom Authentication
Extend the `AuthManager` class:
- Custom authentication methods
- Integration with external providers
- Custom permission models
## Best Practices
### Performance
- Use batch operations for multiple requests
- Implement proper caching strategies
- Monitor memory usage and clean up resources
- Use connection pooling for HTTP transport
### Security
- Always use HTTPS in production
- Implement proper token rotation
- Use strong password hashing (bcrypt)
- Monitor for suspicious activity
### Reliability
- Implement health checks for all components
- Use graceful shutdown procedures
- Monitor system resources
- Implement proper logging and alerting
### Scalability
- Use load balancing for high traffic
- Implement horizontal scaling strategies
- Monitor performance metrics
- Use asynchronous operations where possible
## Troubleshooting
### Common Issues
1. **Connection Failures**: Check network connectivity and firewall settings
2. **Authentication Errors**: Verify tokens and credentials
3. **Performance Issues**: Monitor metrics and check for bottlenecks
4. **Memory Leaks**: Review resource cleanup and garbage collection
### Debug Mode
Enable debug logging:
```typescript
const logger = createLogger({ level: 'debug' });
```
### Health Checks
Monitor component health:
```typescript
const health = await server.getHealthStatus();
console.log('Server healthy:', health.healthy);
console.log('Metrics:', health.metrics);
```
## Future Enhancements
- WebSocket transport implementation
- Advanced load balancing algorithms
- Machine learning-based optimization
- Enhanced security features (2FA, SSO)
- Distributed deployment support
- Real-time collaboration features
## API Reference
See the individual component files for detailed API documentation:
- [Server API](./server.ts)
- [Lifecycle Manager API](./lifecycle-manager.ts)
- [Tool Registry API](./tools.ts)
- [Protocol Manager API](./protocol-manager.ts)
- [Auth Manager API](./auth.ts)
- [Performance Monitor API](./performance-monitor.ts)
- [Orchestration Integration API](./orchestration-integration.ts)