memory_knowledge_graph
Query relationships and paths within a knowledge graph to analyze connections and retrieve structured information from documentation.
Instructions
Query the knowledge graph for relationships and paths
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Implementation Reference
- src/memory/knowledge-graph.ts:570-627 (handler)KnowledgeGraph.query method implements the core logic for querying the graph for nodes, edges, and paths based on the exact input schema parameters (nodeTypes, edgeTypes, startNode, maxDepth). This is the handler logic executed for the tool.query(query: GraphQuery): { nodes: GraphNode[]; edges: GraphEdge[]; paths?: GraphPath[]; } { let nodes = Array.from(this.nodes.values()); let edges = Array.from(this.edges.values()); // Filter by node types if (query.nodeTypes) { nodes = nodes.filter((node) => query.nodeTypes!.includes(node.type)); } // Filter by edge types if (query.edgeTypes) { edges = edges.filter((edge) => query.edgeTypes!.includes(edge.type)); } // Filter by properties if (query.properties) { nodes = nodes.filter((node) => Object.entries(query.properties!).every( ([key, value]) => node.properties[key] === value, ), ); } // Filter by minimum weight if (query.minWeight) { nodes = nodes.filter((node) => node.weight >= query.minWeight!); edges = edges.filter((edge) => edge.weight >= query.minWeight!); } const result = { nodes, edges }; // Find paths from start node if specified if (query.startNode && query.maxDepth) { const paths: GraphPath[] = []; const visited = new Set<string>(); const emptyPath: GraphPath = { nodes: [], edges: [], totalWeight: 0, confidence: 1.0, }; this.explorePaths( query.startNode, emptyPath, paths, visited, query.maxDepth, ); (result as any).paths = paths; } return result; }
- src/memory/index.ts:191-224 (schema)Input schema definition for the memory_knowledge_graph tool, defining the expected query parameters.{ name: "memory_knowledge_graph", description: "Query the knowledge graph for relationships and paths", inputSchema: { type: "object", properties: { query: { type: "object", properties: { nodeTypes: { type: "array", items: { type: "string" }, description: "Filter by node types", }, edgeTypes: { type: "array", items: { type: "string" }, description: "Filter by edge types", }, startNode: { type: "string", description: "Starting node for path queries", }, maxDepth: { type: "number", description: "Maximum path depth", default: 3, }, }, }, }, required: ["query"], }, },
- src/memory/index.ts:90-805 (registration)The memoryTools array exports all memory-related MCP tools including memory_knowledge_graph, which gets incorporated into the main TOOLS registry.export const memoryTools = [ { name: "memory_recall", description: "Recall memories about a project or topic", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query or project ID", }, type: { type: "string", enum: [ "analysis", "recommendation", "deployment", "configuration", "interaction", "all", ], description: "Type of memory to recall", }, limit: { type: "number", description: "Maximum number of memories to return", default: 10, }, }, required: ["query"], }, }, { name: "memory_intelligent_analysis", description: "Get intelligent analysis with patterns, predictions, and recommendations", inputSchema: { type: "object", properties: { projectPath: { type: "string", description: "Path to the project for analysis", }, baseAnalysis: { type: "object", description: "Base analysis data to enhance", }, }, required: ["projectPath", "baseAnalysis"], }, }, { name: "memory_enhanced_recommendation", description: "Get enhanced recommendations using learning and knowledge graph", inputSchema: { type: "object", properties: { projectPath: { type: "string", description: "Path to the project", }, baseRecommendation: { type: "object", description: "Base recommendation to enhance", }, projectFeatures: { type: "object", properties: { language: { type: "string" }, framework: { type: "string" }, size: { type: "string", enum: ["small", "medium", "large"] }, complexity: { type: "string", enum: ["simple", "moderate", "complex"], }, hasTests: { type: "boolean" }, hasCI: { type: "boolean" }, hasDocs: { type: "boolean" }, isOpenSource: { type: "boolean" }, }, required: ["language"], }, }, required: ["projectPath", "baseRecommendation", "projectFeatures"], }, }, { name: "memory_learning_stats", description: "Get comprehensive learning and knowledge graph statistics", inputSchema: { type: "object", properties: { includeDetails: { type: "boolean", description: "Include detailed statistics", default: true, }, }, }, }, { name: "memory_knowledge_graph", description: "Query the knowledge graph for relationships and paths", inputSchema: { type: "object", properties: { query: { type: "object", properties: { nodeTypes: { type: "array", items: { type: "string" }, description: "Filter by node types", }, edgeTypes: { type: "array", items: { type: "string" }, description: "Filter by edge types", }, startNode: { type: "string", description: "Starting node for path queries", }, maxDepth: { type: "number", description: "Maximum path depth", default: 3, }, }, }, }, required: ["query"], }, }, { name: "memory_contextual_search", description: "Perform contextual memory retrieval with intelligent ranking", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query", }, context: { type: "object", properties: { currentProject: { type: "object", properties: { path: { type: "string" }, language: { type: "string" }, framework: { type: "string" }, size: { type: "string", enum: ["small", "medium", "large"] }, }, }, userIntent: { type: "object", properties: { action: { type: "string", enum: [ "analyze", "recommend", "deploy", "troubleshoot", "learn", ], }, urgency: { type: "string", enum: ["low", "medium", "high"] }, experience: { type: "string", enum: ["novice", "intermediate", "expert"], }, }, }, temporalContext: { type: "object", properties: { recency: { type: "string", enum: ["recent", "all", "historical"], }, timeRange: { type: "object", properties: { start: { type: "string" }, end: { type: "string" }, }, }, }, }, }, }, options: { type: "object", properties: { maxResults: { type: "number", default: 10 }, minRelevance: { type: "number", default: 0.3 }, includeReasoning: { type: "boolean", default: true }, }, }, }, required: ["query", "context"], }, }, { name: "memory_agent_network", description: "Manage multi-agent memory sharing and collaboration", inputSchema: { type: "object", properties: { action: { type: "string", enum: [ "register_agent", "share_memory", "sync_request", "get_insights", "network_status", ], description: "Action to perform", }, agentInfo: { type: "object", properties: { name: { type: "string" }, capabilities: { type: "array", items: { type: "string" } }, specializations: { type: "array", items: { type: "string" } }, trustLevel: { type: "string", enum: ["low", "medium", "high", "trusted"], }, }, }, memoryId: { type: "string", description: "Memory ID for sharing operations", }, targetAgent: { type: "string", description: "Target agent for sync operations", }, options: { type: "object", properties: { anonymize: { type: "boolean", default: false }, requireValidation: { type: "boolean", default: false }, }, }, }, required: ["action"], }, }, { name: "memory_insights", description: "Get insights and patterns from memory", inputSchema: { type: "object", properties: { projectId: { type: "string", description: "Project ID to analyze", }, timeRange: { type: "object", properties: { start: { type: "string", format: "date-time" }, end: { type: "string", format: "date-time" }, }, description: "Time range for analysis", }, }, }, }, { name: "memory_similar", description: "Find similar projects from memory", inputSchema: { type: "object", properties: { analysisId: { type: "string", description: "Analysis ID to find similar projects for", }, limit: { type: "number", description: "Maximum number of similar projects", default: 5, }, }, required: ["analysisId"], }, }, { name: "memory_export", description: "Export memories to JSON or CSV", inputSchema: { type: "object", properties: { format: { type: "string", enum: ["json", "csv"], description: "Export format", default: "json", }, filter: { type: "object", properties: { type: { type: "string" }, projectId: { type: "string" }, startDate: { type: "string", format: "date-time" }, endDate: { type: "string", format: "date-time" }, }, description: "Filter memories to export", }, }, }, }, { name: "memory_cleanup", description: "Clean up old memories", inputSchema: { type: "object", properties: { daysToKeep: { type: "number", description: "Number of days of memories to keep", default: 30, }, dryRun: { type: "boolean", description: "Preview what would be deleted without actually deleting", default: false, }, }, }, }, { name: "memory_pruning", description: "Intelligent memory pruning and optimization", inputSchema: { type: "object", properties: { policy: { type: "object", properties: { maxAge: { type: "number", description: "Maximum age in days", default: 180, }, maxSize: { type: "number", description: "Maximum storage size in MB", default: 500, }, maxEntries: { type: "number", description: "Maximum number of entries", default: 50000, }, preservePatterns: { type: "array", items: { type: "string" }, description: "Pattern types to preserve", }, compressionThreshold: { type: "number", description: "Compress entries older than X days", default: 30, }, redundancyThreshold: { type: "number", description: "Remove similar entries with similarity > X", default: 0.85, }, }, }, dryRun: { type: "boolean", description: "Preview pruning without executing", default: false, }, }, }, }, { name: "memory_temporal_analysis", description: "Analyze temporal patterns and trends in memory data", inputSchema: { type: "object", properties: { query: { type: "object", properties: { timeRange: { type: "object", properties: { start: { type: "string", format: "date-time" }, end: { type: "string", format: "date-time" }, }, }, granularity: { type: "string", enum: ["hour", "day", "week", "month", "year"], default: "day", }, aggregation: { type: "string", enum: ["count", "success_rate", "activity_level", "diversity"], default: "count", }, filters: { type: "object", properties: { types: { type: "array", items: { type: "string" } }, projects: { type: "array", items: { type: "string" } }, outcomes: { type: "array", items: { type: "string" } }, tags: { type: "array", items: { type: "string" } }, }, }, }, }, analysisType: { type: "string", enum: ["patterns", "metrics", "predictions", "insights"], default: "patterns", }, }, }, }, { name: "memory_visualization", description: "Generate visual representations of memory data", inputSchema: { type: "object", properties: { visualizationType: { type: "string", enum: [ "dashboard", "timeline", "network", "heatmap", "distribution", "trends", "custom", ], default: "dashboard", }, options: { type: "object", properties: { timeRange: { type: "object", properties: { start: { type: "string", format: "date-time" }, end: { type: "string", format: "date-time" }, }, }, includeCharts: { type: "array", items: { type: "string" } }, config: { type: "object", properties: { width: { type: "number", default: 800 }, height: { type: "number", default: 600 }, theme: { type: "string", enum: ["light", "dark", "auto"], default: "light", }, exportFormat: { type: "string", enum: ["svg", "png", "json", "html"], default: "svg", }, interactive: { type: "boolean", default: true }, }, }, }, }, customVisualization: { type: "object", properties: { type: { type: "string", enum: [ "line", "bar", "scatter", "heatmap", "network", "sankey", "treemap", "timeline", ], }, query: { type: "object", properties: { filters: { type: "object" }, groupBy: { type: "string" }, aggregation: { type: "string" }, }, }, }, }, }, }, }, { name: "memory_export_advanced", description: "Advanced memory export with multiple formats and options", inputSchema: { type: "object", properties: { outputPath: { type: "string", description: "Output file path" }, options: { type: "object", properties: { format: { type: "string", enum: [ "json", "jsonl", "csv", "xml", "yaml", "sqlite", "archive", ], default: "json", }, compression: { type: "string", enum: ["gzip", "zip", "none"], default: "none", }, includeMetadata: { type: "boolean", default: true }, includeLearning: { type: "boolean", default: true }, includeKnowledgeGraph: { type: "boolean", default: true }, filters: { type: "object", properties: { types: { type: "array", items: { type: "string" } }, dateRange: { type: "object", properties: { start: { type: "string", format: "date-time" }, end: { type: "string", format: "date-time" }, }, }, projects: { type: "array", items: { type: "string" } }, tags: { type: "array", items: { type: "string" } }, outcomes: { type: "array", items: { type: "string" } }, }, }, anonymize: { type: "object", properties: { enabled: { type: "boolean", default: false }, fields: { type: "array", items: { type: "string" } }, method: { type: "string", enum: ["hash", "remove", "pseudonymize"], default: "hash", }, }, }, encryption: { type: "object", properties: { enabled: { type: "boolean", default: false }, algorithm: { type: "string", enum: ["aes-256-gcm", "aes-192-gcm", "aes-128-gcm"], default: "aes-256-gcm", }, password: { type: "string" }, }, }, }, }, }, required: ["outputPath"], }, }, { name: "memory_import_advanced", description: "Advanced memory import with validation and conflict resolution", inputSchema: { type: "object", properties: { inputPath: { type: "string", description: "Input file path" }, options: { type: "object", properties: { format: { type: "string", enum: [ "json", "jsonl", "csv", "xml", "yaml", "sqlite", "archive", ], default: "json", }, mode: { type: "string", enum: ["merge", "replace", "append", "update"], default: "merge", }, validation: { type: "string", enum: ["strict", "loose", "none"], default: "strict", }, conflictResolution: { type: "string", enum: ["skip", "overwrite", "merge", "rename"], default: "skip", }, backup: { type: "boolean", default: true }, dryRun: { type: "boolean", default: false }, mapping: { type: "object", description: "Field mapping for different schemas", }, transformation: { type: "object", properties: { enabled: { type: "boolean", default: false }, rules: { type: "array", items: { type: "object", properties: { field: { type: "string" }, operation: { type: "string", enum: ["convert", "transform", "validate"], }, params: { type: "object" }, }, }, }, }, }, }, }, }, required: ["inputPath"], }, }, { name: "memory_migration", description: "Create and execute migration plans between different memory systems", inputSchema: { type: "object", properties: { action: { type: "string", enum: ["create_plan", "execute_migration", "validate_compatibility"], default: "create_plan", }, sourcePath: { type: "string", description: "Source data path" }, migrationPlan: { type: "object", properties: { sourceSystem: { type: "string" }, targetSystem: { type: "string", default: "DocuMCP" }, mapping: { type: "object" }, transformations: { type: "array" }, validation: { type: "array" }, postProcessing: { type: "array", items: { type: "string" } }, }, }, sourceSchema: { type: "object", description: "Source system schema" }, targetSchema: { type: "object", description: "Target system schema" }, options: { type: "object", properties: { autoMap: { type: "boolean", default: true }, preserveStructure: { type: "boolean", default: true }, customMappings: { type: "object" }, }, }, }, }, }, { name: "memory_optimization_metrics", description: "Get comprehensive optimization metrics and recommendations", inputSchema: { type: "object", properties: { includeRecommendations: { type: "boolean", default: true }, timeRange: { type: "object", properties: { start: { type: "string", format: "date-time" }, end: { type: "string", format: "date-time" }, }, }, }, }, }, ];
- src/memory/kg-integration.ts:71-76 (helper)Utility to retrieve the singleton KnowledgeGraph instance used by tool handlers.export async function getKnowledgeGraph(): Promise<KnowledgeGraph> { if (!globalKnowledgeGraph) { return await initializeKnowledgeGraph(); } return globalKnowledgeGraph; }