Persistent memory MCP server for AI coding assistants — backed by a Graphiti knowledge graph
Five tools with complete input schemas and descriptions, but quality is uneven. Tool names follow verb_noun convention (mem_search, mem_update, mem_delete) which is good. Descriptions range from adequate (mem_search: 67 chars) to verbose (mem_update: 180+ chars). All parameters have type definitions and descriptions. However, output schemas are not documented, LLMs cannot predict what mem_search or mem_context return, forcing trial-and-error. Error handling is absent from descriptions. No guidance on retryability, idempotency, or recovery paths. Parameter descriptions lack constraints (e.g., no max length for 'query', no enum for 'type' in mem_finalize_session). Missing dependency hints (e.g., 'Call mem_search first to find topic_key before calling mem_update'). Destructive tool (mem_delete) lacks confirmation or dry-run pattern.
Retrieve the most recent episodes and graph state for a project.
Delete an episode from the knowledge graph.
Save a structured session summary as a knowledge-graph episode.
Search the knowledge graph for memories matching a query.
Update an existing memory episode by topic_key. By default appends new information as a linked update episode — Graphiti reconciles contradicting facts in the graph automatically. Pass replace=True to delete the old episode(s) first and save a clean single entry.
Output schemas not documented. LLMs cannot predict return types for mem_search, mem_context, mem_finalize_session, or mem_update. This forces trial-and-error and prevents downstream tool chaining.
mem_delete (destructive operation) lacks confirmation or dry-run pattern. No description warns of irreversibility. Agents may delete episodes without safeguards.
Parameter 'type' in mem_finalize_session accepts free-form strings. Should be an enum: decision|architecture|bugfix|discovery|convention|note. Current design invites hallucinated values.
No error handling guidance in any tool description. LLMs cannot distinguish retryable errors (network timeout) from user-fixable errors (invalid project_path) from fatal errors (database corruption).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Parameter constraints missing. 'query' in mem_search has no length limit. 'num_results' and 'last_n' have no min/max bounds. 'project_path' has no validation hint (absolute vs relative, existence check).