Skip to 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

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.

Released under the MIT License.