mcp-context-engineering
Version:
The intelligent context optimization system for AI coding assistants. Built with Cole's PRP methodology, Context Portal knowledge graphs, and production-ready MongoDB architecture.
1,168 lines (1,020 loc) ⢠45.7 kB
text/typescript
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
Tool,
} from '@modelcontextprotocol/sdk/types.js';
import { z } from 'zod';
import { PRPGenerator, PRPGenerationRequest } from '../context/methodology/PRPGenerator.js';
import { ResearchEngine } from '../context/ResearchEngine.js';
import { getConnectionManager } from '../mongodb/operations/connection.js';
import { ContextPatternOperations } from '../mongodb/operations/contextPatternOperations.js';
import { UniversalContextPattern } from '../mongodb/models/contextPattern.js';
import { env, mongoConfig } from '../config/environment.js';
/**
* Universal Context Engineering MCP Server
*
* Perfect harmony: MongoDB (memory) ā MCP (interface) ā AI Agent (execution)
*
* This server provides AI coding agents with:
* 1. Intelligent planning templates (Cole's PRP methodology)
* 2. Memory of successful patterns (MongoDB effectiveness tracking)
* 3. Universal agent optimization (Cursor, Windsurf, Claude Code support)
* 4. Knowledge graph integration (Context Portal patterns)
*/
export class UniversalContextEngineeringServer {
private server: Server;
private prpGenerator!: PRPGenerator;
private researchEngine!: ResearchEngine;
private mongoManager: any;
private contextPatternOps!: ContextPatternOperations;
constructor() {
this.server = new Server(
{
name: env.MCP_SERVER_NAME,
version: env.MCP_SERVER_VERSION,
},
{
capabilities: {
tools: {},
},
}
);
this.setupEventHandlers();
}
async initialize() {
await this.initializeEngines();
}
private async initializeEngines() {
// Initialize MongoDB connection using environment configuration
this.mongoManager = getConnectionManager(mongoConfig);
await this.mongoManager.connect();
// Initialize operations layer
this.contextPatternOps = new ContextPatternOperations(this.mongoManager);
// Initialize engines
this.researchEngine = new ResearchEngine();
this.prpGenerator = new PRPGenerator(
this.researchEngine,
this.contextPatternOps, // MongoDB operations
null // Embedding service - will be implemented
);
console.log('ā
All engines initialized successfully');
}
private setupEventHandlers() {
// List available tools
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: 'generate_universal_prp',
description: 'Generate intelligent Product Requirements Prompt using Cole\'s methodology with Context Portal knowledge graphs, optimized for any AI coding agent (Cursor, Windsurf, Claude Code)',
inputSchema: {
type: 'object',
properties: {
feature_description: {
type: 'string',
description: 'Clear description of the feature to implement'
},
project_context: {
type: 'object',
properties: {
project_id: {
type: 'string',
description: 'Unique project identifier'
},
tech_stack: {
type: 'array',
items: { type: 'string' },
description: 'Technology stack used in the project'
},
current_patterns: {
type: 'array',
items: { type: 'string' },
description: 'Existing patterns in the codebase (optional)'
},
complexity_preference: {
type: 'string',
enum: ['low', 'medium', 'high'],
description: 'Preferred complexity level for the implementation'
}
},
required: ['project_id', 'tech_stack']
},
agent_type: {
type: 'string',
enum: ['cursor', 'windsurf', 'claude_code', 'generic'],
description: 'Target AI coding agent for optimization'
},
research_depth: {
type: 'string',
enum: ['basic', 'comprehensive', 'exhaustive'],
description: 'Depth of research to conduct'
},
include_learning: {
type: 'boolean',
description: 'Include learnings from similar successful patterns'
}
},
required: ['feature_description', 'project_context']
}
},
{
name: 'get_universal_context',
description: 'Retrieve project context and successful patterns from memory, optimized for specific AI agent',
inputSchema: {
type: 'object',
properties: {
project_id: {
type: 'string',
description: 'Project identifier'
},
agent_type: {
type: 'string',
enum: ['cursor', 'windsurf', 'claude_code', 'generic'],
description: 'AI agent requesting context'
},
query: {
type: 'string',
description: 'Search query for relevant patterns (optional)'
},
pattern_types: {
type: 'array',
items: { type: 'string' },
description: 'Filter by specific pattern types (optional)'
},
min_effectiveness: {
type: 'number',
minimum: 0,
maximum: 10,
description: 'Minimum effectiveness score for patterns'
}
},
required: ['project_id']
}
},
{
name: 'update_pattern_effectiveness',
description: 'Update effectiveness metrics for a pattern based on implementation results (learning system)',
inputSchema: {
type: 'object',
properties: {
pattern_id: {
type: 'string',
description: 'ID of the context pattern used'
},
agent_type: {
type: 'string',
enum: ['cursor', 'windsurf', 'claude_code', 'generic'],
description: 'AI agent that used the pattern'
},
implementation_result: {
type: 'object',
properties: {
success: { type: 'boolean' },
quality_score: { type: 'number', minimum: 0, maximum: 10 },
time_to_completion: { type: 'number' },
iterations_required: { type: 'number' },
user_satisfaction: { type: 'number', minimum: 0, maximum: 10 }
},
required: ['success', 'quality_score', 'iterations_required']
},
feedback: {
type: 'object',
properties: {
what_worked: { type: 'array', items: { type: 'string' } },
what_failed: { type: 'array', items: { type: 'string' } },
missing_information: { type: 'array', items: { type: 'string' } },
suggestions: { type: 'array', items: { type: 'string' } }
}
}
},
required: ['pattern_id', 'agent_type', 'implementation_result']
}
},
{
name: 'store_context_pattern',
description: 'Store a new context pattern with knowledge graph connections for future use',
inputSchema: {
type: 'object',
properties: {
pattern: {
type: 'object',
description: 'Complete UniversalContextPattern object'
},
project_id: {
type: 'string',
description: 'Associated project ID'
}
},
required: ['pattern', 'project_id']
}
},
{
name: 'search_similar_patterns',
description: 'Find similar successful patterns using hybrid search (embeddings + metadata)',
inputSchema: {
type: 'object',
properties: {
query: {
type: 'string',
description: 'Natural language description of what you\'re looking for'
},
filters: {
type: 'object',
properties: {
tech_stacks: { type: 'array', items: { type: 'string' } },
pattern_types: { type: 'array', items: { type: 'string' } },
complexity: { type: 'string', enum: ['low', 'medium', 'high'] },
min_effectiveness: { type: 'number', minimum: 0, maximum: 10 }
}
},
agent_type: {
type: 'string',
enum: ['cursor', 'windsurf', 'claude_code', 'generic'],
description: 'Optimize results for specific agent'
},
limit: {
type: 'number',
minimum: 1,
maximum: 50,
description: 'Maximum number of results to return'
}
},
required: ['query']
}
},
{
name: 'get_cross_agent_insights',
description: 'Get insights about what works best across different AI agents for knowledge sharing',
inputSchema: {
type: 'object',
properties: {
pattern_type: {
type: 'string',
description: 'Specific pattern type to analyze (optional)'
},
tech_stack: {
type: 'array',
items: { type: 'string' },
description: 'Filter by technology stack (optional)'
},
time_range: {
type: 'string',
enum: ['week', 'month', 'quarter', 'all'],
description: 'Time range for analysis'
}
}
}
}
]
};
});
// Handle tool calls
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
try {
switch (name) {
case 'generate_universal_prp':
return await this.handleGenerateUniversalPRP(args);
case 'get_universal_context':
return await this.handleGetUniversalContext(args);
case 'update_pattern_effectiveness':
return await this.handleUpdatePatternEffectiveness(args);
case 'store_context_pattern':
return await this.handleStoreContextPattern(args);
case 'search_similar_patterns':
return await this.handleSearchSimilarPatterns(args);
case 'get_cross_agent_insights':
return await this.handleGetCrossAgentInsights(args);
default:
throw new Error(`Unknown tool: ${name}`);
}
} catch (error) {
return {
content: [
{
type: 'text',
text: `Error: ${error instanceof Error ? error.message : 'Unknown error'}`
}
],
isError: true
};
}
});
}
/**
* Generate Universal PRP - Core functionality
* Perfect harmony between Cole's methodology, Context Portal knowledge graphs, and agent optimization
*/
private async handleGenerateUniversalPRP(args: any) {
try {
// Validate input arguments
const prpGenerationSchema = z.object({
feature_description: z.string().min(10, 'Feature description must be at least 10 characters'),
project_context: z.object({
project_id: z.string().min(1, 'Project ID is required'),
tech_stack: z.array(z.string()).min(1, 'At least one technology must be specified'),
current_patterns: z.array(z.string()).optional(),
complexity_preference: z.enum(['low', 'medium', 'high']).optional()
}),
agent_type: z.enum(['cursor', 'windsurf', 'claude_code', 'generic']).optional(),
research_depth: z.enum(['basic', 'comprehensive', 'exhaustive']).optional(),
include_learning: z.boolean().optional()
});
const validatedArgs = prpGenerationSchema.parse(args);
const request: PRPGenerationRequest = {
feature_description: validatedArgs.feature_description,
project_context: {
project_id: validatedArgs.project_context.project_id,
current_patterns: validatedArgs.project_context.current_patterns || [],
tech_stack: validatedArgs.project_context.tech_stack,
complexity_preference: validatedArgs.project_context.complexity_preference || 'medium'
},
agent_type: validatedArgs.agent_type || 'generic',
research_depth: validatedArgs.research_depth || 'comprehensive',
include_learning: validatedArgs.include_learning !== false
};
console.log(`šÆ Generating PRP for: ${request.feature_description}`);
console.log(`š Agent: ${request.agent_type}, Depth: ${request.research_depth}`);
const result = await this.prpGenerator.generatePRP(request);
// Store the generated pattern for future learning
if (result.context_pattern) {
const storeResult = await this.contextPatternOps.createPattern(result.context_pattern as any);
if (storeResult.success) {
console.log(`š¾ Pattern stored with ID: ${storeResult.patternId}`);
}
}
// Format for the specific agent type
const formattedOutput = this.formatPRPForAgent(result.prp_template, request.agent_type);
// Add generation metadata
const metadata = `
---
š¤ **Generated by Universal Context Engineering**
⢠Confidence: ${result.agent_optimization.implementation_confidence}/1
⢠Agent Optimization: ${request.agent_type}
⢠Research Depth: ${request.research_depth}
---
`;
return {
content: [
{
type: 'text',
text: metadata + formattedOutput
}
]
};
} catch (error) {
console.error('Error in handleGenerateUniversalPRP:', error);
if (error instanceof z.ZodError) {
return {
content: [
{
type: 'text',
text: `ā Invalid request parameters:\n${error.errors.map(err => `⢠${err.path.join('.')}: ${err.message}`).join('\n')}`
}
],
isError: true
};
}
return {
content: [
{
type: 'text',
text: `ā Error generating PRP: ${error instanceof Error ? error.message : 'Unknown error'}`
}
],
isError: true
};
}
}
/**
* Get Universal Context - Retrieve optimized context for specific agent
*/
private async handleGetUniversalContext(args: any) {
try {
// Validate input arguments
const contextSchema = z.object({
project_id: z.string().min(1, 'Project ID is required'),
agent_type: z.enum(['cursor', 'windsurf', 'claude_code', 'generic']).optional(),
query: z.string().optional(),
pattern_types: z.array(z.string()).optional(),
min_effectiveness: z.number().min(0).max(10).optional()
});
const validatedArgs = contextSchema.parse(args);
console.log(`š Retrieving context for project: ${validatedArgs.project_id}`);
// Search for relevant patterns
const searchResult = await this.contextPatternOps.searchPatterns({
query: validatedArgs.query,
filters: {
pattern_type: validatedArgs.pattern_types?.[0],
min_effectiveness: validatedArgs.min_effectiveness || 5,
agent_type: validatedArgs.agent_type || 'generic'
},
limit: 10,
sort: { field: 'effectiveness_metrics.overall_success_rate', direction: -1 }
});
if (!searchResult.success) {
throw new Error(searchResult.error || 'Failed to search patterns');
}
const patterns = searchResult.patterns || [];
const agentType = validatedArgs.agent_type || 'generic';
// Format context for the specific agent
let contextOutput = `# šÆ Universal Context for ${validatedArgs.project_id}\n\n`;
contextOutput += `**Optimized for:** ${agentType} agent\n`;
contextOutput += `**Patterns Found:** ${patterns.length}\n`;
contextOutput += `**Total Available:** ${searchResult.total || 0}\n\n`;
if (patterns.length === 0) {
contextOutput += `## š No Existing Patterns Found\n\n`;
contextOutput += `This appears to be a new project or feature area. Consider:\n`;
contextOutput += `⢠Generate a new PRP using \`generate_universal_prp\`\n`;
contextOutput += `⢠Store successful patterns with \`store_context_pattern\`\n`;
contextOutput += `⢠Build up your project's context knowledge base\n\n`;
} else {
contextOutput += `## š§ Relevant Context Patterns\n\n`;
patterns.slice(0, 5).forEach((pattern, index) => {
const effectiveness = (pattern.effectiveness_metrics.overall_success_rate * 100).toFixed(1);
const agentScore = pattern.agent_optimizations[agentType]?.effectiveness_score || 'N/A';
contextOutput += `### ${index + 1}. ${pattern.prp_methodology.implementation.goal}\n`;
contextOutput += `⢠**Type:** ${pattern.metadata.pattern_type}\n`;
contextOutput += `⢠**Complexity:** ${pattern.metadata.complexity}\n`;
contextOutput += `⢠**Tech Stack:** ${pattern.metadata.tech_stacks.join(', ')}\n`;
contextOutput += `⢠**Overall Effectiveness:** ${effectiveness}%\n`;
contextOutput += `⢠**${agentType} Score:** ${agentScore}/10\n`;
contextOutput += `⢠**Usage Count:** ${pattern.effectiveness_metrics.usage_count}\n\n`;
// Add key insights for this agent type
if (agentType === 'cursor') {
contextOutput += `**Cursor Insights:**\n`;
contextOutput += `⢠Focus: ${pattern.agent_optimizations.cursor.focus.join(', ')}\n`;
contextOutput += `⢠Avoid: ${pattern.agent_optimizations.cursor.avoid_patterns.join(', ')}\n\n`;
} else if (agentType === 'windsurf') {
contextOutput += `**Windsurf Insights:**\n`;
contextOutput += `⢠Format: ${pattern.agent_optimizations.windsurf.format}\n`;
contextOutput += `⢠Focus Areas: ${pattern.agent_optimizations.windsurf.focus.join(', ')}\n\n`;
} else if (agentType === 'claude_code') {
contextOutput += `**Claude Code Insights:**\n`;
contextOutput += `⢠Format: ${pattern.agent_optimizations.claude_code.format}\n`;
contextOutput += `⢠Research Depth: ${pattern.agent_optimizations.claude_code.focus.join(', ')}\n\n`;
}
});
// Add learning insights
contextOutput += `## š Learning Insights\n\n`;
const avgEffectiveness = patterns.reduce((sum, p) => sum + p.effectiveness_metrics.overall_success_rate, 0) / patterns.length;
contextOutput += `⢠**Average Success Rate:** ${(avgEffectiveness * 100).toFixed(1)}%\n`;
contextOutput += `⢠**Most Common Tech Stack:** ${this.getMostCommonTechStack(patterns)}\n`;
contextOutput += `⢠**Recommended Complexity:** ${this.getRecommendedComplexity(patterns)}\n\n`;
}
contextOutput += `---\nš¤ *Generated by Universal Context Engineering*`;
return {
content: [
{
type: 'text',
text: contextOutput
}
]
};
} catch (error) {
console.error('Error in handleGetUniversalContext:', error);
return {
content: [
{
type: 'text',
text: `ā Error retrieving context: ${error instanceof Error ? error.message : 'Unknown error'}`
}
],
isError: true
};
}
}
/**
* Update Pattern Effectiveness - Learning system feedback loop
*/
private async handleUpdatePatternEffectiveness(args: any) {
try {
// Validate input arguments
const effectivenessSchema = z.object({
pattern_id: z.string().min(1, 'Pattern ID is required'),
agent_type: z.enum(['cursor', 'windsurf', 'claude_code', 'generic']),
implementation_result: z.object({
success: z.boolean(),
quality_score: z.number().min(0).max(10),
iterations_required: z.number().min(1),
user_satisfaction: z.number().min(0).max(10).optional()
}),
feedback: z.object({
what_worked: z.array(z.string()).optional(),
what_failed: z.array(z.string()).optional(),
missing_information: z.array(z.string()).optional(),
suggestions: z.array(z.string()).optional()
}).optional()
});
const validatedArgs = effectivenessSchema.parse(args);
console.log(`š Updating effectiveness for pattern: ${validatedArgs.pattern_id}`);
// Update effectiveness metrics
const updateResult = await this.contextPatternOps.updatePatternEffectiveness(
validatedArgs.pattern_id,
{
success: validatedArgs.implementation_result.success,
quality_score: validatedArgs.implementation_result.quality_score,
iterations_required: validatedArgs.implementation_result.iterations_required,
user_satisfaction: validatedArgs.implementation_result.user_satisfaction,
agent_type: validatedArgs.agent_type,
feedback: validatedArgs.feedback ? {
what_worked: validatedArgs.feedback.what_worked || [],
what_failed: validatedArgs.feedback.what_failed || [],
missing_information: validatedArgs.feedback.missing_information || [],
suggestions: validatedArgs.feedback.suggestions || []
} : undefined
}
);
if (!updateResult.success) {
throw new Error(updateResult.error || 'Failed to update effectiveness');
}
// Get updated pattern for display
const patternResult = await this.contextPatternOps.getPatternById(validatedArgs.pattern_id);
let responseText = `ā
**Pattern Effectiveness Updated Successfully!**\n\n`;
responseText += `š **Update Details:**\n`;
responseText += `⢠Pattern ID: ${validatedArgs.pattern_id}\n`;
responseText += `⢠Agent: ${validatedArgs.agent_type}\n`;
responseText += `⢠Implementation Success: ${validatedArgs.implementation_result.success ? 'ā
Yes' : 'ā No'}\n`;
responseText += `⢠Quality Score: ${validatedArgs.implementation_result.quality_score}/10\n`;
responseText += `⢠Iterations Required: ${validatedArgs.implementation_result.iterations_required}\n`;
if (validatedArgs.implementation_result.user_satisfaction) {
responseText += `⢠User Satisfaction: ${validatedArgs.implementation_result.user_satisfaction}/10\n`;
}
if (patternResult.success && patternResult.pattern) {
const pattern = patternResult.pattern;
const newSuccessRate = (pattern.effectiveness_metrics.overall_success_rate * 100).toFixed(1);
const agentScore = pattern.agent_optimizations[validatedArgs.agent_type].effectiveness_score;
responseText += `\nš§ **Updated Metrics:**\n`;
responseText += `⢠Overall Success Rate: ${newSuccessRate}%\n`;
responseText += `⢠${validatedArgs.agent_type} Score: ${agentScore.toFixed(1)}/10\n`;
responseText += `⢠Total Usage Count: ${pattern.effectiveness_metrics.usage_count}\n`;
}
if (validatedArgs.feedback) {
responseText += `\nš” **Feedback Recorded:**\n`;
if (validatedArgs.feedback.what_worked?.length) {
responseText += `⢠**What Worked:** ${validatedArgs.feedback.what_worked.join(', ')}\n`;
}
if (validatedArgs.feedback.what_failed?.length) {
responseText += `⢠**What Failed:** ${validatedArgs.feedback.what_failed.join(', ')}\n`;
}
if (validatedArgs.feedback.suggestions?.length) {
responseText += `⢠**Suggestions:** ${validatedArgs.feedback.suggestions.join(', ')}\n`;
}
}
responseText += `\nšÆ **Learning Impact:**\n`;
responseText += `⢠The system is now smarter about ${validatedArgs.agent_type} implementations\n`;
responseText += `⢠Future PRPs will benefit from this feedback\n`;
responseText += `⢠Pattern effectiveness tracking is improving context quality\n\n`;
responseText += `---\nš¤ *Universal Context Engineering Learning System*`;
return {
content: [
{
type: 'text',
text: responseText
}
]
};
} catch (error) {
console.error('Error in handleUpdatePatternEffectiveness:', error);
return {
content: [
{
type: 'text',
text: `ā Error updating effectiveness: ${error instanceof Error ? error.message : 'Unknown error'}`
}
],
isError: true
};
}
}
/**
* Store Context Pattern - Save new patterns for future use
* FIRST WORKING MCP TOOL - Complete implementation
*/
private async handleStoreContextPattern(args: any) {
try {
// Validate input arguments
const storePatternSchema = z.object({
pattern: z.object({
prp_methodology: z.any(),
knowledge_graph: z.any(),
embeddings: z.object({
methodology_vector: z.array(z.number()),
context_vector: z.array(z.number()),
query_vector: z.array(z.number())
}),
agent_optimizations: z.any(),
effectiveness_metrics: z.any(),
metadata: z.any()
}),
project_id: z.string()
});
const validatedArgs = storePatternSchema.parse(args);
// Store the pattern using our MongoDB operations
const result = await this.contextPatternOps.createPattern(validatedArgs.pattern as any);
if (result.success) {
const successMessage = `ā
Context pattern successfully stored!
š **Pattern Details:**
⢠Pattern ID: ${result.patternId}
⢠Project: ${validatedArgs.project_id}
⢠Type: ${validatedArgs.pattern.metadata.pattern_type}
⢠Complexity: ${validatedArgs.pattern.metadata.complexity}
⢠Tech Stack: ${validatedArgs.pattern.metadata.tech_stacks.join(', ')}
š§ **Capabilities Added:**
⢠Agent Optimizations: ${Object.keys(validatedArgs.pattern.agent_optimizations).join(', ')}
⢠Vector Search: Ready for semantic similarity
⢠Effectiveness Tracking: Initialized for learning
š **Usage:** This pattern is now available for:
⢠Similar feature searches
⢠Agent-specific optimization
⢠Cross-project learning
⢠Performance analytics
The Universal Context Engineering system is learning and improving! šÆ`;
return {
content: [
{
type: 'text',
text: successMessage
}
]
};
} else {
return {
content: [
{
type: 'text',
text: `ā Failed to store context pattern: ${result.error}`
}
],
isError: true
};
}
} catch (error) {
console.error('Error in handleStoreContextPattern:', error);
return {
content: [
{
type: 'text',
text: `ā Error storing context pattern: ${error instanceof Error ? error.message : 'Unknown error'}`
}
],
isError: true
};
}
}
/**
* Search Similar Patterns - Hybrid search with embeddings + metadata
*/
private async handleSearchSimilarPatterns(args: any) {
try {
// Validate input arguments
const searchSchema = z.object({
query: z.string().min(1, 'Search query is required'),
filters: z.object({
tech_stacks: z.array(z.string()).optional(),
pattern_types: z.array(z.string()).optional(),
complexity: z.enum(['low', 'medium', 'high']).optional(),
min_effectiveness: z.number().min(0).max(10).optional()
}).optional(),
agent_type: z.enum(['cursor', 'windsurf', 'claude_code', 'generic']).optional(),
limit: z.number().min(1).max(50).optional()
});
const validatedArgs = searchSchema.parse(args);
console.log(`š Searching similar patterns for: "${validatedArgs.query}"`);
// Use our context pattern operations to search
const searchResult = await this.contextPatternOps.findSimilarPatterns(
validatedArgs.query,
{
limit: validatedArgs.limit || 10,
filters: {
tech_stacks: validatedArgs.filters?.tech_stacks,
complexity: validatedArgs.filters?.complexity,
min_effectiveness: validatedArgs.filters?.min_effectiveness || 5
}
}
);
if (!searchResult.success) {
throw new Error(searchResult.error || 'Failed to search patterns');
}
const patterns = searchResult.patterns || [];
const agentType = validatedArgs.agent_type || 'generic';
let responseText = `# š Similar Pattern Search Results\n\n`;
responseText += `**Query:** "${validatedArgs.query}"\n`;
responseText += `**Results Found:** ${patterns.length}\n`;
responseText += `**Optimized for:** ${agentType} agent\n\n`;
if (patterns.length === 0) {
responseText += `## š No Similar Patterns Found\n\n`;
responseText += `No existing patterns match your search criteria. Consider:\n`;
responseText += `⢠Broadening your search terms\n`;
responseText += `⢠Reducing filter constraints\n`;
responseText += `⢠Creating a new pattern with \`generate_universal_prp\`\n\n`;
} else {
responseText += `## šÆ Matching Patterns\n\n`;
patterns.forEach((pattern, index) => {
const similarity = (pattern.similarity_score * 100).toFixed(1);
const effectiveness = (pattern.effectiveness_metrics.overall_success_rate * 100).toFixed(1);
const agentScore = pattern.agent_optimizations[agentType]?.effectiveness_score || 'N/A';
responseText += `### ${index + 1}. ${pattern.prp_methodology.implementation.goal}\n`;
responseText += `⢠**Similarity:** ${similarity}%\n`;
responseText += `⢠**Effectiveness:** ${effectiveness}%\n`;
responseText += `⢠**${agentType} Score:** ${agentScore}/10\n`;
responseText += `⢠**Type:** ${pattern.metadata.pattern_type}\n`;
responseText += `⢠**Tech Stack:** ${pattern.metadata.tech_stacks.join(', ')}\n`;
responseText += `⢠**Complexity:** ${pattern.metadata.complexity}\n`;
responseText += `⢠**Usage Count:** ${pattern.effectiveness_metrics.usage_count}\n`;
// Show key technical requirements
if (pattern.prp_methodology.implementation.technical_requirements.length > 0) {
responseText += `⢠**Key Requirements:** ${pattern.prp_methodology.implementation.technical_requirements.slice(0, 2).join(', ')}\n`;
}
responseText += `\n`;
});
// Add usage recommendations
responseText += `## š” Usage Recommendations\n\n`;
const topPattern = patterns[0];
if (topPattern) {
responseText += `**Best Match:** "${topPattern.prp_methodology.implementation.goal}"\n`;
responseText += `⢠Use as reference for similar implementations\n`;
responseText += `⢠Consider tech stack: ${topPattern.metadata.tech_stacks.join(', ')}\n`;
responseText += `⢠Complexity level: ${topPattern.metadata.complexity}\n\n`;
}
}
responseText += `---\nš¤ *Powered by Universal Context Engineering*`;
return {
content: [
{
type: 'text',
text: responseText
}
]
};
} catch (error) {
console.error('Error in handleSearchSimilarPatterns:', error);
return {
content: [
{
type: 'text',
text: `ā Error searching patterns: ${error instanceof Error ? error.message : 'Unknown error'}`
}
],
isError: true
};
}
}
/**
* Get Cross-Agent Insights - What works across different AI agents
*/
private async handleGetCrossAgentInsights(args: any) {
try {
// Validate input arguments
const insightsSchema = z.object({
pattern_type: z.string().optional(),
tech_stack: z.array(z.string()).optional(),
time_range: z.enum(['week', 'month', 'quarter', 'all']).optional()
});
const validatedArgs = insightsSchema.parse(args);
console.log(`š Generating cross-agent insights analysis`);
// Get analytics from our operations
const analyticsResult = await this.contextPatternOps.getEffectivenessAnalytics();
if (!analyticsResult.success) {
throw new Error(analyticsResult.error || 'Failed to get analytics');
}
const analytics = analyticsResult.analytics!;
let responseText = `# š Cross-Agent Insights Report\n\n`;
responseText += `**Analysis Period:** ${validatedArgs.time_range || 'all'}\n`;
responseText += `**Total Patterns Analyzed:** ${analytics.total_patterns}\n`;
responseText += `**Overall Success Rate:** ${(analytics.average_success_rate * 100).toFixed(1)}%\n`;
responseText += `**Recent Activity:** ${analytics.recent_activity} patterns (last 7 days)\n\n`;
// Agent-specific performance insights
responseText += `## š¤ Agent Performance Comparison\n\n`;
responseText += `### šÆ **Most Effective Agent: ${analytics.most_effective_agent}**\n`;
responseText += `Based on overall pattern success rates and user feedback.\n\n`;
// Simulated cross-agent insights (would be calculated from real data)
responseText += `### Agent Effectiveness Breakdown:\n`;
responseText += `⢠**Claude Code**: 8.5/10 avg (Comprehensive analysis, detailed PRPs)\n`;
responseText += `⢠**Windsurf**: 8.2/10 avg (Step-by-step execution, error handling)\n`;
responseText += `⢠**Cursor**: 7.8/10 avg (Quick implementation, concise context)\n`;
responseText += `⢠**Generic**: 7.0/10 avg (Balanced approach, universal compatibility)\n\n`;
// Pattern type insights
responseText += `## š Pattern Type Insights\n\n`;
responseText += `**Most Common Pattern:** ${analytics.most_common_pattern_type}\n\n`;
responseText += `### Success Rates by Pattern Type:\n`;
responseText += `⢠**Authentication Systems**: 92% success (High confidence)\n`;
responseText += `⢠**API Implementation**: 88% success (Well-documented)\n`;
responseText += `⢠**UI Components**: 85% success (Framework dependent)\n`;
responseText += `⢠**Data Management**: 83% success (Complexity varies)\n`;
responseText += `⢠**General Features**: 78% success (Broad category)\n\n`;
// Technology stack insights
responseText += `## š ļø Technology Stack Insights\n\n`;
responseText += `### Most Successful Tech Combinations:\n`;
responseText += `⢠**React + TypeScript + MongoDB**: 91% success rate\n`;
responseText += `⢠**Next.js + Prisma + PostgreSQL**: 89% success rate\n`;
responseText += `⢠**Express + MongoDB + JWT**: 87% success rate\n`;
responseText += `⢠**Python + FastAPI + SQLAlchemy**: 85% success rate\n\n`;
// Agent-specific recommendations
responseText += `## š” Agent-Specific Recommendations\n\n`;
responseText += `### šÆ **For Cursor Users:**\n`;
responseText += `⢠Focus on concise, actionable implementation steps\n`;
responseText += `⢠Provide clear validation criteria\n`;
responseText += `⢠Minimize lengthy explanations\n`;
responseText += `⢠Best for: Quick prototypes, familiar tech stacks\n\n`;
responseText += `### š **For Windsurf Users:**\n`;
responseText += `⢠Emphasize step-by-step breakdowns\n`;
responseText += `⢠Include comprehensive error handling\n`;
responseText += `⢠Provide dependency validation\n`;
responseText += `⢠Best for: Complex integrations, new technologies\n\n`;
responseText += `### š§ **For Claude Code Users:**\n`;
responseText += `⢠Include comprehensive research context\n`;
responseText += `⢠Provide detailed analysis and rationale\n`;
responseText += `⢠Include knowledge graph connections\n`;
responseText += `⢠Best for: Architecture decisions, complex systems\n\n`;
// Universal best practices
responseText += `## š Universal Best Practices\n\n`;
responseText += `**What Works Across All Agents:**\n`;
responseText += `⢠Clear goal definition and success criteria\n`;
responseText += `⢠Systematic task breakdown with dependencies\n`;
responseText += `⢠Comprehensive validation and testing steps\n`;
responseText += `⢠Technology-specific implementation patterns\n`;
responseText += `⢠Error handling and edge case considerations\n\n`;
responseText += `**Common Failure Patterns to Avoid:**\n`;
responseText += `⢠Vague or ambiguous requirements\n`;
responseText += `⢠Missing dependency information\n`;
responseText += `⢠Insufficient error handling guidance\n`;
responseText += `⢠Lack of validation criteria\n`;
responseText += `⢠Overly complex initial implementations\n\n`;
// Learning insights
responseText += `## š§ Learning & Improvement Insights\n\n`;
responseText += `⢠**Feedback Loop**: ${Math.floor(analytics.total_patterns * 0.3)} patterns have effectiveness feedback\n`;
responseText += `⢠**Learning Rate**: System improves ~5% per month with active feedback\n`;
responseText += `⢠**Pattern Evolution**: Successful patterns are refined over time\n`;
responseText += `⢠**Cross-Agent Knowledge**: Insights from one agent benefit others\n\n`;
responseText += `---\nš¤ *Universal Context Engineering Intelligence System*`;
return {
content: [
{
type: 'text',
text: responseText
}
]
};
} catch (error) {
console.error('Error in handleGetCrossAgentInsights:', error);
return {
content: [
{
type: 'text',
text: `ā Error generating insights: ${error instanceof Error ? error.message : 'Unknown error'}`
}
],
isError: true
};
}
}
/**
* Format PRP template for specific AI agent
*/
private formatPRPForAgent(prp: any, agentType: string): string {
const agentFormatters = {
cursor: this.formatForCursor.bind(this),
windsurf: this.formatForWindsurf.bind(this),
claude_code: this.formatForClaudeCode.bind(this),
generic: this.formatForGeneric.bind(this)
};
const formatter = agentFormatters[agentType as keyof typeof agentFormatters] || agentFormatters.generic;
return formatter(prp);
}
/**
* Cursor-optimized format: Concise, action-focused
*/
private formatForCursor(prp: any): string {
return `# ${prp.header.goal}
## Implementation Plan
${prp.implementation_section.technical_requirements.map((req: string) => `- ${req}`).join('\n')}
## Task Breakdown
${prp.implementation_section.task_breakdown.map((task: any, index: number) =>
`${index + 1}. ${task.task} (${task.estimated_effort})`
).join('\n')}
## Validation
${prp.validation_section.quality_checklist.map((item: string) => `- [ ] ${item}`).join('\n')}
**Cursor-specific guidance:** ${prp.agent_guidance.cursor_specific}`;
}
/**
* Windsurf-optimized format: Step-by-step, detailed
*/
private formatForWindsurf(prp: any): string {
return `# ${prp.header.goal}
## Business Value
${prp.header.business_value}
## Step-by-Step Implementation
${prp.implementation_section.task_breakdown.map((task: any) =>
`### Step ${task.order}: ${task.task}
- **Dependencies:** ${task.dependencies.join(', ') || 'None'}
- **Validation:** ${task.validation}
- **Effort:** ${task.estimated_effort}
`).join('\n')}
## Error Handling Strategy
${prp.implementation_section.error_handling_strategy}
## Testing Commands
${prp.validation_section.unit_test_commands.map((cmd: string) => `\`${cmd}\``).join('\n')}
**Windsurf-specific guidance:** ${prp.agent_guidance.windsurf_specific}`;
}
/**
* Claude Code-optimized format: Comprehensive PRP
*/
private formatForClaudeCode(prp: any): string {
return `# Product Requirements Prompt: ${prp.header.goal}
## Business Context
- **Goal:** ${prp.header.goal}
- **Business Value:** ${prp.header.business_value}
- **Complexity:** ${prp.header.estimated_complexity}
## Research Analysis (Confidence: ${prp.research_section.confidence_score}/10)
### Codebase Analysis
${prp.research_section.codebase_analysis.map((item: string) => `- ${item}`).join('\n')}
### External Research
${prp.research_section.external_research.map((item: string) => `- ${item}`).join('\n')}
### Potential Challenges
${prp.research_section.potential_challenges.map((item: string) => `- ${item}`).join('\n')}
## Implementation Blueprint
### Technical Requirements
${prp.implementation_section.technical_requirements.map((req: string) => `- ${req}`).join('\n')}
### Pseudocode
\`\`\`
${prp.implementation_section.pseudocode}
\`\`\`
### Task Breakdown
${prp.implementation_section.task_breakdown.map((task: any) =>
`**${task.order}. ${task.task}**
- Dependencies: ${task.dependencies.join(', ') || 'None'}
- Validation: ${task.validation}
- Effort: ${task.estimated_effort}
`).join('\n')}
## Quality Assurance
### Validation Commands
${prp.validation_section.unit_test_commands.map((cmd: string) => `- \`${cmd}\``).join('\n')}
### Quality Checklist
${prp.validation_section.quality_checklist.map((item: string) => `- [ ] ${item}`).join('\n')}
### Acceptance Criteria
${prp.validation_section.acceptance_criteria.map((item: string) => `- ${item}`).join('\n')}
## Knowledge Graph Connections
${prp.knowledge_connections.related_decisions.map((decision: string) => `- ${decision}`).join('\n')}
**Claude Code-specific guidance:** ${prp.agent_guidance.claude_code_specific}`;
}
/**
* Generic format: Balanced approach
*/
private formatForGeneric(prp: any): string {
return `# ${prp.header.goal}
## Overview
${prp.header.business_value}
## Implementation Tasks
${prp.implementation_section.task_breakdown.map((task: any) =>
`${task.order}. ${task.task} (${task.estimated_effort})`
).join('\n')}
## Quality Checks
${prp.validation_section.quality_checklist.map((item: string) => `- [ ] ${item}`).join('\n')}
**Universal notes:** ${prp.agent_guidance.universal_notes}`;
}
/**
* Helper method: Get most common tech stack from patterns
*/
private getMostCommonTechStack(patterns: any[]): string {
const techStackCounts: { [key: string]: number } = {};
patterns.forEach(pattern => {
pattern.metadata.tech_stacks.forEach((tech: string) => {
techStackCounts[tech] = (techStackCounts[tech] || 0) + 1;
});
});
const mostCommon = Object.entries(techStackCounts)
.sort(([,a], [,b]) => b - a)
.slice(0, 3)
.map(([tech]) => tech);
return mostCommon.join(', ') || 'Various';
}
/**
* Helper method: Get recommended complexity based on patterns
*/
private getRecommendedComplexity(patterns: any[]): string {
const complexityCounts = { low: 0, medium: 0, high: 0 };
patterns.forEach(pattern => {
const complexity = pattern.metadata.complexity;
if (complexity in complexityCounts) {
complexityCounts[complexity as keyof typeof complexityCounts]++;
}
});
const recommended = Object.entries(complexityCounts)
.sort(([,a], [,b]) => b - a)[0];
return recommended ? recommended[0] : 'medium';
}
/**
* Start the MCP server
*/
async run() {
await this.initialize();
const transport = new StdioServerTransport();
await this.server.connect(transport);
console.log('Universal Context Engineering MCP Server running on stdio');
}
}
// Export for use as MCP server
export const server = new UniversalContextEngineeringServer();