KeepPlain MCP server
Commit Nov 11, 2026Preserves coding agent session history to prevent repetitive explanations and allows agents to learn from past mistakes and public solutions.
Also known as coders-talk/coders-talk-plugin, coders-talk-plugin
- Stars
- 4
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 1.0.0
- Last commit
- Nov 11, 2026
- License
- MIT
What is KeepPlain MCP?
KeepPlain preserves coding agent session history to prevent repetitive explanations and allows agents to learn from past mistakes and public solutions.
Summary generated from the project's README
About KeepPlain MCP server
Coders Talk, operating under the KeepPlain name, provides a way for developers to preserve coding agent session history so that AI models do not forget previous context or repeat mistakes. It works with several popular coding tools including Claude Code, Codex, Cursor, Pi, and Antigravity. Users can install it via a single file on macOS, Linux, or Windows without needing Node.js or administrator privileges. The system allows agents to search through past sessions to find previously solved problems or use the /keepplain:resume command to pick up a task in a different agent.
Beyond simple history, the tool identifies recurring errors and suggests rules to prevent them from happening again. It also features a handoff mechanism that helps users continue working in Codex or Pi if they approach the usage limits of Claude. Developers can use the keepplain blame command to see which specific agent session wrote a particular line of code, similar to how git blame works. For those looking for external help, the public library allows agents to check how other developers solved similar technical challenges.
What you can do with it
- 1Resume a task in a different agentA developer can pick up a coding task exactly where it left off by using a different AI client.
- 2Identify the origin of specific code linesYou can determine which AI session was responsible for writing a specific line of code in a file.
- 3Prevent recurring coding mistakesThe system analyzes your history to suggest rules that stop the agent from making the same errors twice.
- 4Bypass model usage limitsWhen approaching the weekly or hourly limits of Claude, you can transition the work to another model.
Written from the project's README. Every use case is checked against a quote from it.
How to install KeepPlain MCP
Formats verified 10 Nov 2026Install KeepPlain MCP in Claude Code
$ claude mcp add --transport http coders-talk-plugin https://coders.talk/mcpInstall KeepPlain MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"coders-talk-plugin": {
"url": "https://coders.talk/mcp"
}
}
}Install KeepPlain MCP in VS Code
.vscode/mcp.json
{
"servers": {
"coders-talk-plugin": {
"type": "http",
"url": "https://coders.talk/mcp"
}
}
}Install KeepPlain MCP in Codex
~/.codex/config.toml
[mcp_servers.coders-talk-plugin] url = "https://coders.talk/mcp"
Install KeepPlain MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"coders-talk-plugin": {
"httpUrl": "https://coders.talk/mcp"
}
}
}Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work
- Source repository linked and reachablecoders-talk/coders-talk-plugin is public and reachablegithub.com/coders-talk/coders-talk-plugin ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-11github.com/coders-talk/coders-talk-plugin ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeEndpoint did not answer initialize: HTTP 405Finding
README
View on GitHubKeepPlain
Your coding agent forgets everything when a session ends. KeepPlain keeps that history, so you stop explaining the same thing twice.
Works with Claude Code, Codex, Cursor, Pi and Antigravity. Free for personal use, teams pay per seat.
curl -fsSL https://keepplain.com/install.sh | sh # macOS and Linux
irm https://keepplain.com/install.ps1 | iex # Windows, in PowerShell
keepplain login
keepplain enable
One file, no Node.js, no sudo. enable says what it found and asks before it changes anything. More ways to install
What it does
Find what you already solved. Your agent searches the sessions you sent to KeepPlain and opens the turn with the answer. /keepplain:resume picks a task up in another agent.
Stop correcting it twice. Once a day a model reads your sessions and suggests the mistakes that came back in two conversations or more. Add one in a click and your agents get it at the start of a session or with the prompt it matters for. Rules
Keep going at the limit. Past 90% of Claude's 5-hour or weekly limit, you get a button to continue in Codex or Pi. The brief is built on your computer without a model, and it needs no sign-in. Handoff
See which session wrote a line. keepplain blame <file> is git blame with the agent session behind each line. Blame
● Claude Code · Harden the webhook 4 │ const TOLERANCE_SEC = 300;
○ Pi · Seat count sync 19 │ await syncSeats(event.data, { lock: 'team' });
● Codex · maya, private 22 │ await markPaid(event.data.id, { notify: true });
no session found 25 │ return new Response('ok');
Learn from other people's sessions. Before a hard task, or when it's stuck, your agent can check the public library for how others got past the same problem. Library
What leaves your computer. Sessions are sent only when you run /keepplain:build and confirm, or after you turn on auto mode. They are stored on keepplain.com as private drafts, and nothing is public until you publish it on the site. Secrets are replaced on your computer before anything is sent. That check works by patterns and can miss things, so read the preview. This plugin is MIT, the site is not open source. The full list
Install
From a terminal
curl -fsSL https://keepplain.com/install.sh | sh # macOS and Linux
irm https://keepplain.com/install.ps1 | iex # Windows, in PowerShell
keepplain login
This installs keepplain, one file with no Node.js needed, into ~/.keepplain/bin and adds that folder to your PATH (the rc file of your shell; on Windows the user PATH). The installer takes the file for your platform from this repository's releases and checks it against the release's SHA256SUMS. No sudo or administrator rights. KEEPPLAIN_VERSION=0.16.0 installs that version, KEEPPLAIN_NO_MODIFY_PATH=1 leaves PATH alone.
keepplain login waits in the terminal until you press Connect in the browser; over SSH it prints the link and the code to open elsewhere. keepplain update replaces the file with the latest release after checking its SHA256. A command you type mentions a newer release in one line, at most once a day; it never waits for the network to do so, and hooks never check. KEEPPLAIN_NO_UPDATE_CHECK=1 turns that off.
Then keepplain enable connects Claude Code, Codex, Cursor and Pi to it. It says what it found and what it will do, asks, and then installs the plugin through each agent's own plugin system: it lays the plugin out in ~/.keepplain/plugin and adds that folder as the local marketplace keepplain-local (claude plugin marketplace add, claude plugin install keepplain@keepplain-local; codex plugin marketplace add, codex plugin add), and installs Pi's package from it with pi install. Cursor has no command that installs a plugin, so it gets what the plugin is made of as files of its own folder, ~/.cursor, next to whatever is there: the hooks in hooks.json, the commands as skills in skills/keepplain-* and the library in mcp.json. Only what is ours is ever changed in them, and a file it cannot read (comments, a syntax error) is left as it is and the lines to add are printed. It is the same plugin as the one below, but its hooks and skills call keepplain by its absolute path, so no Node.js is needed and desktop apps find it without your shell's PATH. On the way it:
- replaces the plugin from the GitHub marketplace (
keepplain@keepplain), or Pi's git package (pi install git:github.com/keepplain/keepplain-plugin), whose hooks would otherwise run twice; - leaves the plugin from Claude's plugin directory (
keepplain@synced) as it is, and says what it lacks. That copy has no hooks: alone, it gets no copy of ours next to it, so Claude Code has no auto mode, rules or snapshots until you remove it on claude.ai and runenableagain. Next to a copy with hooks, that copy stays too. The directory's copy is removed on claude.ai, not bydisable; - finds a KeepPlain MCP server you added by hand (
claude mcp add,mcp_serversin Codex'sconfig.toml, an entry in~/.cursor/mcp.json) and removes it, or keeps it and installs the plugin without its own server for that agent; - asks once about auto mode for every agent it found (off unless you say otherwise). Codex runs the hooks only after you trust them in
/hooks;enabledoes not do that for you. Cursor and Pi need nothing of the kind; - in a git repository, asks whether to put the KeepPlain git hooks into it (no, unless they are there already; see Git hooks);
- asks once whether to import your sessions of the last 30 days to your private drafts (yes, unless you say no; see Past sessions).
keepplain enable --yes goes ahead without asking, with --agent=claude-code,codex,cursor,pi, --auto=off|on|team|push, --mcp=remove|keep, --git-hooks, --no-git-hooks or --no-trailers, and --import-past (with --import-days=N) for the answers; without --import-past it imports nothing. keepplain status shows the file, the sign-in, each agent's KeepPlain plugins and auto mode, and the git hooks of the repository you are in. keepplain disable uninstalls the plugin and its marketplace from Claude Code and Codex, removes Pi's package, takes the hooks, skills and library entry it wrote out of ~/.cursor, and takes the git hooks out of every repository enable put them in; the sign-in, your settings and the file stay. keepplain update lays the plugin out again in the new version and updates it in the agents, so the plugin's version is always the file's.
To send a session without going back into it, run keepplain sessions in the folder it ran in (or keepplain sessions --all anywhere, for every project's sessions of the last 30 days): it lists that folder's Claude Code, Codex, Cursor and Pi sessions (also those run at the top of its repository), newest first, with how many prompts each has, the start of the first one and whether it was sent already. keepplain build 2 then shows the same summary and privacy check as /keepplain:build, asks [y/N] and sends; keepplain build alone takes the newest session, and a session id works too. It takes the same options (--private, --team=<slug>, --keep=<numbers>, --continues=<link>). It runs only in a terminal: neither an agent nor a script can answer its question, and there is no --yes. From a script, keepplain preview <id> and keepplain send <id> (with --agent=codex, --agent=cursor or --agent=pi for the others) do the two steps.
A KeepPlain connector your organisation added in claude.ai is not visible on your computer, so enable cannot find it. If the agent then lists the library's tools twice, turn one of the two servers off in /mcp.
Programs read the commands with --json: status, sessions, preview, send, discard, login, whoami, logout, enable, disable, auto, rules, nudge, privacy and import-past print one JSON object a line, the long ones an {"event": …} per step, and a failure as {"error": "…"} on stdout. The preview's findings come by number and kind only, never a value. login --json waits for Connect until the code expires.
The desktop app
KeepPlain app is a window over the same commands for macOS and Windows: a three-step welcome (the agents found, sign-in, enable, with a tick, on by default, for the import of past sessions), the agents with a switch each, the last session sent, every project's recent sessions (sessions --all) with a confirmation screen before each send, and the settings. It carries a released keepplain file and installs it in ~/.keepplain/bin when that one is missing or older.
From Claude's plugin directory
KeepPlain is submitted to Claude's plugin directory and not listed yet. The directory takes command hooks, header helpers and mods only from Verified organizations, so it gets a smaller copy of the plugin, made from this repository by scripts/directory.mjs: the skills and the library, without auto mode, git snapshots, rules in every session or the handoff offer, and without the commands that set things up (enable, update, the git hooks). It says what it runs and sends in its own README, and the directory reads it from the branch directory.
Once it is listed: on claude.ai or in the Claude desktop app, open Customize → Plugins, find KeepPlain and press Add, then start a new session; the desktop app runs the plugin's scripts with Node.js 20 or newer. Claude Code in a terminal gets it too when it is signed in with the same account, as keepplain@synced. Then /keepplain:login as below; the library's tools sign in on their own, in /mcp. Keep one copy: next to the others it only repeats their commands. keepplain enable leaves it and puts none of its own next to it, and for the hooks you remove it on claude.ai and run enable again.
From the agent
-
In Claude Code:
/plugin marketplace add keepplain/keepplain-plugin /plugin install keepplain@keepplain -
Connect it to your account:
/keepplain:login. It opens KeepPlain in the browser; check that the page shows the same code as Claude Code and press Connect. The plugin receives its token directly from the site and keeps it in~/.keepplain/credentials.json, readable by you only. There is no token to copy, and it never passes through the chat. The sign-in request names only the program asking (Claude Code,Codex,Cursor,PiorKeepPlain CLI) and its version, not your computer; the site lists the token under that name in Settings → Agent plugins.
Needs Node.js 20 or newer, nothing else.
Codex
codex plugin marketplace add keepplain/keepplain-plugin
codex plugin add keepplain@keepplain
Start a new session, then $keepplain:login and $keepplain:build (the same commands as below, with $ instead of /). For the library, also run codex mcp login keepplain once in a terminal. Codex asks to run the plugin's command outside its sandbox: it needs the network to reach KeepPlain and your home folder for the sign-in. The session is found through CODEX_THREAD_ID in ~/.codex/sessions (or CODEX_HOME), and HEAD at its start comes from the rollout's session_meta, so Codex needs no hook for it. Codex runs the plugin's hooks only for auto mode (see Auto mode), and only once you trust them in /hooks.
Cursor
keepplain enable (above) is the way in: Cursor has nothing that installs a plugin from a script, so it writes the plugin into ~/.cursor, where the IDE and the agent CLI read it at every start. hooks.json gets four hooks (sessionStart, beforeSubmitPrompt, stop and sessionEnd, each running keepplain hook cursor <event>), skills/keepplain-<name>/SKILL.md the commands, and mcp.json the library. Restart Cursor (or run "Developer: Reload Window"), press Connect for keepplain in Settings → MCP, then type /keepplain-login and /keepplain-build: the commands below with a hyphen for the colon, since a skill's name in Cursor cannot hold one.
Cursor's transcript of a conversation (~/.cursor/projects/<folder>/agent-transcripts/<id>/<id>.jsonl) has the prompts, the answers and the tool calls, but no tool results, no token counts and no time but the minute. The hooks add what it lacks: beforeSubmitPrompt and stop note the time of each turn, the model, the tokens of each answer and which conversation each workspace is in (in ~/.keepplain/cursor/: times and counts, never the text), so keepplain preview finds the conversation of the folder it runs in without being told. What each turn changed comes from the agent's own edit calls and the git snapshots. Cursor does not always call sessionEnd (a closed window, a crash): the next sessionStart sends what was left.
Pi
keepplain enable installs it with pi install. From this repository instead, without the file:
pi install git:github.com/keepplain/keepplain-plugin
That runs the scripts with Node.js, which Pi needs itself (22.19 or newer). Type /reload or start Pi again, then /keepplain:login and /keepplain:build. The plugin is one extension (pi/extensions/keepplain.js, named by the pi key of package.json). Its commands run in Pi's own process, so nothing of them lands in the session, and the question "Send this session?" is Pi's own dialog. Its events (session_start, agent_start, agent_settled and session_shutdown) run the same hooks the other agents have: auto mode, the git snapshots and the suggestion to share. The session is the file Pi keeps in ~/.pi/agent/sessions (or where PI_CODING_AGENT_DIR, PI_CODING_AGENT_SESSION_DIR or the sessionDir setting put it); the extension tells keepplain which one, as Pi does for the commands it runs itself (PI_SESSION_ID, PI_SESSION_FILE). Pi has no MCP, so the extension registers the library's three tools itself; they ask the site through keepplain mcp-call with your sign-in. A fork (/fork, /clone) is a new file that names its parent: it is sent as its own draft, linked to the original. Pi reads a repository's own .agents/skills (where use puts a playbook) only in a project you trusted.
One repository
One repository serves all four agents: Claude Code reads .claude-plugin/ and skills/, Codex reads .codex-plugin/, .agents/plugins/marketplace.json, codex/skills/ and codex/hooks.json (its manifest points there, so Codex never picks up hooks/hooks.json; the same scripts run with --agent=codex), Pi loads the extension the pi key of package.json names, and cursor/skills/ holds the skills enable copies into ~/.cursor. Codex does not expand ${CLAUDE_PLUGIN_ROOT} or ${CLAUDE_SESSION_ID} in skills, so its skills give the script path relative to the skill file and pass --agent=codex.
Claude Code on the web
A session on claude.ai/code keeps its whole transcript in its cloud machine (~/.claude/projects/… there). Teleporting it to your computer brings only the part after its last compaction, so /keepplain:build there sends a long session without its beginning. The cloud machine installs no plugins, though, and reaches KeepPlain only when its environment allows it. So a cloud session sends itself another way, with nothing to set up in the environment:
- Connect the KeepPlain connector in claude.ai (connector settings). The same connector gives the agent the library. A connection made before connectors could send sessions can only read: disconnect and connect it again (the upload tools say so).
- Add the KeepPlain skill: download
keepplain-skill.zipfrom the latest release and upload it in claude.ai's skills settings. Cloud sessions load the skills you enable on claude.ai by themselves. - In a cloud session, ask: "send this session to KeepPlain" (or, with this plugin on your claude.ai account,
/keepplain:build: in a cloud machine with no token of its own it takes the same route by itself). The skill runs this plugin's script in the cloud machine: it finds the session (the newest transcript there), shows what goes and what the privacy check found, and asks. Then the connector'sstart_session_uploadhands out a one-time upload link (15 minutes) in the site's storage (Cloudflare R2, which the cloud's default network list allows),keepplain send --connector --upload=<link>puts the session there, andfinish_session_uploadmakes the draft and returns its link.
The skill is built by node scripts/skill.mjs (dist/keepplain-skill.zip: its SKILL.md is web-skill/SKILL.md), and each release carries it.
The proxy of a cloud machine looks inside TLS with its own CA. The plugin trusts it from SSL_CERT_FILE, REQUESTS_CA_BUNDLE, CURL_CA_BUNDLE, the system store (Node 22.15 and newer) or ~/.ccr/ca-bundle.crt, where Claude Code on the web keeps it, on top of Node's own CAs and NODE_EXTRA_CA_CERTS. Where KeepPlain itself is refused by a proxy, the plugin says so and, in Claude Code on the web, which environment setting lets it through.
Coming from Coders Talk
KeepPlain was called Coders Talk until October 2026, and the plugin does not take the old one over: take it off first, or its hooks run next to the new ones.
coders-talk disabletakes it out of Claude Code, Codex, Cursor and Pi.- Delete
~/.coders-talkand the# Coders Talk CLIline in your shell profile (on Windows,%USERPROFILE%\.coders-talk\binin your PATH). - If you added Coders Talk from Claude's plugin directory, remove it in Customize → Plugins; the Coders Talk desktop app, in Settings → Apps.
- The new plugin leaves the old blocks alone: delete
<!-- coders-talk:… -->blocks in CLAUDE.md or AGENTS.md and# >>> coders-talkblocks in git hooks.
Then install as above and sign in again with /keepplain:login (or keepplain login).
KeepPlain MCP questions
How do I add KeepPlain MCP to Claude Code?
Run claude mcp add --transport http coders-talk-plugin https://coders.talk/mcp in your terminal. Add --scope user to make it available in every project.
How do I add KeepPlain MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Which AI agents are supported?
KeepPlain works with Claude Code, Codex, Cursor, Pi, and Antigravity.
Is my data private?
Sessions are only sent when you run a build command and confirm, or if you enable auto mode. They are stored as private drafts and nothing is public until you publish it.
Can I see which agent wrote a specific line of code?
Yes, using the keepplain blame <file> command, which functions like git blame but shows the specific agent session behind each line.