
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
mcp-simple-memory
Advanced tools
Persistent memory for Claude Code via MCP. SQLite + optional semantic search. Zero native deps. Works on Windows/Mac/Linux.
Persistent memory for Claude Code. One command setup. Zero external databases.
Claude Code forgets everything between sessions. This MCP server gives it a local SQLite memory that persists across sessions - with optional semantic search powered by Gemini embeddings.
npx mcp-simple-memory init and restart Claude Codenpx mcp-simple-memory init
Restart Claude Code. You now have 7 tools: mem_save, mem_search, mem_get, mem_list, mem_update, mem_delete, mem_tags.
Get a free Gemini API key (1500 requests/day free tier), then edit .mcp.json:
{
"mcpServers": {
"mcp-simple-memory": {
"command": "npx",
"args": ["-y", "mcp-simple-memory", "serve"],
"env": {
"GEMINI_API_KEY": "your-key-here"
}
}
}
}
Without a key, keyword search works fine. With a key, vector search kicks in automatically when keyword results are sparse.
Session memory - Save summaries at the end of each session, pick up where you left off next time:
mem_save({ text: "Migrated auth from JWT to OAuth2. Tests passing.", type: "session_summary", project: "my-app" })
Technical decisions - Remember why you chose X over Y:
mem_save({ text: "Chose Postgres over MongoDB because we need transactions for payment flow", type: "decision", tags: ["database", "payments"] })
Error solutions - Never debug the same issue twice:
mem_save({ text: "CORS error on /api/upload fixed by adding credentials: 'include'", type: "error", tags: ["cors", "api"] })
Cross-session search - Find anything from previous sessions:
mem_search({ query: "authentication", tag: "api" })
mem_saveSave a memory with optional tags.
| Param | Required | Description |
|---|---|---|
| text | Yes | Content to save |
| title | No | Short title (auto-generated if omitted) |
| project | No | Project name (default: "default") |
| type | No | memory, decision, error, session_summary, todo, snippet |
| tags | No | Array of tags for categorization |
mem_searchSearch by keyword, meaning, tag, or type.
| Param | Required | Description |
|---|---|---|
| query | No | Search query (omit for recent) |
| limit | No | Max results (default: 20) |
| project | No | Filter by project |
| mode | No | keyword, vector, auto (default: auto) |
| tag | No | Filter by tag |
| type | No | Filter by type |
mem_getFetch full details by ID.
| Param | Required | Description |
|---|---|---|
| ids | Yes | Array of memory IDs |
mem_listList recent memories with optional filters.
| Param | Required | Description |
|---|---|---|
| limit | No | Max results (default: 20) |
| project | No | Filter by project |
| type | No | Filter by type |
| tag | No | Filter by tag |
mem_updateUpdate an existing memory.
| Param | Required | Description |
|---|---|---|
| id | Yes | Memory ID to update |
| text | No | New content |
| title | No | New title |
| type | No | New type |
| project | No | New project |
| tags | No | Replace all tags (pass [] to clear) |
mem_deleteDelete memories by IDs. Also removes embeddings and tags.
| Param | Required | Description |
|---|---|---|
| ids | Yes | Array of memory IDs to delete |
mem_tagsList all tags with usage counts.
| Param | Required | Description |
|---|---|---|
| project | No | Filter by project |
mem_save({ text: "Fixed auth bug", tags: ["bug"] })
|
v
SQLite (keyword index + optional Gemini embedding + tags)
|
v
mem_search({ query: "authentication problem" })
-> keyword match OR vector similarity
Already have notes, docs, or session logs? Import them:
# Import a single markdown file
npx mcp-simple-memory import CLAUDE.md --project my-app --tags setup
# Import all .md files in a directory
npx mcp-simple-memory import ./docs --tags documentation
# Preview without saving
npx mcp-simple-memory import ./notes --dry-run
# With embeddings (auto-generates during import)
GEMINI_API_KEY=your-key npx mcp-simple-memory import memory.md
Files are split by headings (#, ##, ###) into individual memories.
| Flag | Description |
|---|---|
--project <name> | Set project name (default: filename) |
--tags <t1,t2> | Add tags to all imported memories |
--dry-run | Preview without saving |
npx mcp-simple-memory stats
mcp-simple-memory stats
DB: ~/.mcp-simple-memory/memory.db
Memories: 42
Embeddings: 42/42 (100%)
Tags: 15 unique
Projects:
my-app: 30
default: 12
Add to your project's CLAUDE.md for automatic session continuity:
## Session Memory
- On session start: `mem_search` for recent session summaries
- During work: `mem_save` important decisions (type: "decision")
- On session end: `mem_save` a summary (type: "session_summary")
All data stays local on your machine:
~/.mcp-simple-memory/memory.dbMCP_MEMORY_DIR environment variable| mcp-simple-memory | Official Memory Server | Others (ChromaDB-based) | |
|---|---|---|---|
| Setup | npx one-liner | Config required | Python + Docker + DB |
| Storage | SQLite (WASM) | JSON file | External vector DB |
| Search | Keyword + Vector | Graph traversal | Vector only |
| Windows | Yes | Yes | Often broken |
| Dependencies | 2 (sdk + sql.js) | Varies | Many |
| Semantic search | Optional (Gemini free tier) | No | Required |
Just update - the database schema migrates automatically. Existing memories are preserved.
MIT
FAQs
Persistent memory for Claude Code via MCP. SQLite + optional semantic search. Zero native deps. Works on Windows/Mac/Linux.
We found that mcp-simple-memory demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.