
A Mem Mcp
- 34 repo stars
- Updated January 17, 2026
- DiaaAj/a-mem-mcp
a-mem-mcp is a MCP server that gives AI coding agents a self-evolving, ChromaDB-backed memory layer with pluggable LLM backends.
About
a-mem-mcp is a Model Context Protocol server that implements a self-evolving memory system for AI agents. developers shipping with Claude Code, Codex, or Cursor install it when conversations keep losing decisions, preferences, and project facts across threads. The server runs over stdio from the PyPI package, persists vectors in ChromaDB, and uses your chosen LLM backend to organize and refine what gets remembered. You configure embedding model, storage path, and whether you call OpenAI, Ollama, SGLang, or OpenRouter. It fits the agent-tooling lane: not a standalone app feature, but durable context that makes every later coding session faster and more consistent.
- Self-evolving memory store backed by ChromaDB with configurable local path (CHROMA_DB_PATH)
- Embedding pipeline via sentence-transformers (default all-MiniLM-L6-v2)
- LLM backends: openai, ollama, sglang, or openrouter with LLM_MODEL selection
- stdio PyPI package identifier a-mem at version 0.2.1
- OpenAI API key required when LLM_BACKEND=openai for memory consolidation
A Mem Mcp by the numbers
- Data as of Jul 7, 2026 (Skillselion catalog sync)
claude mcp add --env LLM_BACKEND=YOUR_LLM_BACKEND --env LLM_MODEL=YOUR_LLM_MODEL --env OPENAI_API_KEY=YOUR_OPENAI_API_KEY --env EMBEDDING_MODEL=YOUR_EMBEDDING_MODEL --env CHROMA_DB_PATH=YOUR_CHROMA_DB_PATH a-mem -- uvx a-memAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| repo stars | ★ 34 |
|---|---|
| Package | a-mem |
| Transport | STDIO |
| Auth | Required |
| Last updated | January 17, 2026 |
| Repository | DiaaAj/a-mem-mcp ↗ |
What it does
Give coding agents persistent, self-updating memory across sessions without rebuilding context from scratch each time.
Who is it for?
Best when you're running long-horizon agent workflows and want local vector storage and a choice of OpenAI or self-hosted LLM backends.
Skip if: Skip if you only need a single-session transcript or already centralize memory in a hosted product with its own MCP.
What you get
After you register the stdio server and set API keys, the agent can store and retrieve evolving memories so multi-session work stays aligned.
- Registered stdio MCP server in your agent config
- Persistent ChromaDB-backed memory the agent can read and update
- Configurable embedding and LLM backend for memory operations
By the numbers
- Server version 0.2.1 on PyPI identifier a-mem
- 4 LLM_BACKEND options: openai, ollama, sglang, openrouter
- Default embedding model all-MiniLM-L6-v2
README.md
A-MEM: Self-evolving memory for coding agents
mcp-name: io.github.DiaaAj/a-mem-mcp
A-MEM is a self-evolving memory system for coding agents. Unlike simple vector stores, A-MEM automatically organizes knowledge into a Zettelkasten-style graph with dynamic relationships. Memories don't just get stored—they evolve and connect over time.
Currently tested with Claude Code. Support for other MCP-compatible agents is planned.

