MCP server for enabling memory for Claude through a knowledge graph
The Memory Graph server provides 9 tools with explicit definitions and reasonable input schemas. All tools have descriptions and input parameter schemas, placing it above the median (~50). However, several quality issues prevent a higher score: (1) Output schemas are not documented, tool returns are described as prose ('The complete knowledge graph') but the actual KnowledgeGraph structure is not formally specified in the tool definition; (2) Parameter descriptions are minimal, most parameters lack actionable constraints or guidance on expected formats; (3) No error handling guidance, tools do not explain what happens on failure (e.g., what if entity_name doesn't exist in add_observations?); (4) Destructive tools (delete_*) have no confirmation mechanism or dry-run option, violating the confirmation-request pattern; (5) Limited schema detail, parameters lack type annotations beyond basic types (string, array); (6) No per-item failure handling for batch operations, if 5 of 10 entities fail to create, the tool does not report which ones succeeded and which failed. The naming is generally clear (verb_noun pattern is followed), and the tools are well-separated by responsibility. The schema coverage is adequate but not excellent.
Add new observations to existing entities. Args: observations: List of observations to add, each with entityName and contents Returns: List of results showing which observations were added to which entities
Create multiple new entities in the knowledge graph. Args: entities: List of entities to create, each with name, type and observations Returns: List of newly created entities (excluding any that already existed)
Create new relations between entities in the knowledge graph. Args: relations: List of relations to create, each with from_, to and relationType Returns: List of newly created relations (excluding any duplicates)
Delete entities and their associated relations from the graph. Args: entity_names: List of entity names to delete
Delete specific observations from entities. Args: deletions: List of deletions, each with entityName and observations to remove
Output schemas not formally documented. Tools describe returns in prose ('The complete knowledge graph') but do not declare the actual output schema structure (fields, types, nesting). LLMs cannot reliably parse or plan downstream calls without knowing the exact response structure.
Destructive tools (delete_entities, delete_observations, delete_relations) lack confirmation or dry-run capability. No mention of reversibility or undo options. Agents can accidentally delete data without confirmation.
No error handling guidance. Tool descriptions do not explain what happens on failure (e.g., add_observations does not state what occurs if entityName does not exist). Batch operations do not specify per-item success/failure reporting.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Delete specific relations from the graph. Args: relations: List of relations to delete
Get a subgraph containing specific nodes and their interconnecting relations. Args: names: List of entity names to include Returns: Subgraph containing the specified entities and relations between them
Read the entire knowledge graph. Returns: The complete knowledge graph with all entities and relations
Search for nodes and their relations matching a query string. Args: query: Search string to match against node names, types and observations Returns: Subgraph containing matching entities and their interconnecting relations
Parameter descriptions lack actionable constraints. For example, 'query' in search_nodes does not specify if it supports regex, substring matching, or exact match. 'observations' arrays lack min/max length guidance.
read_graph with no parameters returns the entire graph with no pagination or limit mechanism. For large graphs, this could exhaust context windows or timeout.
Tool descriptions are at the lower end of the baseline range (most 50-60 chars). Per-pattern guidance suggests 50-200 chars for LLM optimization. Current descriptions lack detail on WHEN to use each tool vs alternatives and prerequisites.