Your AI agent forgets everything between sessions. This fixes that.
An MCP server that gives any AI agent persistent memory with semantic search. Store decisions, context, and knowledge once -- recall them with natural language queries across any future session.
Built on ChromaDB embeddings, scoped per project, runs entirely locally.
Every MCP-based agent (Claude Desktop, Claude Code, Cursor) starts each session with amnesia. Decisions made yesterday are gone. Context from last week is gone. You re-explain the same things every time.
mcp-memory adds four tools -- remember, recall, forget, list_memories -- that persist knowledge across sessions with vector similarity search. Your agent remembers what matters and finds it when relevant.
- Semantic recall -- vector embeddings (all-MiniLM-L6-v2) find related memories, not just keyword matches
- Per-project scoping -- memories don't leak between projects
- Importance scoring -- prioritize critical decisions (1-5 scale)
- Tag-based filtering -- organize memories by category
- Fully local -- ChromaDB on disk, no cloud, no API keys, no telemetry
pip install -e .| Environment Variable | Default | Description |
|---|---|---|
MCP_MEMORY_DATA_DIR |
~/.mcp-memory/ |
Where memories are stored on disk |
MCP_MEMORY_DEFAULT_PROJECT |
global |
Default project scope |
MCP_MEMORY_MAX_RESULTS |
10 |
Default number of recall results |
Add to ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"memory": {
"command": "mcp-memory",
"env": {
"MCP_MEMORY_DATA_DIR": "~/.mcp-memory"
}
}
}
}Add to .claude/settings.json:
{
"mcpServers": {
"memory": {
"command": "mcp-memory"
}
}
}Store a memory for later recall.
| Arg | Type | Default | Description |
|---|---|---|---|
content |
string | required | The text to remember |
project |
string | "global" | Project scope |
tags |
list[string] | [] | Tags for filtering |
source |
string | "" | Where this memory came from |
importance |
int | 3 | Priority 1-5 |
Search memories by semantic similarity.
| Arg | Type | Default | Description |
|---|---|---|---|
query |
string | required | Natural language search |
project |
string | all | Limit to project |
tags |
list[string] | none | Filter by tags |
n_results |
int | 10 | Max results |
min_relevance |
float | none | Minimum relevance 0.0-1.0 |
Delete stored memories.
| Arg | Type | Default | Description |
|---|---|---|---|
memory_ids |
list[string] | none | Specific IDs to delete |
project |
string | none | Delete all in project |
tags |
list[string] | none | Delete by tags |
Browse stored memories with pagination.
| Arg | Type | Default | Description |
|---|---|---|---|
project |
string | all | Filter to project |
tags |
list[string] | none | Filter by tags |
page |
int | 1 | Page number |
page_size |
int | 20 | Results per page |
pip install -e ".[dev]"
pytest # run tests
ruff check . # lint
ruff format . # format
mypy mcp_memory # type checkMIT