Cross-session memory system for Claude Code — never lose context between sessions. Exposes memory operations as MCP tools via stdio transport, allowing Claude Desktop and other MCP clients to search, recall, and save memories directly.
Server has 4 well-named tools with complete input schemas and descriptions. All tools follow verb_noun naming (memory_search, memory_recall, memory_save, memory_stats). Descriptions are present and adequate (100-200 chars range). However, output schemas are NOT documented, LLMs cannot predict what fields to expect from responses. Parameter descriptions are good but lack format constraints (e.g., importance range 0.0-1.0 is stated but not enforced via schema). Error handling is absent from visible code, no guidance on what happens if embedder fails, database is corrupted, or invalid category is passed. No tool annotations (readOnlyHint/destructiveHint) despite clear read/write distinction.
Generate a formatted context summary for a specific project. Returns a markdown summary of all relevant memories grouped by category.
Save a new memory directly to the database. Use this to record important decisions, patterns, or context.
Search across all stored memories using hybrid semantic + keyword search. Returns the most relevant memories with relevance scores.
Get statistics about the memory database — counts, categories, projects, size.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). memory_search returns 'relevance scores' but format is unknown. memory_recall returns 'markdown summary' but structure is opaque. memory_stats returns 'counts, categories, projects, size' but field names and types are not specified.
No tool annotations. memory_search and memory_recall are read-only; memory_save is destructive (writes to DB); memory_stats is read-only. Annotations (readOnlyHint, destructiveHint) are missing, preventing agents from reasoning about side effects and retry safety.
No error handling or recovery guidance in visible code. If embedder initialization fails, database is locked, or invalid category is passed, no error message tells the LLM what to do next. Agents will retry blindly or give up.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Parameter constraints not enforced in schema. 'importance' accepts 0.0-1.0 but schema has no minimum/maximum. 'limit' defaults to 5 but no bounds (could LLM pass 10000?). 'category' enum is documented in description but not in schema as enum constraint.
memory_stats has empty inputSchema properties object. Tool accepts no parameters, which is correct, but description does not explain what statistics are returned or when to call it. Minimal guidance for LLM selection.