MCP server for persistent, semantic memory across AI sessions. Store context, decisions, and learnings — recall them later with natural language search.
AI assistants forget everything between sessions. Collective Memory fixes that. Store what matters, search by meaning, build context that compounds.
- Semantic search — Find memories by meaning, not keywords (OpenAI embeddings + LanceDB)
- Automatic deduplication — Won't store near-duplicates (>95% similarity)
- Project scoping — Organize memories by project
- Type classification — Categorize as
decision,milestone,context,learning, orsession_summary - Zero config storage — Embedded vector database, no server required
npm install -g collective-memoryOr clone and build:
git clone https://github.com/Hustada/collective-memory.git
cd collective-memory
npm install
npm run buildRequired for embeddings. Get one at platform.openai.com.
Add to ~/.claude/settings.json under mcpServers:
{
"mcpServers": {
"collective-memory": {
"type": "stdio",
"command": "npx",
"args": ["collective-memory"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}Or if installed from source:
{
"mcpServers": {
"collective-memory": {
"type": "stdio",
"command": "node",
"args": ["/path/to/collective-memory/dist/index.js"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}Add to your global ~/.claude/CLAUDE.md:
## Memory
Collective Memory is active. Two tools:
- `remember(content, project?, type?, tags?)` — Persist important context
- `recall(query, project?, type?, limit?)` — Search memory
**On session start**: Run `recall("recent decisions and context")` to load relevant memory.
When to remember: after decisions, milestones, completed work, learned patterns.
When to recall: session start, context switches, referencing past work.
Types: decision, milestone, context, learning, session_summary.Store a memory with semantic embedding.
| Parameter | Type | Required | Description |
|---|---|---|---|
content |
string | yes | The memory to store — be specific and self-contained |
project |
string | no | Project context (e.g., "myapp", "client-x") |
type |
string | no | One of: decision, milestone, context, learning, session_summary |
tags |
string[] | no | Tags for categorization |
Returns the stored memory ID, or existing ID if deduplicated.
Search memories by semantic similarity.
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | yes | Natural language search query |
project |
string | no | Filter to specific project |
type |
string | no | Filter to specific memory type |
limit |
number | no | Max results (default: 10) |
Returns array of matching memories with similarity scores.
Also usable from command line:
# Store a memory
collective-memory remember --content "Decided to use PostgreSQL for the auth service"
# Search memories
collective-memory recall --query "database decisions" --limit 5
# Pipe content from stdin
echo "Long content here" | collective-memory remember --content-stdin --project myapp| Environment Variable | Default | Description |
|---|---|---|
OPENAI_API_KEY |
(required) | OpenAI API key for embeddings |
COLLECTIVE_MEMORY_PATH |
~/.collective-memory/data |
Storage location |
- Store: Content is embedded using OpenAI's
text-embedding-3-small(768 dimensions) - Dedupe: Before storing, checks for >95% similar existing memories
- Index: Stored in LanceDB, an embedded vector database
- Search: Queries are embedded and matched via cosine similarity
Memories are stored locally at ~/.collective-memory/data (or COLLECTIVE_MEMORY_PATH). It's a LanceDB database — portable, no server process.
To export memories:
npm run export # Outputs to viz/memories.jsonTo visualize:
npm run dash # Opens UMAP visualization at localhost:3333MIT
Built by The Victor Collective.