Local-first persistent memory and session continuity MCP server for AI agents
MemoSaver defines 14 tools with consistent naming (verb_noun pattern: session_*, memory_*, activity_log) and complete input schemas using Zod. Descriptions are present and substantive (avg ~120 chars), exceeding the 20-char minimum. However, output schemas are undocumented, tool responses are wrapped generically as JSON text without field-level documentation. Parameter descriptions are adequate but lack actionable constraints (e.g., no guidance on importance range 0..1 semantics, no enum examples for memory types). Error handling uses a wrapper pattern (wrapTool) that catches exceptions and returns structured errors, but recovery guidance is minimal. Security is reasonable (no secrets in params), but tool composition could be tighter, memory_insert, memory_capture, and activity_log overlap in intent.
Log activity for a session (automatically captured as memories via the extractor).
Capture a memory with automatic type inference and importance scoring.
Export memories from a project or session as a portable JSON document.
Import memories from a portable JSON document (e.g. exported from another project).
Explicitly save a memory. Use for high-value facts, decisions, architecture notes, errors, solutions or progress.
Recall the most important memories for a project (or one session), sorted by importance.
Keyword search over project memories using SQLite FTS5 (BM25 relevance).
Output schemas undocumented. Tools return generic JSON text via okResult() wrapper without field-level documentation. LLMs cannot predict response structure or plan downstream tool chains.
Parameter constraints lack actionable guidance. 'importance' accepts 0..1 but no description explains semantics (0=trivial, 1=critical?). 'limit' and 'min_importance' have no bounds documented.
Tool composition overlap: memory_insert, memory_capture, and activity_log all save memories but with different semantics (explicit vs auto-inferred vs activity-based). Descriptions do not clarify when to use each.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
Hybrid search: BM25 keyword matches re-ranked with lexical token overlap and importance. Use when FTS5 exact matches are sparse.
Update an existing memory (content, type, importance, metadata).
Create a checkpoint capturing goal, current state, completed work, pending work, blockers and the next action for a session.
End a session as completed (default) or interrupted. May attach a final summary.
Start a MemoSaver session for a project. Closes any previous interrupted session. Returns a resume context when a previous session exists.
Inspect sessions. Returns a specific session, a project s sessions, or all sessions.
Chronological timeline of a session: checkpoints and memories.
Error handling returns generic error messages without recovery guidance. E.g., 'session not found' does not suggest calling session_status() to list available sessions.
Parameter descriptions for memory_type enum lack examples. LLMs may not understand when to use FACT vs DECISION vs CONTEXT without guidance.