Skip to main content
Glama

Orchestrator MCP

analyzer.ts•2.86 kB
/** * Main quality analyzer */ import type { QualityAssessment } from './types.js'; import { analyzeFileStructure, analyzeSecurityIssues, analyzeMaintainability } from './analyzers.js'; import { calculateTestabilityScore, calculateOverallScore, calculateTestCoverage, calculateTechnicalDebt } from './metrics.js'; import { generateQualityRecommendations } from './suggestions.js'; import { createLogger } from '../../utils/logging.js'; const logger = createLogger('quality-analyzer'); /** * Assess code quality across multiple dimensions */ export async function assessCodeQuality(filePaths: string[]): Promise<QualityAssessment> { logger.info(`Assessing code quality for ${filePaths.length} files`); try { // Initialize assessment const assessment: QualityAssessment = { overallScore: 0, categories: { maintainability: 0, readability: 0, testability: 0, performance: 0, security: 0, }, issues: [], metrics: { cyclomaticComplexity: 0, codeDuplication: 0, testCoverage: 0, technicalDebt: 0, }, recommendations: [], }; // Analyze file structure and complexity const structureAnalysis = await analyzeFileStructure(filePaths); // Run security analysis (would use Semgrep MCP server) const securityAnalysis = await analyzeSecurityIssues(filePaths); // Analyze code patterns and maintainability const maintainabilityAnalysis = await analyzeMaintainability(filePaths); // Calculate scores and combine results assessment.categories.maintainability = maintainabilityAnalysis.score; assessment.categories.security = securityAnalysis.score; assessment.categories.readability = structureAnalysis.readabilityScore; assessment.categories.testability = calculateTestabilityScore(filePaths); assessment.categories.performance = 75; // Placeholder // Calculate overall score assessment.overallScore = calculateOverallScore(assessment.categories); // Combine issues assessment.issues = [ ...structureAnalysis.issues, ...securityAnalysis.issues, ...maintainabilityAnalysis.issues, ]; // Generate recommendations assessment.recommendations = generateQualityRecommendations(assessment); // Update metrics assessment.metrics = { cyclomaticComplexity: structureAnalysis.complexity, codeDuplication: maintainabilityAnalysis.duplication, testCoverage: calculateTestCoverage(filePaths), technicalDebt: calculateTechnicalDebt(assessment), }; logger.info(`Quality assessment completed with overall score: ${assessment.overallScore}`); return assessment; } catch (error) { logger.error('Failed to assess code quality:', error as Error); throw error; } }

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/Phoenixrr2113/Orchestrator-MCP'

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