TL;DR
By default Claude starts every session from zero - you re-explain who you are, the project, your tone, the decisions you already made. Two layers fix it: a short CLAUDE.md it reads on every session, and an MCP memory server it can write to and recall from. Set it up once and Claude shows up already knowing the context.
Claude wakes up empty every session
Every new conversation starts from nothing. You paste in who you are, the client, the tone, the brief - get a decent answer, close the tab, and do it all again tomorrow. That is not a limitation you have to accept; it is an architecture problem, and architecture problems have architecture fixes. The fix is a memory layer that sits between your sessions and a persistent store: Claude reads from it at the start and writes to it at the end.
The two layers that fix it
You need standing context that is always present, and recall that survives across sessions. Use both - they do different jobs.
- CLAUDE.md - your always-loaded layer. It loads with every chat, so it holds the things that never change: who you are, the project, your tone rules, your conventions. Keep it short; it is paid for on every session.
- An MCP memory server - your persistent layer. It stores facts, decisions and history as a knowledge graph Claude can query by meaning, and it survives between sessions so the next conversation picks up where the last one ended.
Set up the memory server
Anthropic's official MCP memory server. It gives Claude a persistent knowledge graph of entities, relations and observations it can read and write through tool calls - no cloud account, no extra subscription. It runs locally and stores its memory in a single JSON file you own and can back up.
Add it to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on Mac, %APPDATA%/Claude/claude_desktop_config.json on Windows), then restart Claude. The memory tools appear in Claude's tool list automatically.
claude_desktop_config.json{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"],
"env": {
"MEMORY_FILE_PATH": "/Users/YOU/claude-memory/memory.json"
}
}
}
}Three prompts that make memory work
Installing the server is half the job. The other half is teaching Claude when to read and write. Use these three in order when you set up a new memory context.
Prompt 1 - load memory at session startAt the start of this session, use your memory tools to retrieve
everything you know about [client / project / topic]. Summarise what
you find in 3-5 bullets before we begin. If you find nothing, tell me
so I can create the first record.Prompt 2 - write memory at session endBefore we close, use your memory tools to save: (1) any new facts you
learned about this client or project today, (2) any decisions we made,
(3) any open loops or next steps. Tag each record with today's date and
[client / project].Prompt 3 - make it automatic (put in CLAUDE.md)You have a persistent memory tool. At the start of every conversation,
silently retrieve context relevant to the user's first message - do not
announce it, just use it. At the end, write a concise record of what was
discussed, decided or learned, tagged [client:name] [project:name]
[date:YYYY-MM-DD].What to actually store
The stack is only as good as what you put in it. Most people store too little and then wonder why recall feels shallow. For every active client or project, store:
- How you communicate with them - preferred tone, response expectations, and any communication landmines.
- Why past decisions were made - not just what was decided, but the reasoning, so future sessions have the full picture.
- Open loops and unresolved questions, so the next session opens exactly where the last one ended.
- Voice and style notes - phrases they use, words they hate, the exact register they want.
- Workflow context - which tools they use, what their approval process looks like, who the decision-makers are.
Common questions
Does this cost anything to run?
No extra subscription. The official MCP memory server is free and open source, runs on your machine, and stores its memory in a local JSON file. The only spend is the Claude usage you were already paying for.
What is the difference between CLAUDE.md and the memory server?
CLAUDE.md is always-loaded standing context - the things that never change, paid for on every session, so keep it short. The memory server is persistent, queryable recall that grows over time and survives between sessions. Use both: CLAUDE.md for conventions, the server for facts and history.
Where does my memory data live?
On your machine, in the JSON file you point MEMORY_FILE_PATH at. Nothing leaves your computer, you own the data entirely, and you can back it up by copying one file.
Do I have to tell Claude to remember every time?
Not once you add Prompt 3 to your CLAUDE.md. That instruction tells Claude to read relevant memory at the start of each conversation and write a record at the end, automatically, without you asking.
The memory tools aren't showing up - what's wrong?
Almost always invalid JSON in the config - a missing comma breaks the whole file. Fix the JSON, restart Claude, then ask 'Do you have access to a memory tool?' to confirm. Make sure the folder in MEMORY_FILE_PATH exists.
What should I store first?
Client voice notes and the reasoning behind past decisions. That is where most of the value is - it is what makes Claude feel like a team member who already knows the account rather than a stranger you brief from scratch each day.
Want the full memory stack?
Get the other 1 in the memory stack - free, with 5,000+ builders.
Join the Club