Remix.run Logo
▲ Pi.dev: You Said No MCP(earendil.com)
146 points by yarapavan 2 hours ago | 57 comments
▲_fw 2 hours ago | parent | next [-]

I appreciate their reluctance towards MCP, but /something/ is better than nothing.

It’s suboptimal for the reasons the author outlines: but so is USB-C. So is NVME, so is HDMI.

We use these hugely successful technologies in spite of their flaws because they’re widely compatible and easy for the end user.

That’s why MCP is everywhere. It might not be performant, robust and uniform but it WILL get better over time.

And I’d much rather have the broad MCP ecosystem that we have now than seven or eight different “optimal” ways of plugging in an LLM to something useful.

▲alexfortin 27 minutes ago | parent [-]

Agreed. I personally don't use any MCP but I think it was a good move.

I hope they'll do the same and eventually add native support for ACP (https://agentclientprotocol.com/get-started/introduction) which, on the contrary, I use quite.

▲KronisLV an hour ago | parent | prev | next [-]

I feel the same way about needing support for sub-agents, those feel pretty foundational to me.

I suspect that a smart model driving multiple dumber models for work and then using sub-agents with the same smart model for adversarial review will be a pretty common pattern.

Personally, I got a bit confused about Pi having most of that stuff as plugins since I remember how much of a mess Eclipse was where so much was just loosely fitting together plugins and just went with OpenCode since it covers most of my needs out of the box. Guess that might also be a sign of me getting older, because my IDEs and desktop environments are all closer to stock too.

▲sunaookami an hour ago | parent | next [-]

Hah, it's the complete opposite for me :D. In Claude Code I disabled all sub-agents stuff, disabled nearly all tools but Bash, Edit, Write and WebSearch and replaced WebFetch with my own tool that doesn't summarize anything because the results were always worse with sub-agents, they always lack the necessary context and weaker models summarize bad. I also replaced the system prompt with my own that cuts a LOT of tokens, agents don't need a 10k+ system prompt anymore.

▲KronisLV an hour ago | parent [-]

That's interesting! You don't have cases where the main session has important planning stuff but the actual work to execute has so much crap in it that context compaction will probably dig into the important plan stuff too much and make it too lossy? Also what about the cache read costs for longer context sizes?

Using sub-agents for example also lets me decrease the default context size in Claude Code instead of running at the full 1M like:

  /autocompact 420k
or deal with Codex's 258k tokens (seriously quite tiny by modern standards).

Same idea with something like OpenCode, there I even configured custom agents for review: https://opencode.ai/docs/agents/

▲surgical_fire 27 minutes ago | parent [-]

> You don't have cases where the main session has important planning stuff but the actual work to execute has so much crap in it that context compaction will probably dig into the important plan stuff too much and make it too lossy?

For that is it not better to have separate sessions for planning stuff and doing actual work? Pi is super flexible with session management, and a lot of that can be automated by its extension system.

▲buserror an hour ago | parent | prev | next [-]

I did the same, also, the fact the tools evolve so fast, I dont want to waste time on a particular one while it might be obsolete next week. So either it works now, other I pick something else.

▲DanielHB 34 minutes ago | parent | prev | next [-]

oh-my-pi is a fork of Pi that adds a lot of this stuff

https://github.com/can1357/oh-my-pi

I haven't tried it much though, can't vouch how well it works.

▲probst 26 minutes ago | parent | next [-]

Exceptionally well is my takeaway. It’s the only harness I am using these days. I was previously using pi and codex mostly, but also the ones built into editors like zed, vscode, and the jetbrains IDEs.

On top of that, somewhat unrelated I’ll agree but still, it has support for vim keybindings

▲spiffytech 13 minutes ago | parent | prev [-]

Pi vs omp is hotly debated within my friend group. It has most things you could want, ready out of the box, but also a lot of things you'd never want and it's constantly 5% broken. Some people love that trade, others don't.

▲surgical_fire 29 minutes ago | parent | prev | next [-]

It's actually the main reason I chose Pi.

I did create some extensions where it spawns sub agents for specific tasks, especially when I want to keep the context clean or when I really want to offload a piece of work to a cheaper model. And for that I have a high degree of control over, I know which model is being used for each subtask.

