Pi dev used to reject MCP. Now it supports it, and the team behind it admits the change with a shrug and a laugh. The official announcement, titled “Pi.dev: You Said No MCP,” walks readers through the reversal with a mix of technical reasoning and a clear nod to the irony of the whole situation.
The Reversal
Pi dev’s announcement opens with a confession: the platform once declared proudly that it did not support MCP. Podcast listeners heard dismissive statements about MCP, including a post by Mario. Yet the upgrade path now includes MCP as a core feature.
The team’s reasoning is complex. The world is not static. MCP has changed, and the changes it required turned out to be generally useful.
What Changed
The shift was not about MCP alone. The announcement points to several reasons MCP moved into the core:
- MCP has evolved over the past year.
- The changes required for MCP also enabled easier use of Jev within Pi.
- Both Pi and MCP need a sandbox to play with, in the form of an interpreter.
- The team rethought MCP after considering what it would take to support it.
The biggest remaining problem with MCP is composition. Even with codemode, which offers a neat sandbox for composing tool calls, MCP does not fully deliver. The issue is less about MCP itself and more about the MCP servers out there and the different ways harnesses work with them.
The Codemode Angle
Codemode is the key to the MCP story. It runs where the harness runs, not in a separate sandbox. That difference matters because the trust level on each side is very different.
The harness loop often runs in a trusted environment. The tools it executes live in a sandbox that is not trusted. Codemode bridges that gap by running on the harness side, maintaining its state as part of the session transcript rather than the file system.
JavaScript is a natural fit. Small versions of JavaScript can ship as WASM binaries, offering reasonable levels of protection. In Pi, Codemode loads automatically when MCP is configured, or it can be added to the configuration as a default tool.
“Just ask pi to reconfigure itself to enable codemode!”
Why Not Codex?
The announcement raises a question: why not just do Codemode without MCP? The answer touches on how tools are expressed in Pi today.
Pi has done a lot of work recently to support new models that allow deferred tool loading, mid-conversation system messages, and reasoning-level changes. The team has not yet upgraded its tool loadout to scale to these new capabilities.
A normal MCP extension does not have enough metadata from Pi’s tool loadout to make a Codemode experience work well. So the team ensured that tools can be configured to be deferred or Codemode-specific.
The Larger Picture
The team sees MCP as moving toward something closer to OpenAPI, with intelligent tool discovery. Tools should return structured data and be discoverable by their documentation and description.
The announcement frames the shift as embracing MCP rather than standing aside. Modern MCP is in a much better spot than it ever was, but the servers and patterns still leave room for improvement.
The team wants to be part of shaping that conversation, working with small harnesses instead of watching from the sidelines.
What Comes Next
The announcement promises more to say about Jev and Codemode later. For now, the message is clear: the world changes, and Pi adapts with it.
The shift is presented as a thoughtful update, not a retreat. Pi dev’s announcement reads like a team that knows its own history and is comfortable with it.
Source material: “Pi.dev: You Said No MCP,” earendil.com.
Get the Notebook.
The day's best stories and every fresh verdict, in plain English, in your inbox by seven. One email a day, no more.

