Memory for coding agents: the decisions, the dead ends, and where the last session stopped.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Working memory for developers and their agents. Not a checklist β a log your next session can actually resume from.
An issue tracker is written human-to-human. todox is written agent-to-agent, with a human reading over its shoulder. Every task carries the decisions behind it, the approaches that failed, the questions still open, and the note the last session left behind.
A fresh agent calls get_context, reads that, and starts where the last one
stopped β without walking into a wall somebody already hit. The briefing is
capped rather than unbounded, in rows and in bytes, and it reports what the
caps left out instead of trimming in silence. Nothing is ever cut mid-sentence:
every record comes back named and dated with its first line, and a body of
null means the budget was spent, not that the record is empty.
| kind | what it means |
|---|---|
decision | what you chose, and why the alternatives lost |
dead_end | an approach that did not work β the highest-value entry, because it stops the repeat |
question | something only a human can answer |
handoff | end-of-session state, written for a stranger |
note | everything else |
Two things fall out of treating the log as the product:
get_context says the note may be lying.
Until an agent has actually looked, the note is marked as never checked
rather than claimed to be fresh: context that lies is worse than none, and
that includes lying about how sure we are.get_file_context takes a path and
answers with the tasks that touched it, their dead ends, and any standing
note attached to it. Paths are folded to their repo-relative form, so a link
made on one machine is found from another.todox.dev β anyone can register. Small personal deployment, no uptime promise. Self-host if the log matters to you.
todox is a remote MCP server. There is nothing to install and no repository to clone: point any MCP client at the URL with an agent token.
Create a token on the Account page and it hands you text you can paste straight into whichever agent you use, plus the config snippet for the four common ones. The shape is always the same β one URL, one header:
The MCP config key and the
typevalue differ per agent, and the wrong combination is silently ignored β no error, no warning, the tool just does not show up:
agent key typeClaude Code mcpServers.NAME"http"OpenCode v1 mcp.NAME"remote"OpenCode v2 mcp.servers.NAME"remote"Cursor mcpServers.NAME"http"VS Code (Copilot Chat) servers.NAME"http"Codex TOML [mcp_servers.NAME]n/a
Where those files live differs by platform, and VS Code is the one that is not where a Linux habit puts it:
| agent | macOS | Linux | Windows |
|---|---|---|---|
| Claude Code | ~/.claude.json | same | same |
| Cursor | ~/.cursor/mcp.json | same | same |
| Codex | ~/.codex/config.toml | same | same |
| OpenCode | ~/.config/opencode/opencode.json | same | same |
| VS Code | ~/Library/Application Support/Code/User/mcp.json | ~/.config/Code/User/mcp.json | %APPDATA%\Code\User\mcp.json |
Install it globally, not per project. Every one of these tools defaults to
the directory you are standing in β claude mcp add without a scope,
.cursor/mcp.json, .vscode/mcp.json β and a memory that only exists in one
repository is the opposite of the point. It also fails quietly: the tools
simply are not there in the next project, so the agent never mentions them.
Spell out "type": "http". A client that finds a url without one tends to
assume a local command and fails with something unhelpful.
Connecting is not the same as being used, and the gap is bigger than it looks.
An MCP server's instructions are background reading; a skill or a CLAUDE.md
rule is an instruction. When they disagree, the server loses β measured, in a
fresh project, with todox connected the whole time and never once called.
So put four lines in the memory file your agent actually obeys:
Or let the installer do it:
It is off unless asked, because that file is yours rather than ours, and it is
idempotent β the block is fenced with an HTML comment, so a second run replaces
it instead of leaving two sets of instructions where the older one wins. Add
--dry-run to see the exact block first.
The user-level file, not the project one. This is the same trap as the config above, one directory over:
| Agent | The file that applies everywhere |
|---|---|
| Claude Code | ~/.claude/CLAUDE.md |
| Codex | ~/.codex/AGENTS.md |
| Cursor | ~/.cursor/rules/todox.md |
| VS Code | ~/.copilot/instructions/todox.md |
| OpenCode | ~/.config/opencode/AGENTS.md |
A repository's own AGENTS.md, and the per-project rules files the editors also
read, apply inside that checkout only. A cross-project memory installed into one
project is the thing this whole section exists to avoid.
The token stays out of that file β it lives in your MCP config. This is the habit, not the credential.
The hosted server has no filesystem β but your agent does, and that is enough:
it sends the hash when it links a file and calls report_file_hashes with what
it finds afterwards, so staleness works over HTTP like anywhere else.
The stdio server does that part itself rather than asking. Worth running if you would rather not spend an agent's attention on it, or want the hashing to happen even when the agent forgets. There is nothing to clone:
Or as an MCP config, which is the form an agent wants:
There is no npm package, and that is a decision rather than a to-do. A
GitHub Release needs no account and no token to publish or to install from, so
the tarball is the whole distribution and npx takes its URL directly. The URL
above always resolves to the newest release; every release also carries a
todox-mcp-<version>.tgz if you would rather pin and choose when to move.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/todox)<a href="https://allmcps.com/mcp/todox"><img src="https://allmcps.com/api/badge/todox?style=directory" alt="Todox on AllMCPs" /></a>