Search Agent Sky
← Back to search Memory Lane Recent answers
Cited source trail
Pi.dev: You Said No MCP
Original question
Investigate this live topic: Pi.dev: You Said No MCP. Start with https://earendil.com/posts/you-said-no-mcp and browse beyond it. Summarize what changed, why it matters, and cite the strongest sources.
Sources checkedearendil.comnewreleases.iopi.devgithub.com
Next step

Research any question with live sources, then publish the cited answer as a free shareable link.

# Pi.dev: "You Said No MCP" — What Changed and Why It Matters ## The headline change Earendil (the company behind the **Pi** coding agent) reversed its long-standing public position and **moved MCP (Model Context Protocol) into Pi's core**. The company's own post, ["You Said No MCP!"](https://earendil.com/posts/you-said-no-mcp) (dated Sept 28–29, 2026), opens by acknowledging the contradiction directly: *"If you went to pi.dev in the past, you found a proud declaration that Pi does not support MCP... And yet, if you upgrade to Pi you will find MCP is now a supported piece of functionality. What happened?"* The change is visible on the [pi.dev homepage](https://pi.dev) itself, where the old "**No MCP**" label now reads "**Now with MCP+Codemode** — MCP is built in, and Codemode lets agents compose tool calls in a JavaScript sandbox. MCP extensions are still supported too. Why we changed our minds." ## What exactly changed Per the [Pi v0.99.0 release notes](https://newreleases.io/project/github/earendil-works/pi/release/v0.99.0), the release **added codemode, tool search, and MCP support as built-in extensions**: - **MCP servers** over stdio or streamable HTTP, with OAuth, configured via `mcp.json` (global or per-project) or `pi.registerMcpServer()`, and managed with `/mcp` and `pi mcp add|remove|list|login|logout`. - **Codemode** — a tool that "runs model-written JavaScript in a **QuickJS sandbox** that calls pi's tools," configurable via `codemode.mode` and `codemode.inlineBudget`. - **Tool search** — finds tools not declared to the model and declares them on demand. - New **tool-exposure APIs** (direct, model-only, codemode, deferred, or hidden) and `ctx.executeTool()` for nested tool calls. The [Codemode package README on GitHub](https://github.com/earendil-works/pi/tree/main/packages/codemode) confirms the design: it "Runs model-written JavaScript in a QuickJS VM (compiled to WebAssembly) where the only capability is calling injected tools. **Nested tool calls never enter the LLM context; only the script's output and return value do.**" It has no Pi dependencies and can expose "any functions (remote APIs, MCP servers, application services) to model-written scripts." ## Why they changed their minds The Earendil post gives several reasons: 1. **MCP itself improved.** "The MCP of today is not the MCP of yesteryear." 2. **The required changes were broadly useful.** The same work that enabled MCP also made it easier to use **Jev** (their classifier model) inside Pi — "what Pi needs is quite similar to what MCP needs: a sandbox to play with in the form of an interpreter." 3. **Modern LLM capabilities.** Pi had added support for deferred tool loading, mid-conversation system messages, and reasoning-level changes, but "did not yet upgrade our tool loadout to better scale to these new capabilities." MCP + Codemode solved this. 4. **Influence over the ecosystem.** "We believe the best way to positively influence something is to embrace it... we want to be part of that conversation and help shape it to work well in small harnesses instead of standing on the sidelines." They still criticize MCP's weaknesses: "The biggest issue with MCP continues to be that it's hard to compose," and many servers are "still built for harnesses that just dump tools into the context." Their preferred framing: MCP "should be much closer to **OpenAPI with intelligent tool discovery**" — structured data returns, discoverable tools. ## What Codemode is (and why it matters) Codemode is a **JavaScript sandbox that runs on the harness side** (trusted environment), not the tool/bash side. It orchestrates and coordinates tool calls, letting the model combine them in JavaScript, and its state is kept in the session transcript rather than the filesystem. JavaScript was chosen because small JS engines can ship as WASM binaries for reasonable protection. In Pi, Codemode auto-loads when MCP is configured, or can be added as a default tool. The post gives a concrete example: asking Pi to *"Use typesafe/jev via codemode to find the 20 most frustrated commenters on our issue tracker"* — Pi combines the Linear MCP with Jev to analyze issue tone "without wasting any context at all." ## Ecosystem context - A third-party **`pi-mcp-adapter`** package (by "nicopreme") predates the core change and is now at v3.3.0 (published Sep 29, 2026, ~1.2M downloads/mo). Its [pi.dev package page](https://pi.dev/packages/pi-mcp-adapter) explicitly references the old stance: *"Mario wrote about why you might not need MCP. The problem: tool definitions are verbose. A single MCP server can burn 10k+ tokens."* The adapter's pitch is a single ~200-token proxy tool with on-demand discovery — a direct response to the token-bloat critique. - The original critique is attributed to developer **Mario Zechner**, who reportedly found that Playwright MCP's 21 tool descriptions consumed roughly **13,700 tokens** (per a secondary aggregator, [lookonchain.com](https://www.lookonchain.com/feeds/74898) — treat this figure as reported, not independently verified here). - The reversal drew community discussion (e.g., a Stacker News thread at stacker.news/items/1584939, which I could not open — the site blocked automated access), with one quoted comment framing MCP as "suboptimal... but so is USB-C... we use these hugely successful technologies in spite of their flaws because they're widely compatible." ## Why it matters - **A notable reversal by a vocal MCP skeptic.** Pi had built brand identity around *not* supporting MCP; folding it into the core signals that MCP's network effects won out even among critics. - **A new pattern for taming MCP's context cost.** Codemode (JS-in-a-sandbox orchestration, with nested tool calls kept out of the LLM context) is Pi's answer to the token-bloat problem that originally justified rejecting MCP — and it's a pattern other harnesses (the post cites Codex) are also exploring. - **Convergence on "MCP as OpenAPI."** Earendil is pushing structured data + intelligent tool discovery as the right MCP design, aiming to shape the standard rather than ignore it. ## Strongest sources - Primary: [Earendil, "You Said No MCP!"](https://earendil.com/posts/you-said-no-mcp) - Product confirmation: [pi.dev homepage](https://pi.dev) ("No MCP" → "Now with MCP+Codemode") - Technical detail: [Pi v0.99.0 release notes](https://newreleases.io/project/github/earendil-works/pi/release/v0.99.0) and [Codemode package README (GitHub)](https://github.com/earendil-works/pi/tree/main/packages/codemode) - Ecosystem: [pi-mcp-adapter package page](https://pi.dev/packages/pi-mcp-adapter) *Note: The Stacker News discussion thread could not be opened (blocked automated access), and the 13,700-token Playwright MCP figure comes from a secondary aggregator rather than a source I could verify directly.*

Sources visited

1navigatehttps://earendil.com/posts/you-said-no-mcp
2searchPi.dev MCP support Earendil "You Said No MCP" reaction
3searchpi.dev MCP codemode Earendil announcement 2026
4navigatehttps://stacker.news/items/1584939
5navigatehttps://newreleases.io/project/github/earendil-works/pi/release/v0.99.0
6navigatehttps://pi.dev/packages/pi-mcp-adapter
7navigatehttps://github.com/earendil-works/pi/tree/main/packages/codemode
8searchMario Zechner "you might not need MCP" pi.dev blog post
9navigatehttps://pi.dev
Shared by Proto Státis · Sep 30, 2026

Ask your own question

Search live sources for a question you choose. You can publish the cited answer as a free link.