AI Guides › Step-by-step guides
By Nigel Guy · 7 min read
Most people deal with Claude forgetting by re-explaining the project at the top of every chat, or by pasting in a long summary they wrote three weeks ago and never updated. It feels like continuity, but the important parts (the bug you already ruled out, the decision and why) fall out first. This guide sets up a plain text notebook on your own computer that Claude reads at the start of a session and updates at the end, connected through the official Filesystem MCP server.
The rule: memory you can open, read and correct beats memory you have to trust. Keep the project's state in one file you own, and make reading it and updating it the first and last thing every session does.
Claude's built-in memory is real and useful, but it is a summary Claude generates from your chats. You can view and edit it under Settings > Memory, and each Project gets its own separate memory space, according to Anthropic's help centre at time of writing. What it is not is a structured project log you control line by line. The notebook covers that gap: status, open problems, decisions and next steps, in a file you can version, back up, and read in any text editor.
It has two pieces:
| Piece | What it is | Why it matters |
|---|---|---|
| The notebook | One Markdown file per project, with fixed sections | Gives every session the same starting point |
| The connection | The Filesystem MCP server, limited to one folder | Lets Claude read and edit the file without you copying and pasting |
node --version in a terminal. The Filesystem server runs through npx.Documents/claude-notebooks. Do not point this at your whole home folder.Make the folder, then create a file named after the project, such as website-rebuild.md. Paste in this skeleton:
# Notebook: [PROJECT_NAME]
## What this project is
[Two or three sentences: goal, who it is for, what "done" looks like.]
## Current status
[One short paragraph. Overwritten every session.]
## Recent sessions
- [YYYY-MM-DD] [What was done, in one or two lines.]
## Known problems
- [Problem] — [what has been tried] — [current suspicion]
## Decisions so far
- [YYYY-MM-DD] [Decision] — because [reason]
## Next steps
1. [Most important next action]
Fill in "What this project is" yourself. Everything else Claude can maintain. "Decisions so far" is the section people skip and later regret: without the because, the next session will happily reopen an argument you already settled.
In Claude Desktop, use the Claude menu in your system menu bar (not the settings inside the chat window) and choose Settings.... Go to the Developer tab and click Edit Config. This creates or opens:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonThere is also a curated directory under Settings > Extensions that includes a filesystem option. Either route works; the config file is shown here because you can see exactly which folder you have granted.
If the file is empty, paste this, replacing the path with your notebook folder's absolute path:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/[YOUR_USERNAME]/Documents/claude-notebooks"
]
}
}
}
On Windows the path looks like "C:\\Users\\[YOUR_USERNAME]\\Documents\\claude-notebooks" (double backslashes). If the file already has an mcpServers block, add the filesystem entry inside it rather than replacing the lot. Paths must be absolute, not relative.
Quit Claude Desktop completely and reopen it. In a new chat, click the + ("Add files, connectors, and more") button in the bottom-left of the message box, hover Connectors, choose Manage connectors, and select filesystem. You should see tools such as read_text_file, edit_file, write_file and list_allowed_directories.
Fill in the project file name, then paste this as your first message (or put it in a Project's instructions so you do not have to):
You are my working partner on [PROJECT_NAME]. Our shared record lives in the file
[NOTEBOOK_FILENAME] inside my allowed notebook folder.
Before doing anything else:
1. Call list_allowed_directories, then read the notebook with read_text_file.
2. Give me a briefing of no more than eight lines: the current status, the top
open problem, the last decision made and the first item under Next steps.
3. Point out anything in the notebook that looks contradictory or out of date.
4. Ask me what today's session is for. Do not start work until I answer.
Rules: treat the notebook as the source of truth over anything you think you
remember. If the file is missing or empty, say so and stop — do not invent a
project history. Check before replying: did you actually read the file this
turn, and is every claim in your briefing traceable to a line in it?
We are wrapping up this session on [PROJECT_NAME]. Update [NOTEBOOK_FILENAME].
1. Draft the changes first and show them to me as a short list, grouped by
section. Do not write anything yet.
2. Proposed changes should: replace Current status; add one dated line to
Recent sessions (today is [TODAY'S_DATE]); add or close Known problems,
including what was tried; add any Decisions with a "because" reason;
rewrite Next steps as a numbered list, most important first.
3. Keep Recent sessions to the latest [NUMBER, e.g. 10] entries; move older
ones into a short "Archive" line at the bottom rather than deleting them.
4. Once I reply "approved", apply the edits with edit_file (use a dryRun first),
not write_file, so the rest of the file is untouched.
Do not record anything I did not confirm happened. Before applying, check:
does every new line describe something from this session, and is nothing
outside the listed sections changed?
Fill in the file name, today's date and how many session entries to keep.
.md file in a text editor. The changes should be there, dated, and nothing else should have moved.~/Library/Logs/Claude on macOS or %APPDATA%\Claude\logs on Windows (mcp.log and mcp-server-filesystem.log). You can also run the same npx -y @modelcontextprotocol/server-filesystem [FOLDER_PATH] command in a terminal to see the error directly.If you forget the read prompt, Claude starts from its general memory summary and whatever you type, which is exactly the default this guide replaces. If you forget the update prompt, the next session reads a stale file and briefs you confidently on last week's status, which is worse than no notebook at all. The update is the step that decays first, so make it a habit tied to closing the chat, not something you do "when there's time".
write_file. Edits to named sections are easier to review and harder to wreck.CLAUDE.md files and its own auto memory at the start of every session; use those instead.