I find Claude Code too unwieldy for my tastes. Pi's philosophy of being very light on features nut highly flexible for customization, clicked very well for the way I work.

▲embedding-shape an hour ago | parent | prev [-]

Some things are impossible to just tack on or work around though, like MCP, while other things, can be done by just composing stuff.

Like sub-agents, you could just instruct pi/any harness with a user prompt/system prompt to start new invocations of itself, if you share what the exact command is, and pi or any other harness will do their own poor man's version of sub-agent via standard unix programs.

▲k__ an hour ago | parent [-]

What would you say is a good harness with subagents?

▲raincole 12 minutes ago | parent | prev | next [-]

I'm still confused about what this codemode is. Models have been trained to chain bash and other typical unix tools well. They're so good at that to an uncanny level. Why do we want to not utilize this ability? Is it just a permission management issue in case you don't want the model to use shell directly?

▲the_mitsuhiko 4 minutes ago | parent | next [-]

We will write about it. The best way to think about it is that codemode solves a different problem than bash in that bash is a way for the agent to run a particular tool: running bash.

Codemode is a way for the LLM to orchestrate harness level tools. The reason this happening now, is because the models by the labs are increasingly trained on this. Codex for instance in responses lite requires codemode to even perform parallel tool calling.

▲agentdev001 4 minutes ago | parent | prev [-]

From my understanding, code mode came about due to some agents not having access to a shell.

▲NichoPaolucci an hour ago | parent | prev | next [-]

I had no idea pi didn't support MCP! I'm a new user, I just started messing around with it. I was getting my tooling up and running and tried to get one of my database MCPs working (Which, in retrospect, seemed a little painful - but I guess I was under the assumption that it was my responsibility to build + maintain those connections).

Another retrospect note, "No MCP" appears to be the first icon on their front page - not sure how I missed that.

Imagine my surprise reading this!

▲xienze 43 minutes ago | parent [-]

Pi doesn't even support a permissions model. It's extremely barebones, you're expected to customize basically everything.

▲alexfortin 25 minutes ago | parent [-]

