UNPKG

controlai-mcp

Version:

High-Performance Enterprise AI Project Management MCP Server with advanced optimization and multi-agent coordination

136 lines (135 loc) 5.39 kB
/** * Advanced Analytics Tool for ControlAI MCP * Provides enterprise-grade analytics, metrics, and insights */ import { AdvancedAnalyticsService } from '../services/AdvancedAnalyticsService.js'; import { Logger } from '../utils/logger.js'; export const advancedAnalyticsTool = { name: 'get_advanced_analytics', description: 'Get comprehensive advanced analytics including project trends, agent performance, predictive insights, and custom metrics', inputSchema: { type: 'object', properties: { workspaceId: { type: 'string', description: 'Workspace ID to get analytics for' }, timeRange: { type: 'object', properties: { start: { type: 'string', description: 'Start date (ISO string)' }, end: { type: 'string', description: 'End date (ISO string)' } }, description: 'Time range for analytics (defaults to last 30 days)' }, metrics: { type: 'array', items: { type: 'string', enum: [ 'project_trends', 'agent_performance', 'task_analytics', 'productivity_metrics', 'collaboration_metrics', 'quality_metrics', 'predictive_insights', 'custom_metrics' ] }, description: 'Specific metrics to include (defaults to all)' }, filters: { type: 'object', properties: { projectIds: { type: 'array', items: { type: 'string' }, description: 'Filter by specific project IDs' }, agentTypes: { type: 'array', items: { type: 'string' }, description: 'Filter by agent types' }, priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'], description: 'Filter by priority level' } }, description: 'Optional filters to apply to analytics' }, aggregation: { type: 'string', enum: ['daily', 'weekly', 'monthly'], description: 'Data aggregation level (defaults to weekly)' } }, required: ['workspaceId'], }, }; export async function handleAdvancedAnalytics(args, databaseService, aiService) { try { Logger.info('Processing advanced analytics request', { workspaceId: args.workspaceId, metrics: args.metrics, timeRange: args.timeRange }); const analyticsService = new AdvancedAnalyticsService(databaseService, aiService); // Set default time range if not provided const now = new Date(); const defaultStart = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000); // 30 days ago const timeRange = args.timeRange ? { start: new Date(args.timeRange.start), end: new Date(args.timeRange.end) } : { start: defaultStart, end: now }; // Get comprehensive analytics const analytics = await analyticsService.getAdvancedAnalytics(timeRange); Logger.info('Advanced analytics generated successfully', { workspaceId: args.workspaceId, dataPoints: analytics.projectTrends?.length || 0, agentMetrics: analytics.agentPerformanceMetrics?.length || 0 }); return { content: [ { type: 'text', text: JSON.stringify({ success: true, data: analytics, metadata: { workspaceId: args.workspaceId, timeRange, generatedAt: new Date().toISOString(), dataPoints: { projectTrends: analytics.projectTrends?.length || 0, agentMetrics: analytics.agentPerformanceMetrics?.length || 0, resourceMetrics: analytics.resourceUtilization ? 1 : 0, predictiveInsights: analytics.predictiveInsights?.length || 0 } } }, null, 2) } ] }; } catch (error) { Logger.error('Failed to generate advanced analytics', error); return { content: [ { type: 'text', text: JSON.stringify({ success: false, error: 'Failed to generate advanced analytics', details: error instanceof Error ? error.message : 'Unknown error' }, null, 2) } ] }; } }