recall is the single entry point worth learning: it blends semantic, keyword and graph results in one call instead of making you choose. Memories are versioned rather than overwritten — invalidate soft-deletes and points at the replacement, and get_valid replays what was true at any timestamp you name.
A memory server written in Rust that ships as a single self-contained executable: SurrealDB, the embedding model and the graph all run inside the process, so there is no separate vector store or graph database to stand up.
- Store, update, list and delete memories, and pull any one of them back in full by ID
- recall as the default way in — it fuses vector, BM25 and graph hits through reciprocal rank fusion so you do not have to pick a search mode
- search_memory when you do want to pick: vector for semantic similarity, bm25 for exact keyword matching
- Point-in-time reads — get_valid takes an ISO 8601 timestamp and returns the memories that were valid then
- invalidate soft-deletes a memory with a reason and can link the memory that supersedes it
- Code indexing: index a directory once, then search it by meaning, by symbol name, or by walking the call graph from a symbol
- A knowledge graph you can write to — create entities and typed relations, fetch what is related at a given depth and direction, and detect communities
No account and no API key — the embedding model is baked into the binary and runs on CPU. The Docker path wants three things on the run command: a named volume at -v mcp-data:/data so the database and the ~1.2 GB model survive restarts, your code at -v $(pwd):/project:ro for indexing, and --init for a clean shutdown. Also published to npm as memory-mcp-1file.
One command — claude mcp add memory -- npx -y memory-mcp-1file
