Skip to main content

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โ€‹

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โ€‹

// 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โ€‹

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โ€‹

interface ToolKnowledgeConfig {
enableKnowledgeGeneration: boolean;
domains: ArchitecturalDomain[];
knowledgeDepth: 'basic' | 'intermediate' | 'advanced';
cacheStrategy: 'aggressive' | 'moderate' | 'minimal';
autoDetectDomains?: boolean;
customKnowledgeTemplates?: string[];
}

Domain Detectionโ€‹

Automatic Domain Detectionโ€‹

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โ€‹

const manualDomains: ArchitecturalDomain[] = [
'microservices',
'cloud-infrastructure',
'security-patterns'
];

const knowledgeResult = await generateArchitecturalKnowledge(
context,
{ domains: manualDomains }
);

Integration Patternsโ€‹

Pattern 1: Knowledge-Enhanced ADR Suggestionsโ€‹

// 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โ€‹

// 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โ€‹

// 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โ€‹

// 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โ€‹

// 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โ€‹

const secureConfig = {
securityValidation: true,
relevanceThreshold: 0.7, // Only high-relevance knowledge
maxKnowledgeItems: 50, // Limit knowledge volume
customTemplates: [] // No custom templates for security
};

Validation Checksโ€‹

// 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โ€‹

const config = {
parallelGeneration: true,
maxConcurrentDomains: 3,
timeoutPerDomain: 5000 // 5 seconds
};

Memory Managementโ€‹

const performanceConfig = {
maxKnowledgeItems: 100,
relevanceThreshold: 0.6,
compressionEnabled: true,
memoryLimit: 50 * 1024 * 1024 // 50MB
};

Error Handlingโ€‹

Graceful Degradationโ€‹

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โ€‹

const retryConfig = {
maxRetries: 3,
retryDelay: 1000,
exponentialBackoff: true,
fallbackToCache: true
};

Monitoring and Metricsโ€‹

Performance Trackingโ€‹

const metrics = await getKnowledgePerformanceMetrics();
console.log('Knowledge Generation Metrics:', {
averageGenerationTime: metrics.generationTime,
cacheHitRate: metrics.cacheHitRate,
averageQuality: metrics.averageKnowledgeQuality,
errorRate: metrics.errorRate
});

Quality Assessmentโ€‹

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.