Persistent memory MCP server for LLMs — save, recall, and manage memories across sessions
Server has well-structured tool definitions with complete JSON schemas and descriptions for all 5 tools. Naming follows verb_noun convention (save_, delete_, list_, search_, start_). Descriptions are present and substantive (100-200 chars typical). However, several parameter descriptions lack actionable detail about constraints, formats, and error recovery. Output schemas are not explicitly documented in tool definitions. Error handling exists in code but is not surfaced in tool descriptions to guide LLM recovery. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels.
Delete a memory by its key
List memories with optional filtering by category, tags, importance, and sorting
Save or update a memory with key, content, category, tags, importance level, and metadata
Search memories by query with keyword matching, phrase matching, and tag filtering
Start a new session and get a summary of critical, high-importance, and recent memories organized by category
Tool annotations missing: delete_memory (DESTRUCTIVE) and save_memory (WRITE) lack destructiveHint and idempotentHint annotations. LLMs cannot determine retry safety without explicit hints.
Output schemas not documented in tool definitions. LLMs cannot plan downstream calls or extract required fields (e.g., session_id from start_session, memory.id from save_memory). Responses are inferred from code, not declared.
Parameter descriptions lack actionable constraints. 'limit' has no min/max (code defaults to 50, but not stated). 'query' in search_memories has no guidance on phrase vs keyword matching. 'sort_by' enum values not explained (what does 'access_count' mean?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Error recovery guidance absent from descriptions. delete_memory returns boolean but no description of what happens if key not found. save_memory throws on missing content but error message not documented. LLMs cannot self-correct.
start_session tool name is vague. Does it create a session, retrieve one, or summarize? Description clarifies it returns a summary, but name suggests state mutation. Consider rename to 'get_session_summary' or 'summarize_memories'.