... and after using it for a while you might end up forgetting most of the extra stuff you thought you needed in the first place. That's what happened to me and I've never looked back and still am a happy Pi user (https://a.l3x.in/ai if you're curious)

▲zmmmmm 5 minutes ago | parent | prev | next [-]

the conversation seems to dwell on things you could substitute Bash for but the real need stems from completely opaque systems that nothing can reach but which are now getting MCP support. This is where being left out of having MCP support will hurt. I'm still quite happy to let all the harnesses compose bash commands to their hearts content (inside their sandboxes ...)

▲wren6991 an hour ago | parent | prev | next [-]

> And while we could have just wired up the metadata to enable better MCP extensions, we also think that MCP with Codemode solves quite a few of the issues that it traditionally had.

There's just something that bothers me about this. Normally if LLMs want to compose multiple operations, they have the perfect tool for this: bash, or whatever other OS shell is available. It's why I was always confused by Codemode-type constructs for direct chaining of tool calls; see also the way highly-RL'd modern models will fall back to sed or python for complex file edits.

It seems like Codemode is raised here as the perfect tool for chaining or composing MCPs, but isn't that backwards? LLMs are already given the perfect tool for that, and the problem is that MCPs aren't exposed to that tool.

▲rcarmo 30 minutes ago | parent | next [-]

I happen to think codemode is useful, but not the full answer. I have a long and skewed history with chaining things in MCP and built a dozen or so enterprise ones (see https://taoofmac.com/space/blog/2026/04/29/2341 for notes) and it all falls back into the trade-off between agent scope/context and tool coverage: If you are using a coding agent it will have no trouble sorting out any tool regardless of how many are exposed (it's just a matter of either progressive tool disclosure or good tool metadata, since the coding agent will just go at it and expend whatever tokens are needed), whereas in a "normal", limited, scoped agent that has only a few things it needs to do (like handling a ticketing system) codemode is pretty much overkill.

Pi is primarily a coding agent, so yeah, code mode makes sense, but I've found that better MCP design saves everyone a lot of trouble and would also probably have improved the thing's reputation overall (I personally am not fond of the line protocol, would rather have protobuf and more typing, but it is what it is).

▲rcarmo 29 minutes ago | parent [-]

Addendum: My unfettered notes on chaining MCP operations are here: https://github.com/rcarmo/umcp/blob/main/docs/CHAINING.md

▲hobofan an hour ago | parent | prev | next [-]

> Normally if LLMs want to compose multiple operations, they have the perfect tool for this: bash, or whatever other OS shell is available.

I many scenarios, e.g. running the harness server-side, as is the case for chat interfaces, you don't really want to expose OS shell access as that opens up a huge security attack surface.

▲lelanthran 41 minutes ago | parent | next [-]

> I many scenarios, e.g. running the harness server-side, as is the case for chat interfaces, you don't really want to expose OS shell access as that opens up a huge security attack surface.

It does, but a restricted user account mitigates the large majority of those issues. A sandbox mitigates even more.

The number of remaining exploits left is probably going to be the same as the number in the harness. More, in fact, as many of them have no human review anyway.

▲otabdeveloper4 18 minutes ago | parent | prev [-]

You can give the LLM a bash without giving it the full /usr/bin.

That's been a trivially solved problem for decades.

▲hobofan 2 minutes ago | parent [-]

That has been one of the most common exploits for decades.

▲pjmlp an hour ago | parent | prev [-]

Cloud products based orchestrations with proper security mechanisms configured, don't have shell access and should only communicate over proper network mechanisms.

Rootless immutable containers without shell access, or SaaS products from multiple vendors with WebAPIs as the only touch point.

▲Phemist an hour ago | parent | prev | next [-]

So Pi is also accruing cruft now :(

▲rcarmo 38 minutes ago | parent | next [-]

You can turn those tools off. In fact, that is what I am doing right now in https://github.com/rcarmo/piclaw until I am positive the new MCP stuff has full parity with the MCP adapter I've been shipping for the past six months or so.

I'm actually pretty happy that they did it, since 90% of what I have to integrate in enterprises is MCP-driven (it's a security and auth boundary that has become pretty much mandatory for any third-party agents wanting to reach into corporate data) and this lets me use Pi directly. Am just being cautious about the first version, because, well... it's a first version, and I like my tools stable.

(I actually played around with the idea of using QuickJS myself for codemode, but since I rely on Bun that gives me the ability to use other things... never got around to do it though.)

▲the_mitsuhiko 9 minutes ago | parent | prev [-]

To be clear: absolutely not the plan and nothing is loaded by default that was not loaded before.

▲melodyogonna an hour ago | parent | prev | next [-]

Good. I too I'm not a fan of MCPs, but these days I do find them useful. In Claude Code I connected to my company's MCP which made Claude Code infinitely more useful for everyday work stuff

▲rcarmo 37 minutes ago | parent [-]

Have a go at https://github.com/rcarmo/memento, I would appreciate Claude testers since I mostly use Codex. Just trying it and filing an issue about what doesn't work would be great...

▲carlsborg an hour ago | parent | prev | next [-]

This is somewhat similar to HuggingFace smolagents where the model writes code that calls tools, instead of emiting json to describe the tool call per turn. Here Codemode is one tool that the model calls when it needs to compose many tool calls, especially MCP ones. Is what i understand of this.

▲OleksandrC an hour ago | parent | prev | next [-]

Honestly, the provided argument for it is rather weak. They are basically adding a way of running scripts that are contained within harness to execute harness's own tools (that's the Codemode). A coding agent can already compose any arbitrary logic by invoking shell scripts (or python scripts, or node scripts), etc - so this is just entirely unnecessary in the core, from my perspective.

If you feel that Pi has been drifting away from its original vision, try hax (https://usehax.dev/) - you might like it.

▲blamestross an hour ago | parent | prev | next [-]

As far as I can tell MCP is just "we bothered to document our api in a programatically readable way".

Just generate CLI tools, with docs, from MCP servers on demand.

▲avereveard 6 minutes ago | parent | next [-]

Theres transport and context management. A cross agent status cache with semaphore over a testing harness driving a browser that can rewind and retry is much easier for agents to drive from mcp than selenium or whatever is fashionable these days. Didn't replace unit testing per se but to rca and fix it's a much better tool.

▲tiborsaas 23 minutes ago | parent | prev | next [-]

It's exactly that, but I don't see the issue. API+Docs under a single URL looks like a win for me. It also warrants a new name.

▲avereveard 5 minutes ago | parent [-]

> new name

Swagger was the new old name for the concept

▲rcarmo 36 minutes ago | parent | prev [-]

In enterprise integrations, that is just not an option. MCP has pretty much taken over there.

▲ppsreejith 2 hours ago | parent | prev | next [-]

Anyone found a good file upload solution for MCP? Or is the best practice to use HTTP to upload files outside MCP?

▲hobofan an hour ago | parent | next [-]

There is a MCP SEP that outlines multiple ways, that I hope will sooner or later be accepted: https://github.com/modelcontextprotocol/modelcontextprotocol...

While we are waiting on that to become stabilized, we implemented a inspired/co-evolved way to do that in our tool[0], where you mark individual fields in the request/response schema as being file payloads, so that file exchange can be properly orchestrated by the harness and doesn't pollute the context. We just do inline base64 uploads of the required payloads, which in practice we've seen to work quite will until ~100MB files (which is otherwise also the size limit we usually recommend for file processed).

It's annoying that it's not stabilized yet, but for most bigger customers we've seen, they implement 80% of the MCP servers they connect in-house, so doing adjustments to the tool surface, and metadata has been less of a pain for them than we expected.

[0]: https://erato.chat/docs/features/mcp_servers#file-support

▲rcarmo 43 minutes ago | parent | prev [-]

I have had to hack a couple of workarounds in https://github.com/rcarmo/memento to do uploads, and there's a draft going around, but the general practice in enterprise MCPs seems to be to do it "out of band" and have MCP tools to hand-over storage handles/URLs so the MCP server can do the imports itself "safely".

▲aussieguy1234 an hour ago | parent | prev | next [-]

Generally, I use skills with a CLI tool instead of MCP and tools. Usually in most cases I also get a coding agent to generate the CLI tool.

I find this approach is easier to debug and I can also use the tool myself to ensure it's working well.

▲croes an hour ago | parent | prev | next [-]

> The first thing to remember is that the world is not static

And you didn’t remember that when you said no to MCP?

No, no MCP for now?

▲uwagar 2 hours ago | parent | prev | next [-]

so much MCPs in the FTA yet not a line about what MCP actually is.

▲seanhunter an hour ago | parent | next [-]

Most people using pi probably know. MCP is “model context protocol”, a protocol by which models can connect to apis and services and conversely a way to expose those apis and services so they can be used by llms and agents. https://modelcontextprotocol.io/docs/2026-07-28/getting-star...

▲ramblurr 2 hours ago | parent | prev | next [-]

1. The first paragraph has a callback and link 2. You're not the intended audience of the post most likely

▲tiborsaas 23 minutes ago | parent | prev | next [-]

It's just like API-s, but with built in documentation.

▲otabdeveloper4 2 hours ago | parent | prev [-]

MCP is the NIH non-standard version of OpenAPI.

▲Sha1rholder an hour ago | parent | prev | next [-]

An article pretending to address its title, but just beating around the bush.

▲embedding-shape an hour ago | parent [-]

How on earth does the article no address the title? Literally the first paragraph basically "spoils" the entire article and you have your answer, then you can continue reading for more justification of why it was like X before but now it's like Y.

▲mi_lk 2 hours ago | parent | prev [-]

The post mixes Codemode and MCP yet the explanation is strange IMO and both appear to be new things in the latest release

If you are a Pi user it may be better to just ask your agent to explain https://github.com/earendil-works/pi/pull/10040

▲the_mitsuhiko an hour ago | parent [-]

Author of the post here: I don't think it's a good idea to put your clanker to a PR and then try to explain it. That's because you are then reading a derivative work of a derivative work instead of going to the source.

If we fail to explain it, then we need to do a better job explaining it :)

▲mi_lk an hour ago | parent | next [-]

Yeah YMMV. FWIW I did that earlier today and I think I got a better idea about what codemode is than the changelog and the post

▲the_mitsuhiko an hour ago | parent [-]

As we said in the post, we will write about Codemode more in the future. This post in many ways was necessary to address an Elefant in the room.

▲gritzko an hour ago | parent | prev [-]

"Now we talked so much about Codemode, it might be worth explaining what that even is."