mcp-adr-analysis-server
Version:
MCP server for analyzing Architectural Decision Records and project architecture
89 lines • 3.21 kB
TypeScript
/**
* Update Knowledge Tool - Simple CRUD operations for knowledge graph
*
* Provides atomic operations to add/remove entities and relationships in the knowledge graph.
* This follows ADR-018 atomic tools pattern, replacing stateful KnowledgeGraphManager methods.
*/
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
import type { KnowledgeGraphManager } from '../utils/knowledge-graph-manager.js';
import type { ToolContext } from '../types/tool-context.js';
export interface UpdateKnowledgeArgs {
operation: 'add_entity' | 'remove_entity' | 'add_relationship' | 'remove_relationship';
entity?: string;
entityType?: 'intent' | 'adr' | 'code' | 'tool' | 'decision';
relationship?: string;
source?: string;
target?: string;
metadata?: Record<string, any>;
}
export interface GraphSummary {
nodeCount: number;
edgeCount: number;
intentCount: number;
adrCount: number;
lastUpdated: string;
}
/**
* Update knowledge graph with simple CRUD operations
*
* This tool provides atomic operations to modify the knowledge graph:
* - add_entity: Add a new node (intent, ADR, tool, etc.)
* - remove_entity: Remove an existing node
* - add_relationship: Add an edge between two nodes
* - remove_relationship: Remove an edge between two nodes
*
* All operations are atomic and return the updated graph state.
*
* @param args - Operation arguments
* @param args.operation - Type of operation to perform
* @param args.entity - Entity ID (for add_entity/remove_entity)
* @param args.entityType - Type of entity (for add_entity)
* @param args.relationship - Relationship type (for add_relationship/remove_relationship)
* @param args.source - Source node ID (for relationships)
* @param args.target - Target node ID (for relationships)
* @param args.metadata - Additional metadata for the entity/relationship
* @param ctx - Tool execution context
* @param kgManager - Knowledge graph manager instance
*
* @returns Promise resolving to tool result with:
* - success: Whether operation succeeded
* - graphState: Current graph summary after operation
* - message: Human-readable result message
*
* @throws {Error} When:
* - Invalid operation type
* - Missing required parameters for operation
* - Entity/relationship not found (for remove operations)
*
* @example Add an ADR entity
* ```typescript
* await updateKnowledge({
* operation: 'add_entity',
* entity: 'adr-019',
* entityType: 'adr',
* metadata: { title: 'Use GraphQL', status: 'proposed' }
* }, ctx, kgManager);
* ```
*
* @example Add a relationship
* ```typescript
* await updateKnowledge({
* operation: 'add_relationship',
* relationship: 'implements',
* source: 'adr-019',
* target: 'src/api/graphql.ts'
* }, ctx, kgManager);
* ```
*
* @example Remove an entity
* ```typescript
* await updateKnowledge({
* operation: 'remove_entity',
* entity: 'adr-015'
* }, ctx, kgManager);
* ```
*
* @since v2.2.0
*/
export declare function updateKnowledge(args: UpdateKnowledgeArgs, ctx: ToolContext, kgManager: KnowledgeGraphManager): Promise<CallToolResult>;
//# sourceMappingURL=update-knowledge-tool.d.ts.map