Pi used to sell a sentence you could put on a sticker: no MCP. The June 2026 explainx.ai Pi guide repeated that table — skills, CLI READMEs, or an extension if you really wanted the protocol. On September 29, 2026, Earendil published “You Said No MCP!” and told people to upgrade.
MCP is now in the core. The interesting part is not the apology. It is Codemode: a harness-side JavaScript interpreter that treats MCP tools like functions you can loop, filter, and fan-out — the same trick Codex-style harnesses already use — without dumping every server's tool list into every turn.
What actually shipped
| Piece | Before (Pi as we documented it) | After Sep 29, 2026 |
|---|---|---|
| MCP | Explicitly omitted; extension or pi install | Supported in core |
| Why core, not extension | "Aggressive extensibility beats baked-in workflow" | Extension lacked tool-loadout metadata (deferred vs Codemode-only) |
| Codemode | Not a first-party story | JS sandbox on the harness side; auto-loaded when MCP is configured |
| Jev | Separate cheap classifier if you wired it | Example: Linear MCP + Jev inside one Codemode script |
| Philosophy | CLI + skills | Still CLI-first; MCP should look more like OpenAPI + discovery |
Earendil's own framing, paraphrased from the post: MCP of 2026 is not MCP of 2025. That alone would not have been enough. They already had an MCP extension. Core happened because Pi needed an interpreter sandbox anyway — for deferred tool loading, mid-conversation system messages, and reasoning-level changes — and MCP wanted the same object.
Mario Zechner and the Earendil crew are not claiming MCP is now easy to compose. The post still says composition is MCP's weak spot, and that servers returning walls of text for token-saving are the leftover problem. The bet is: if a small harness ships a good Codemode, server authors have somewhere to aim besides "dump 40 tools into Cursor."
What Codemode is (and is not)
A coding harness has two places work can run:
- Where bash runs — often sandboxed, untrusted, great at
jqand pipes. - Where the agent loop runs — trusted enough to hold session state, API tokens for MCP, and the transcript.
Codemode sits in (2). The model writes JavaScript. That script calls tools.mcp__linear__list_issues(...), fans out workers, stores intermediate arrays in the sandbox, and returns a small JSON blob to the model. Intermediate comments never become context.
That is different from:
- Direct tool calls (JSON/XML per turn, every hop is a model round-trip).
- Bash on the host (composable, but secrets and MCP OAuth do not live in
/usr/bin). - MCP-server-local "code mode" (each server has its own sandbox; they cannot call each other).
Earendil's example is the right demo of the last distinction. A prompt like "use typesafe/jev via codemode to find the 20 most frustrated commenters on our issue tracker" becomes: list Linear issues, classify comment threads with Jev four-wide, store("frustration", results), return counts. The model does not eat 167 issue threads.
You can enable Codemode without MCP as a default tool. Earendil's instruction is literally: ask Pi to reconfigure itself.
// Shape of the official demo — Linear MCP + Jev inside Codemode
const { issues } = await tools.mcp__linear__list_issues({
team: "Pi",
state: "open",
limit: 250,
});
const jev = await models.getModelOfType(
"classifier",
"cloudflare-workers-ai",
"typesafe/jev",
);
// workers classify in parallel; only the summary returns to the model
Do not cargo-cult that snippet into production without reading Pi's current docs — API names move. The pattern is the news: harness-side orchestration, transcript-backed state, MCP as functions.
Why HN cared (588 points, lots of CLI people)
The Hacker News thread on the Earendil post is the same fight as the Gemini 4 Argon / agy thread: is the protocol the product, or is bash?
Useful clusters, treated as comments not spec:
- MCP is for agents without a terminal (consumer ChatGPT/Claude, desktop connectors, Home Assistant-style UIs). A CLI you generated last week does not help there. See the architecture in What is MCP.
- Credentials. Putting the API key in the MCP process, not the model context, is the security story people actually buy. CLI-plus-proxy can do the same; most people will not build the proxy.
- Distribution. MCP Prompts-as-remote-
/-commands, HTTP telemetry, revoke-a-skill-without-git-pull. That is enterprise packaging, not a betterghCLI. Teams that already live in explainx.ai MCP servers and skills should read this as delivery, not as a reason to delete READMEs. - Context bloat. "MCP pollutes every turn" is still true in dump-all-tools clients. Codemode + deferred tools is Earendil's answer. If your host still inlines 80 tool schemas, Pi cannot save you.
- Bloat anxiety. Long-time Pi users (including the oh-my-pi crowd) worry the minimal loop is becoming "just another harness." Earendil says nothing new loads by default if you never configure MCP. Trust that until the next changelog; verify with
piafter upgrade.
Codemode is not a substitute for a Unix sandbox. Several comments asked whether Pi will run bash as a different OS user. The Sep 29 post does not ship Claude/Codex auto-approval. If you picked Pi because it is YOLO-in-a-container, keep the container.
What to do if you chose Pi for "no MCP"
If you are on upstream Pi for coding. Upgrade. Leave MCP unconfigured. Your AGENTS.md plus bash path still matches the agent harness guide. Codemode is optional.
If you were carrying a third-party MCP extension. Expect overlap. Diff your extension against core before you run both. Duplicate tool names are how you get two list_issues and a confused model.
If you need Linear / Trello / a vendor that will never give you a CLI. Configure MCP, let Codemode load, keep the tool list short. Prefer servers that return structured JSON, not markdown novels. Browse /mcp-servers; still review scopes.
If you mix Pi with Gemini Ultra / agy. The Argon HN thread's ban rumors are about routing a Google subscription through a non-Google harness. Pi's MCP change does not bless that. Keep provider accounts aligned with the harness ToS you actually clicked.
If you wanted OpenAPI instead of MCP. Earendil agrees in spirit ("closer to OpenAPI with intelligent tool discovery"). They shipped MCP because that is what servers and consumer clients speak in 2026. You can still point the model at an OpenAPI CLI; you do not get ChatGPT.com for free that way.
GLM / local models. The GLM-5.2-in-harnesses notes still apply: map effort, watch context. Codemode helps token cost when the alternative is 40 tool schemas. It does not shrink a 256k local window if you paste the JSON anyway.
Honest limitations
- Primary source is a product blog, not a semver changelog. Confirm flags in
pi.devdocs on the day you upgrade. - Composition is still "MCP servers' problem." Codemode cannot fix a server that only returns prose.
- No claim that core MCP is off by default in every install path (npm vs curl). Check after
pi update. - Hacker News is not a spec. OAuth, Prompts, and Resources support in Pi may lag Claude Code / Cursor. Earendil did not publish a client-compliance matrix in the reversal post.
- explainx.ai has not run the new core MCP in CI. This is a reading of the official post plus the public thread.
Bottom line
The June Pi story on explainx.ai was: own the scaffolding; omit MCP. The September 29 story is: own the scaffolding; MCP is now one of the boards. That is a reversal worth naming, and it is not a conversion to Claude Code.
Keep skills and CLIs for work you can grep. Turn on MCP+Codemode when the tool only exists as a server, or when you need to classify a hundred tickets without eating a hundred tickets. Keep the model swappable — the same rule we are applying to Gemini 4 Argon while Google still will not give you a public ID.
Related reading
- Pi: Mario Zechner's minimal coding agent (June 2026 guide) — still the onboarding path; MCP row is now dated
- What is an agent harness?
- What is MCP?
- oh-my-pi (omp)
- Gemini 4 Argon launch — agy vs the model
- GPT-Synopsys: OpenAI × Synopsys chip-design operator — another September 30 gated specialist that claims customer-harness interop and still requires traditional sign-off; keep the loop portable rather than baking the vendor model into every prompt template today
- OpenAI shifted 5–10% compute to monitoring — lab-side watchers are not a substitute for scoped MCP tools
- GLM-5.2 in coding-plan harnesses
- Claude enterprise managed auth / MCP
- Browse MCP servers · Skills · Loops
Sources
- Earendil — “You Said No MCP!” (September 29, 2026)
- Hacker News discussion
- pi.dev · What is a harness? (Earendil)
Earendil's MCP/Codemode behavior is described from the September 29, 2026 post. Package flags and default-on status can change in a later pi release — check pi.dev before you rewrite team config.