Quick Start
Install
pip install a-mem
Add to Claude Code
claude mcp add a-mem -s user -- a-mem-mcp \
-e LLM_BACKEND=openai \
-e LLM_MODEL=gpt-4o-mini \
-e OPENAI_API_KEY=sk-...
That's it! A session-start hook installs automatically to remind Claude to use memory.
Note: Memory is stored per-project in
./chroma_db. For global memory across all projects, see Memory Scope.
Uninstall
a-mem-uninstall-hook # Remove hooks first
pip uninstall a-mem
How It Works
t=0 t=1 t=2
◉───◉ ◉───◉
◉ │ ╱ │ ╲
◉ ◉──┼──◉
│
◉
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━▶
self-evolving memory
- Add a memory → A-MEM extracts keywords, context, and tags via LLM
- Find neighbors → Searches for semantically similar existing memories
- Evolve → Decides whether to link, strengthen connections, or update related memories
- Store → Persists to ChromaDB with full metadata and relationships
The result: a knowledge graph that grows smarter over time, not just bigger.
Features
Self-Evolving Memory Memories aren't static. When you add new knowledge, A-MEM automatically finds related memories and strengthens connections, updates context, and evolves tags.
Semantic + Structural Search Combines vector similarity with graph traversal. Find memories by meaning, then explore their connections.
Peek and Drill
Start with breadth-first search to capture relevant memories via lightweight metadata (id, context, keywords, tags). Then drill depth-first into specific memories with read_memory_note for full content. This minimizes token usage while maximizing recall.
MCP Tools
A-MEM exposes 8 tools to your coding agent:
| Tool | Description |
|---|---|
add_memory_note |
Store new knowledge (async, returns immediately) |
search_memories |
Semantic search across all memories |
search_memories_agentic |
Search + follow graph connections |
search_memories_by_time |
Search within a time range |
read_memory_note |
Get full details (supports bulk reads) |
update_memory_note |
Modify existing memory |
delete_memory_note |
Remove a memory |
check_task_status |
Check async task completion |
Example Usage
# The agent calls these automatically, but here's what happens:
# Store a memory (returns task_id immediately)
add_memory_note(content="Auth uses JWT in httpOnly cookies, validated by AuthMiddleware")
# Search later
search_memories(query="authentication flow", k=5)
# Deep search with connections
search_memories_agentic(query="security", k=5)
Advanced Configuration
JSON Config
For more control, edit ~/.claude/settings.json (global) or .claude/settings.local.json (project):
{
"mcpServers": {
"a-mem": {
"command": "a-mem-mcp",
"env": {
"LLM_BACKEND": "openai",
"LLM_MODEL": "gpt-4o-mini",
"OPENAI_API_KEY": "sk-..."
}
}
}
}
Environment Variables
| Variable | Description | Default |
|---|---|---|
LLM_BACKEND |
openai, ollama, sglang, openrouter |
openai |
LLM_MODEL |
Model name | gpt-4o-mini |
OPENAI_API_KEY |
OpenAI API key | — |
EMBEDDING_MODEL |
Sentence transformer model | all-MiniLM-L6-v2 |
CHROMA_DB_PATH |
Storage directory | ./chroma_db |
EVO_THRESHOLD |
Evolution trigger threshold | 100 |
Memory Scope
- Project-specific (default): Each project gets isolated memory in
./chroma_db - Global: Share across projects by setting
CHROMA_DB_PATH=~/.local/share/a-mem/chroma_db
Alternative Backends
Ollama (local, free)
claude mcp add a-mem -s user -- a-mem-mcp \
-e LLM_BACKEND=ollama \
-e LLM_MODEL=llama2
OpenRouter (100+ models)
claude mcp add a-mem -s user -- a-mem-mcp \
-e LLM_BACKEND=openrouter \
-e LLM_MODEL=anthropic/claude-3.5-sonnet \
-e OPENROUTER_API_KEY=sk-or-...
Hook Management (Claude Code)
The session-start hook reminds Claude to use memory tools. It installs automatically with Claude Code, but you can manage it manually:
a-mem-install-hook # Install/reinstall hook
a-mem-uninstall-hook # Remove hook completely
Python API
Use A-MEM directly in Python (works with any agent or application):
from agentic_memory.memory_system import AgenticMemorySystem
memory = AgenticMemorySystem(
llm_backend="openai",
llm_model="gpt-4o-mini"
)
# Add (auto-generates keywords, tags, context)
memory_id = memory.add_note("FastAPI app uses dependency injection for DB sessions")
# Search
results = memory.search("database patterns", k=5)
# Read full details
note = memory.read(memory_id)
print(note.keywords, note.tags, note.links)
Research
A-MEM implements concepts from the paper:
A-MEM: Agentic Memory for LLM Agents Xu et al., 2025 arXiv:2502.12110
Recommended MCP Servers
How it compares
MCP memory integration, not a one-off brainstorming or planning skill.
FAQ
Who is a-mem-mcp for?
and small-team developers using Claude Code, Cursor, or Codex who need persistent, updating agent memory across coding sessions.
When should I use a-mem-mcp?
Use it while building your agent stack when repeated context loss is slowing implementation and you are ready to configure ChromaDB plus an LLM backend.
How do I add a-mem-mcp to my agent?
Install the PyPI package a-mem, set transport stdio in your MCP config, and provide OPENAI_API_KEY (if using OpenAI), LLM_BACKEND, LLM_MODEL, EMBEDDING_MODEL, and CHROMA_DB_PATH.