@mnemodb/mcp
The MnemoDB memory engine as an MCP server. Gives any MCP client — Claude Code,
Cursor, Windsurf, Claude Desktop — persistent memory stored in human-readable,
git-diffable .mem.md files.
claude mcp add mnemodb -- npx -y @mnemodb/mcp@latest
Why this and not built-in memory
CLAUDE.md and Claude's memory tool
already give agents memory. MnemoDB isn't a replacement — it's the structure
they don't provide: typed entries with lifecycle (TTL, supersession, compaction),
provenance and a trust model (entries the agent labels tool are flagged
untrusted and can't supersede or retire trusted ones), portability across tools, and auditable
Markdown files you can git diff. Worth it when the agent maintains memory
itself over many sessions, or you work across more than one tool. Full rationale:
https://github.com/mnemodb/mnemodb
Tools
Eleven memory-semantic operations — things a plain memory folder can't do:
memory_boot — always-loaded context (preambles + pinned entries); call at session start
memory_list — list the whole store (no query needed); browse everything
memory_recall — ranked retrieval for a query, with provenance + untrusted flag
memory_show — one entry in full: body, all metadata, lifecycle status
memory_history — an entry's supersession lineage (what it replaced / what replaced it)
memory_stats — the store's self-report: counts by type/scope/provenance, budget, staleness
memory_remember — store a typed entry (dedup, provenance stamping, supersession)
memory_forget — auditable soft-delete to the archive (recoverable; trust-gated)
memory_pin — set an entry's load tier (always/auto/cold); guards against pinning untrusted content
memory_review — stale entries, contradictions, budget status
memory_compact — the vacuum pass (dry-run by default)
Setup — Claude Code
claude mcp add mnemodb -- npx -y @mnemodb/mcp@latest
Or in .mcp.json at your project root:
{
"mcpServers": {
"mnemodb": { "command": "npx", "args": ["-y", "@mnemodb/mcp@latest"] }
}
}
The store is .memory/ in MNEMO_STORE if set, otherwise in CLAUDE_PROJECT_DIR
(Claude Code sets it for the MCP servers it launches), otherwise in the working
directory; pass --require-project-dir to make that last fallback an error. It
is created on the first memory_remember (or up front with
npx @mnemodb/cli init, optional). Then add a short instruction to CLAUDE.md
telling the agent to call memory_recall / memory_remember — see
https://github.com/mnemodb/mnemodb/blob/main/docs/USAGE.md
Security stance
memory_remember records src as agent (the default) or tool; it never
records user. The agent labels anything it took from tool output or a web
page — copied or paraphrased — as tool, which flags it untrusted on recall
(spec §10) and puts it under the guards: it can't be pinned to always, and
can't supersede or forget a higher-trust entry.
The label is self-reported. It makes the guards apply to honest saves; it does
not stop an injection that leaves the label off. user provenance comes only
from someone editing a .mem.md file directly, and the agent cannot forget
those entries.