Adds persistent memory to Claude Code by automatically saving and retrieving conversation context across sessions. Uses vector embeddings to store two types of knowledge: episodes (full conversation sessions with summaries) and entities (extracted decisions, preferences, and concepts). Integrates via hooks in Claude Code's settings.json to auto-save messages on UserPromptSubmit and Stop events, then injects relevant history from past sessions as context. Exposes tools like memory_recall for semantic search, memory_add_entity for manual knowledge capture, and memory_start_episode for session management. Storage splits between user-level (~/.claude-memory) for cross-project preferences and project-level (.claude/memory) for project-specific decisions. Requires a one-time 400MB model download and Python 3.10-3.13. Useful when you want Claude to remember architectural decisions, coding preferences, or project context without re-explaining everything each session.
A persistent memory MCP service for Claude Code. Automatically saves conversations and retrieves relevant history across sessions.
What it does: Every time you chat with Claude Code, your conversation context (decisions, preferences, key discussions) is saved and automatically recalled in future sessions — so Claude always has the background it needs.

Install uv (Python package runner):
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Requires Python 3.10 - 3.13 (chromadb is not compatible with Python 3.14+).
Download the vector model (~400MB, one-time):
uvx --from chenxiaofie-memory-mcp memory-mcp-init
claude mcp add memory-mcp -s user -- uvx --from chenxiaofie-memory-mcp memory-mcp
Hooks enable fully automatic message saving. Without hooks, you need to manually call memory tools.
Add the following to ~/.claude/settings.json:
{
"hooks": {
"SessionStart": [{
"matcher": ".*",
"hooks": [{ "type": "command", "command": "uvx --from chenxiaofie-memory-mcp memory-mcp-session-start" }]
}],
"UserPromptSubmit": [{
"matcher": ".*",
"hooks": [{ "type": "command", "command": "uvx --from chenxiaofie-memory-mcp memory-mcp-auto-save" }]
}],
"Stop": [{
"matcher": ".*",
"hooks": [{ "type": "command", "command": "uvx --from chenxiaofie-memory-mcp memory-mcp-save-response" }]
}],
"SessionEnd": [{
"matcher": ".*",
"hooks": [{ "type": "command", "command": "uvx --from chenxiaofie-memory-mcp memory-mcp-session-end" }]
}]
}
}
claude mcp list
You should see memory-mcp: ... - ✓ Connected.
That's it! Start a new Claude Code session and your conversations will be automatically saved and recalled.
Session Start ──► Create Episode ──► Monitor Process (background)
│
User Message ──► Save Message ──► Recall Related Memories ──► Inject Context
│
Claude Reply ──► Save Response │
│
Session End ──► Close Signal ──► Archive Episode + Generate Summary
Once hooks are configured, everything is automatic. Claude will see relevant history from past sessions as context.
You can also call memory tools directly in Claude Code:
# Start a new episode
memory_start_episode("Login Feature Development", ["auth"])
# Record a decision
memory_add_entity("Decision", "Use JWT + Redis", "For distributed deployment")
# Search history
memory_recall("login implementation")
# Close episode
memory_close_episode("Completed JWT login feature")
| Hook | What it does | Timing |
|---|---|---|
| SessionStart | Creates a new episode | ~50ms |
| UserPromptSubmit | Saves user message + retrieves related memories | ~1-2s |
| Stop | Saves assistant response | ~1s |
| SessionEnd | Signals episode closure | ~50ms |
| Tool | Description |
|---|---|
memory_start_episode | Start a new episode |
memory_close_episode | Close and archive current episode |
memory_get_current_episode | Get current active episode |
memory_add_entity | Add a knowledge entity |
memory_confirm_entity | Confirm a detected entity candidate |
memory_reject_candidate | Reject a false detection |
memory_deprecate_entity | Mark an entity as outdated |
memory_get_pending | List pending entity candidates |
memory_recall | Semantic search across episodes and entities |
memory_search_by_type | Search entities by type |
memory_get_episode_detail | Get full episode details |
memory_list_episodes | List all episodes chronologically |
memory_stats | Get system statistics |
memory_encoder_status | Check vector encoder status |
memory_cache_message | Manually cache a message |
memory_clear_cache | Clear message cache |
memory_cleanup_messages | Clean up old cached messages |
| Type | Level | Description |
|---|---|---|
Decision | Project | Technical decisions for this project |
Architecture | Project | Architecture designs |
File | Project | Important file descriptions |
Preference | User | Personal preferences (shared across projects) |
Concept | User | General concepts |
Habit | User | Work habits |
~/.claude-memory/{project-root}/.claude/memory/If you need to run from source (e.g., for development):
git clone https://github.com/chenxiaofie/memory-mcp.git
cd memory-mcp
# Windows:
install.bat
# Mac/Linux:
chmod +x install.sh && ./install.sh
Then configure MCP server with the venv Python:
# Windows:
claude mcp add memory-mcp -s user -- "C:\path\to\memory-mcp\venv310\Scripts\python.exe" -m memory_mcp.server
# Mac/Linux:
claude mcp add memory-mcp -s user -- /path/to/memory-mcp/venv310/bin/python -m memory_mcp.server
MIT License - see LICENSE file for details.
CLAUDE_PROJECT_ROOT项目根目录路径
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent