Skip to main content
Glama
sascodiego

MCP Vibe Coding Knowledge Graph

by sascodiego
index.js8.39 kB
/** * CONTEXT: Comprehensive MCP input validation and sanitization system exports * REASON: Centralized export for all validation components * CHANGE: Single import point for validation system components * PREVENTION: Import inconsistencies and missing dependencies */ export { MCPInputValidator } from './MCPInputValidator.js'; export { ValidationMiddleware, ValidationError } from './ValidationMiddleware.js'; export { AdvancedValidators } from './AdvancedValidators.js'; export { PerformanceOptimizer } from './PerformanceOptimizer.js'; export { ValidationMonitor } from './ValidationMonitor.js'; /** * Validation system factory for easy initialization */ export class ValidationSystem { constructor(config = {}) { this.config = config; this.components = {}; // Initialize components this.initializeComponents(); } initializeComponents() { // Core validator this.components.inputValidator = new MCPInputValidator(this.config.inputValidator); // Advanced validators this.components.advancedValidators = new AdvancedValidators(this.config.advancedValidators); // Performance optimizer this.components.performanceOptimizer = new PerformanceOptimizer(this.config.performance); // Monitoring system this.components.monitor = new ValidationMonitor(this.config.monitoring); // Middleware (initialized with all components) this.components.middleware = new ValidationMiddleware({ ...this.config.middleware, validatorConfig: this.config.inputValidator, performanceOptimizer: this.components.performanceOptimizer, monitor: this.components.monitor }); // Setup inter-component communication this.setupComponentIntegration(); } setupComponentIntegration() { // Integrate performance optimizer with middleware const originalWrap = this.components.middleware.wrap.bind(this.components.middleware); this.components.middleware.wrap = (handler, toolName, options = {}) => { const wrappedHandler = originalWrap(handler, toolName, options); return async (args, context = {}) => { const startTime = Date.now(); try { // Use performance optimizer for validation const result = await this.components.performanceOptimizer.optimizeValidation( toolName, async (optimizedArgs) => wrappedHandler(optimizedArgs, context), args, { ...options, context } ); const responseTime = Date.now() - startTime; // Record performance event this.components.monitor.recordPerformanceEvent(toolName, { responseTime, memoryUsage: process.memoryUsage().heapUsed, cacheHit: false // This would be determined by the optimizer }); return result; } catch (error) { const responseTime = Date.now() - startTime; // Record validation event with error this.components.monitor.recordValidationEvent(toolName, { errors: [error.message], warnings: [], responseTime, success: false }); throw error; } }; }; // Integrate monitor with input validator const originalValidate = this.components.inputValidator.validateToolInput.bind(this.components.inputValidator); this.components.inputValidator.validateToolInput = async (toolName, args, clientInfo = {}) => { const startTime = Date.now(); try { const result = await originalValidate(toolName, args, clientInfo); const responseTime = Date.now() - startTime; // Record validation event this.components.monitor.recordValidationEvent(toolName, { ...result, responseTime, success: result.isValid }); // Record security events if threats detected if (result.metadata && result.metadata.riskLevel && ['HIGH', 'CRITICAL'].includes(result.metadata.riskLevel)) { this.components.monitor.recordSecurityEvent(toolName, { threatLevel: result.metadata.riskLevel, detectedThreats: result.errors || [], blocked: !result.isValid }); } return result; } catch (error) { const responseTime = Date.now() - startTime; // Record failed validation this.components.monitor.recordValidationEvent(toolName, { errors: [error.message], warnings: [], responseTime, success: false }); throw error; } }; } /** * Get all validation components */ getComponents() { return this.components; } /** * Get validation middleware (most commonly used) */ getMiddleware() { return this.components.middleware; } /** * Get monitoring system */ getMonitor() { return this.components.monitor; } /** * Get comprehensive system statistics */ getSystemStatistics() { return { inputValidator: this.components.inputValidator.getStatistics(), middleware: this.components.middleware.getStatistics(), performanceOptimizer: this.components.performanceOptimizer.getStatistics(), advancedValidators: this.components.advancedValidators.getStatistics(), monitor: this.components.monitor.getMonitoringStatus() }; } /** * Generate comprehensive system health report */ getSystemHealth() { const middlewareHealth = this.components.middleware.getHealthStatus(); const monitoringStatus = this.components.monitor.getMonitoringStatus(); let overallStatus = 'healthy'; const issues = []; const recommendations = []; // Check middleware health if (middlewareHealth.status === 'unhealthy') { overallStatus = 'unhealthy'; issues.push('Validation middleware unhealthy'); recommendations.push(...middlewareHealth.recommendations); } else if (middlewareHealth.status === 'degraded') { if (overallStatus === 'healthy') overallStatus = 'degraded'; issues.push('Validation middleware degraded'); recommendations.push(...middlewareHealth.recommendations); } // Check monitoring status if (!monitoringStatus.isEnabled) { if (overallStatus === 'healthy') overallStatus = 'degraded'; issues.push('Real-time monitoring disabled'); recommendations.push({ type: 'monitoring', message: 'Enable real-time monitoring for better observability', priority: 'medium' }); } return { status: overallStatus, issues, recommendations, components: { middleware: middlewareHealth, monitoring: monitoringStatus }, statistics: this.getSystemStatistics() }; } /** * Update system configuration */ updateConfig(newConfig) { this.config = { ...this.config, ...newConfig }; // Update component configurations if (newConfig.inputValidator) { this.components.inputValidator.updateConfig(newConfig.inputValidator); } if (newConfig.middleware) { this.components.middleware.updateConfig(newConfig.middleware); } if (newConfig.performance) { this.components.performanceOptimizer.updateConfig(newConfig.performance); } } /** * Reset all system statistics */ resetStatistics() { this.components.inputValidator.resetStatistics(); this.components.middleware.resetStatistics(); // Performance optimizer has its own cleanup schedule // Monitor has its own reset schedule } /** * Export system configuration and statistics */ exportSystemData() { return { configuration: this.config, statistics: this.getSystemStatistics(), health: this.getSystemHealth(), monitoringData: this.components.monitor.exportMonitoringData() }; } } export default ValidationSystem;

Latest Blog Posts

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/sascodiego/KGsMCP'

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