🧠 claude-memory-mcp
Give Claude (and any MCP client) a persistent long-term memory. 100% local, no API key, no cloud.
LLMs forget everything the moment a conversation ends. claude-memory-mcp is a tiny
Model Context Protocol server that gives your assistant
a durable memory it can write to and search across sessions — so you stop re-explaining
your preferences, your stack, and your decisions every single time.
Everything runs on your machine. Memories live in a local SQLite file, and semantic
search uses a local embedding model (all-MiniLM-L6-v2) that runs in-process. No API key.
No data leaves your computer.
✨ Features
- Persistent memory across sessions, backed by a single SQLite file you own.
- Semantic search — recall by meaning, not just keywords, via local embeddings.
- Zero API keys / fully offline after the first model download.
- Works with any MCP client — Claude Desktop, Claude Code, Cursor, and more.
- Four simple tools:
save_memory,search_memory,list_memories,delete_memory. - Tiny & hackable — a few hundred lines of TypeScript.
🚀 Quick start
Claude Desktop
Add this to your claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json,
Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "claude-memory-mcp"],
"env": {
"MEMORY_DB_PATH": "~/.claude-memory/memories.db"
}
}
}
}
Restart Claude Desktop. You'll see the memory tools appear in the tools menu.
Claude Code
claude mcp add memory -- npx -y claude-memory-mcp
From source
git clone https://github.com/<you>/claude-memory-mcp.git
cd claude-memory-mcp
npm install
npm run build
node dist/index.js # speaks MCP over stdio
🛠️ Tools
| Tool | Description |
|---|---|
save_memory(content, tags?) |
Store a durable fact, preference, or decision. |
search_memory(query, limit?, min_score?) |
Semantic search over everything you've saved. |
list_memories(limit?, tag?) |
Browse recent memories, optionally by tag. |
delete_memory(id) |
Remove a memory by id. |
Example prompts
- "Remember that I prefer TypeScript with 2-space indentation." →
save_memory - "What do you know about my coding preferences?" →
search_memory - "List everything tagged
project-x." →list_memories
⚙️ Configuration
| Env var | Default | Description |
|---|---|---|
MEMORY_DB_PATH |
~/.claude-memory/memories.db |
Where the SQLite database is stored. |
MEMORY_EMBED_MODEL |
Xenova/all-MiniLM-L6-v2 |
Local embedding model (any @xenova/transformers feature-extraction model). |
🧩 How it works
save_memoryembeds the text with a local MiniLM model and stores the text, tags, and vector in SQLite.search_memoryembeds your query and ranks stored memories by cosine similarity — all in-process, no network calls.- The database is a plain SQLite file, so it's easy to back up, inspect, or sync yourself.
The first run downloads the embedding model (~25 MB) and caches it locally; every run after that is fully offline.
🔒 Privacy
Your memories never leave your machine. There is no telemetry and no external API. Delete the database file to wipe everything.
🤝 Contributing
Issues and PRs welcome! This project is intentionally small — good first issues include new storage backends, memory expiry/TTL, and export/import commands.
📄 License
MIT — see LICENSE.
No comments yet
Be the first to share your take.