Skip to main content
Glama

mcp-adr-analysis-server

by tosin2013
knowledge-generation-usage-guide.md9.29 kB
# Knowledge Generation Framework - Usage Guide ## Overview The Knowledge Generation framework enhances MCP tools by generating domain-specific architectural knowledge before making decisions. This guide provides practical examples and integration patterns for tool developers. ## Quick Start ### Basic Knowledge Generation ```typescript import { generateArchitecturalKnowledge } from '../utils/knowledge-generation.js'; // Generate knowledge for web applications const result = await generateArchitecturalKnowledge( { projectPath: './my-project', technologies: ['React', 'TypeScript', 'Node.js'] }, { domains: ['web-applications', 'api-design'], depth: 'intermediate', cacheEnabled: true } ); // Use the enhanced prompt const enhancedPrompt = result.enhancedPrompt; ``` ### Integration with Existing Tools ```typescript // In suggest_adrs tool export async function generateAdrSuggestions(context: any) { // Step 1: Generate domain knowledge const knowledgeResult = await generateArchitecturalKnowledge( context.architecturalContext, { domains: ['web-applications', 'microservices'], depth: 'advanced', cacheEnabled: true, cacheTTL: 3600 } ); // Step 2: Combine with original prompt const originalPrompt = createAdrSuggestionPrompt(context); const enhancedPrompt = combinePrompts( knowledgeResult.knowledgePrompt, originalPrompt ); // Step 3: Return enhanced prompt for AI execution return { content: [{ type: 'text', text: enhancedPrompt.prompt }] }; } ``` ## Configuration Options ### Knowledge Generation Config ```typescript interface KnowledgeGenerationConfig { domains?: ArchitecturalDomain[]; // Target domains depth?: 'basic' | 'intermediate' | 'advanced'; // Knowledge depth cacheEnabled?: boolean; // Enable caching cacheTTL?: number; // Cache time-to-live (seconds) securityValidation?: boolean; // Enable security checks maxKnowledgeItems?: number; // Limit knowledge items relevanceThreshold?: number; // Minimum relevance (0-1) parallelGeneration?: boolean; // Generate domains in parallel } ``` ### Tool-Specific Configuration ```typescript interface ToolKnowledgeConfig { enableKnowledgeGeneration: boolean; domains: ArchitecturalDomain[]; knowledgeDepth: 'basic' | 'intermediate' | 'advanced'; cacheStrategy: 'aggressive' | 'moderate' | 'minimal'; autoDetectDomains?: boolean; customKnowledgeTemplates?: string[]; } ``` ## Domain Detection ### Automatic Domain Detection ```typescript import { detectArchitecturalDomains } from '../utils/knowledge-generation.js'; const projectContext = { path: './project', technologies: ['React', 'Express', 'PostgreSQL'], fileTypes: ['.tsx', '.ts', '.sql'], packageFiles: ['package.json'], configFiles: ['webpack.config.js', 'tsconfig.json'] }; const detectionResult = await detectArchitecturalDomains(projectContext); // Returns: ['web-applications', 'api-design', 'database-design'] ``` ### Manual Domain Selection ```typescript const manualDomains: ArchitecturalDomain[] = [ 'microservices', 'cloud-infrastructure', 'security-patterns' ]; const knowledgeResult = await generateArchitecturalKnowledge( context, { domains: manualDomains } ); ``` ## Integration Patterns ### Pattern 1: Knowledge-Enhanced ADR Suggestions ```typescript // 1. Detect project domains const domains = await detectArchitecturalDomains(projectContext); // 2. Generate domain knowledge const knowledge = await generateArchitecturalKnowledge( { projectContext, existingAdrs }, { domains, depth: 'intermediate' } ); // 3. Create enhanced ADR suggestion prompt const adrPrompt = createAdrSuggestionPrompt(context); const enhancedPrompt = combinePrompts(knowledge.knowledgePrompt, adrPrompt); // 4. Return for AI execution return { content: [{ type: 'text', text: enhancedPrompt.prompt }] }; ``` ### Pattern 2: Context-Aware Analysis ```typescript // 1. Analyze project ecosystem const ecosystemAnalysis = await analyzeProjectEcosystem(projectPath); // 2. Generate relevant knowledge based on detected technologies const relevantDomains = mapTechnologiesToDomains(ecosystemAnalysis.technologies); const knowledge = await generateArchitecturalKnowledge( { technologies: ecosystemAnalysis.technologies }, { domains: relevantDomains, depth: 'advanced' } ); // 3. Enhance analysis with domain knowledge const analysisPrompt = createEcosystemAnalysisPrompt(ecosystemAnalysis); const enhancedAnalysis = combinePrompts(knowledge.knowledgePrompt, analysisPrompt); ``` ### Pattern 3: Knowledge-Driven Research Questions ```typescript // 1. Generate domain knowledge to identify gaps const knowledge = await generateArchitecturalKnowledge( projectContext, { domains: ['web-applications', 'performance-optimization'] } ); // 2. Create research questions based on knowledge gaps const researchPrompt = createResearchQuestionPrompt( knowledge.domainKnowledge, projectContext ); // 3. Combine for comprehensive research planning const enhancedResearch = combinePrompts(knowledge.knowledgePrompt, researchPrompt); ``` ## Caching Strategies ### Cache Configuration ```typescript // Aggressive caching (best for stable knowledge) const aggressiveConfig = { cacheEnabled: true, cacheTTL: 86400, // 24 hours cacheStrategy: 'aggressive' }; // Moderate caching (balanced approach) const moderateConfig = { cacheEnabled: true, cacheTTL: 3600, // 1 hour cacheStrategy: 'moderate' }; // Minimal caching (for dynamic knowledge) const minimalConfig = { cacheEnabled: true, cacheTTL: 300, // 5 minutes cacheStrategy: 'minimal' }; ``` ### Cache Key Strategies ```typescript // Domain-based caching const domainCacheKey = `knowledge:${domains.join('+')}-${depth}`; // Context-aware caching const contextCacheKey = `knowledge:${hashContext(context)}-${domains.join('+')}`; // Project-specific caching const projectCacheKey = `knowledge:${projectId}-${domains.join('+')}-${version}`; ``` ## Security and Validation ### Security Configuration ```typescript const secureConfig = { securityValidation: true, relevanceThreshold: 0.7, // Only high-relevance knowledge maxKnowledgeItems: 50, // Limit knowledge volume customTemplates: [] // No custom templates for security }; ``` ### Validation Checks ```typescript // Validate generated knowledge const validationResult = await validateKnowledgeGeneration(knowledgeResult); if (!validationResult.isValid) { console.warn('Knowledge validation failed:', validationResult.issues); // Fallback to basic knowledge or skip enhancement } ``` ## Performance Optimization ### Parallel Generation ```typescript const config = { parallelGeneration: true, maxConcurrentDomains: 3, timeoutPerDomain: 5000 // 5 seconds }; ``` ### Memory Management ```typescript const performanceConfig = { maxKnowledgeItems: 100, relevanceThreshold: 0.6, compressionEnabled: true, memoryLimit: 50 * 1024 * 1024 // 50MB }; ``` ## Error Handling ### Graceful Degradation ```typescript try { const knowledge = await generateArchitecturalKnowledge(context, config); return enhancePromptWithKnowledge(originalPrompt, knowledge); } catch (error) { console.warn('Knowledge generation failed, using original prompt:', error); return originalPrompt; // Fallback to original functionality } ``` ### Retry Strategies ```typescript const retryConfig = { maxRetries: 3, retryDelay: 1000, exponentialBackoff: true, fallbackToCache: true }; ``` ## Monitoring and Metrics ### Performance Tracking ```typescript const metrics = await getKnowledgePerformanceMetrics(); console.log('Knowledge Generation Metrics:', { averageGenerationTime: metrics.generationTime, cacheHitRate: metrics.cacheHitRate, averageQuality: metrics.averageKnowledgeQuality, errorRate: metrics.errorRate }); ``` ### Quality Assessment ```typescript const qualityMetrics = await assessKnowledgeQuality(knowledgeResult); if (qualityMetrics.overallScore < 0.7) { // Consider regenerating or using different domains } ``` ## Best Practices ### 1. Domain Selection - Use automatic domain detection when possible - Combine related domains for comprehensive knowledge - Avoid too many domains to prevent information overload ### 2. Caching Strategy - Use aggressive caching for stable architectural principles - Use moderate caching for technology-specific knowledge - Use minimal caching for project-specific contexts ### 3. Integration Approach - Always provide fallback to original functionality - Validate knowledge quality before integration - Monitor performance impact on tool response times ### 4. Security Considerations - Enable security validation for production use - Set appropriate relevance thresholds - Limit knowledge volume to prevent prompt injection ### 5. Performance Optimization - Use parallel generation for multiple domains - Implement proper error handling and timeouts - Monitor memory usage and cache efficiency This framework provides a solid foundation for enhancing MCP tools with domain-specific architectural knowledge while maintaining performance, security, and reliability standards.

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/tosin2013/mcp-adr-analysis-server'

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