CLAUDE.md vs an MCP memory server
They solve different halves of the problem. Most setups want both.
These get compared as alternatives, which is the wrong frame. One carries facts that stay true. The other carries state that changes. Choosing between them is usually a sign of trying to make one do the other job, which is exactly where both fail.
The one-line version
- Instruction file (
CLAUDE.md,AGENTS.md,.cursor/rules,.github/copilot-instructions.md): how this project works. Loaded automatically, costs nothing, you maintain it by hand. - MCP memory server: what happened last time. Read and written during the session by the agent, reachable from any client and any machine, needs a connection and possibly a subscription.
Where the instruction file wins
It is loaded before anything happens. No tool call, no decision by the agent about whether to look. If you need a rule obeyed from the very first message, such as never touching a directory or always running a particular test command, it has to be in the file. A memory server has to be asked, and an agent that does not think to ask gets none of it.
It is versioned with the code. It arrives with a clone, it shows up in review, and a teammate who has never heard of any of this still gets the benefit.
It has no dependencies. Nothing to sign into, nothing that can be down, nothing to pay for.
Where the instruction file fails
Nothing updates it. This is the whole problem. The moment it holds something time-sensitive, it starts drifting, because updating it competes with finishing the work and finishing always wins. A stale instruction file is worse than none, because the agent believes it without checking.
It is per-repo and per-client. It has nothing to say about the other projects you are midway through, and Codex will not read the one you wrote for Claude Code.
Where the memory server wins
It gets written without you. The agent records what happened at the end of a session as part of doing the work, so the update does not depend on anyone remembering at the worst possible moment.
It crosses boundaries a file cannot. Several projects at once, a desktop and a laptop, Claude Code in one window and Codex in another. MCP is the interface all of these clients share, so one server serves all of them.
It can answer questions the repo cannot. Which of nine projects was left mid-change, and what was the last thing decided about it. No single repository knows that.
Where the memory server fails
It has to be asked. If the agent does not call it, it may as well not exist, which is why servers worth using ship a standing instruction telling the agent when to read and write. That instruction goes in, of all places, your instruction file.
It is a dependency. A connection to configure, a service to trust with your project notes, and for hosted ones, a bill.
It is overkill for one project. If everything you do is in one repo on one machine, a handoff file and a session-start hook cover it completely and cost nothing. See keeping context between Claude Code sessions for how to set that up.
Four questions that decide it
- More than one project in flight? If no, you probably do not need a server.
- More than one machine? A file cannot follow you; a server can.
- More than one editor? Instruction files do not transfer between clients. MCP does.
- Do your notes keep going stale? If the honest answer is yes, the problem is that updating is manual, and no amount of rewriting the file fixes that.
Mostly "no" means write a good instruction file, add a HANDOFF.md, and stop there. Mostly "yes" is the case a memory server exists for.
The setup that actually works
Both, with a clear division of labour:
- Instruction file: project layout, commands, conventions, hard rules, plus one line telling the agent to read the board at the start of a session and record progress at the end.
- Memory server: what is in flight, what was decided, what is next, across every project.
The file makes the server get used. The server keeps the file from having to hold anything that goes stale. If you want to try the hosted version of the second half, Astryke Hub is built for exactly this split, and the docs cover connecting each client.
Common questions
What is the difference between CLAUDE.md and an MCP memory server?
CLAUDE.md is a static file you write by hand that the client loads at the start of every session. An MCP memory server is a service the agent can read from and write to during a session. The first carries facts that stay true; the second carries state that changes. They solve different halves of the problem and most setups want both.
Can an MCP memory server replace CLAUDE.md?
Not well. An instruction file is loaded before the agent does anything and costs no tool call, which makes it the right place for rules you want obeyed from the first message. A memory server has to be asked, so anything you need applied unconditionally belongs in the file. Keep the file and let the server carry state.
Why does my CLAUDE.md keep going stale?
Because updating it competes with finishing the work, and finishing always wins. The file has no mechanism to update itself, so it drifts the moment it contains anything time-sensitive. The fix is not more discipline, it is to keep only durable facts in the file and put changing state somewhere that gets written automatically.
Is a memory server worth it for a single project?
Usually not. One project on one machine is well served by an instruction file, a handoff note in the repo, and a session-start hook that reads it. That costs nothing and has no service to depend on. A memory server earns its place when state has to cross repos, machines or editors.
Do MCP memory servers work with editors other than Claude Code?
Yes, that is the main reason to use one. MCP is a shared protocol, so the same server is reachable from Claude Code, Codex CLI, Cursor, VS Code with Copilot and Devin Desktop. Instruction files are the opposite: each client reads its own filename and ignores the others.
What about privacy if the memory server is hosted?
A hosted server means your project notes sit on somebody else's machine, which is a real consideration and should be weighed rather than waved away. If that is a problem, a local memory server keeps everything on your own disk, and a handoff file in the repo keeps it inside your existing git remote, which you have presumably already decided to trust.
Last updated 2026-09-14.