Pi.dev: You Said No MCP

(earendil.com)

274 points | by yarapavan 4 hours ago

44 comments

  • alin23 1 hour ago
    Lately I found MCP to be much more than a coding tool. For example, I implemented it in my more complex macOS apps [0] like rcmd, Clop, Lunar, so they can be configured by natural language.

    So even with a local Qwen and Pi you can now say things like:

        Set up Clop to optimise any PNG that I drop in my website assets folder and convert to a webp with the same name near it
    
        Get Crank to start Time Machine backups immediately when I connect my HDD and notify me when the backup is done.
    
        I want to be able to hold rcmd and fuzzy search and focus cmux agent panes
    
    BetterTouchTool has a great MCP which can create native SwiftUI views and bind them to hotkeys, trackpad gestures etc. It can leverage its immense macOS automation tools and private APIs to let agents do Computer Use.

    You would need a much more capable coding model to code those tools from scratch and get the same fail-safe logic that the apps have honed over the years.

    [0] https://reddit.com/r/macapps/comments/1wkv0dy/mcp_in_macos_a...

    • taylor-tg 3 minutes ago
      I just wanted to say thank you for making the tools that you have either free, or very reasonably priced. ZoomHider, MusicDecoy, YellowDot, and IsThereNet are some of the first things I install on my/my family's Macs (often before even Homebrew).

      They're so powerful and yet get out of your way when you're not using them. I couldn't imagine being without them. Thanks y'all!

  • CharlieDigital 1 hour ago
    This was the easiest call and many like me made it in March[0] among all of the anti-MCP wave of influencers claiming it dead (many, many prominent folks in tech including Garry Tan). Literally every tech influencer in every social feed in March was calling MCP dead and crowning CLI the winner (completely ignoring every reasonable argument around security, observability/telemetry, ease of deployment and operations, etc.)

    A direct quote from March, 2026[1]:

        > If you’re still not convinced that a lot of this discourse [regarding the death of MCP] lacks nuance and is just hype, congrats on buying into the current AI-influencer FOMO hype cycle; see you in 6 months when the influencers move on to the next revelation of the moment to stay relevant and get your eyeballs and dollars.
    
    It was fairly obvious why MCP would be needed once AI engineering and uptake moved beyond the solo developer and single harness stack of "what works for Me" versus "what works for My Team", particularly in an enterprise context. The key mistake people made was thinking in terms of their own workflows and own local stacks instead of a team's workflow and a team's operational stack. There was also an ignorance of MCP's stateless HTTP mode (yes, it was already a thing in March; the 2026-07-28 revision of the spec just prioritizes it as the primary focus moving forward) versus local `stdio`.

    My biggest complaint right now is that OpenAI has still refused to implement the MCP Prompts spec[2] and in general, the major clients have spotty implementation for some of the features in the spec.

    [0] https://news.ycombinator.com/item?id=47380270

    [1] https://chrlschn.dev/blog/2026/03/mcp-is-dead-long-live-mcp/

    [2] https://github.com/openai/codex/issues/5059

    • Aurornis 15 minutes ago
      Everyone is so afraid of being left behind in this period of rapid AI change. The influencers are exploiting that to create anxiety and fear of missing trends.

      I follow several influencers from pre-AI times who were (or were trying to become) social influencers thought leader types. People like Theo or many of the JavaScript and training course people. Following them was helpful to follow the trends that more chronically online juniors would be picking up and pushing at the workplace, which set me up in a better position to understand and then defend against it.

      All of them, every single one, have dropped their previous influencer topic and pivoted to being AI influencer. Every time I see a post they’re either saying you need to adopt a new trend or that last month’s trend is dead. “Prompting is dead! Graphs are the future!” or “Claude Code is OVER! This new harness is 10X better”

      MCP was one of these topics. Everyone went from telling you that you needed to use MCP or be left behind, to declaring that MCP was dead almost in unison.

      The only pro-MCP holdouts were the influencers who had built their own MCP courses for sale.

    • rajeevk 49 minutes ago
      > My biggest complaint right now is that OpenAI has still refused to implement the MCP Prompts spec

      MCP servers provide three things: tools, resources, and prompts. Of these, tools seem to be the only part implemented consistently across major clients like ChatGPT, Claude.ai, Claude Code, etc.

      For prompts and resources, there doesn't seem to be a common understanding of how clients are supposed to consume them.

      For example, if an MCP server exposes resources, Claude Code can discover them and consume them when needed without you explicitly asking for a specific resource. Claude.ai behaves differently. It doesn't automatically discover and consume those resources. Instead, it gives you a way to manually add an MCP resource to the prompt.

      So while MCP defines tools, resources, and prompts at the protocol level, the actual user experience for resources and prompts varies quite a bit across clients.

      • CharlieDigital 5 minutes ago
        I disagree on Prompts since virtually all of the mainstream harnesses implement them: Cursor, Claude, OpenCode, Copilot. Prompts are very clearly just a remotely delivered `/` command and it is easy to see why this is really powerful (single entry point, no need to update/sync skills, dynamic sets by audience, dynamic construction of the payload by audience, etc). For all intents and purposes, it should be viewed as an analog to local, text-only skills.

        Codex is the only mainstream harness that does not implement this in the client.

      • hobofan 32 minutes ago
        In practice, the problem with resources is that many resource collections are too large to list exhaustivley, and if that's the case you will need to need to implement a proper search tool anyways (as the Completions utility isn't a good fit), at which point there is little use in also implementing all of that as a resource, rather than `list_`,`search_`,`get_` for a resource.
      • spennant 31 minutes ago
        The idea of "model controlled", "application controlled" and "user controlled" for tool, resources and prompts (respectively) was aligned with the chat interface. It breaks for the autonomous agent paradigm where the agency is the user and the lines are blurred. Unfortunately MCP has been mostly relegated to tool calling leaving potentially powerful capabilities on the table due to lac of client support for them.
    • stymaar 18 minutes ago
      With stateless MCP, the MCP rube goldberg everyone was calling dead in March is effectively dead though.
    • deadbabe 9 minutes ago
      There is no reason to think about team workflows. Focus on your workflow. Your own custom local workflow is basically your competitive advantage as an employee. The moment everyone else can do exactly the same things you do, there is no reason to really keep you around.

      The game has changed in the AI era. Horde secrets, skills, custom processes. Don’t share everything. Stop giving things away or you will have nothing left.

    • AznHisoka 1 hour ago
      Yep, number of new MCP servers this month is on track to be the highest it has ever been: https://bloomberry.com/data/mcp/
      • CharlieDigital 1 hour ago
        "MCP" is the new "API" (MCP over streaming HTTP, after all, is just an API with a structured payload wrapper and defined interactions).

        It is only going to continue to proliferate in usage and adoption.

        • Eldodi 1 hour ago
          With the v2 spec, MCP became a lot closer to APIs by becoming stateless. And there is now a push to use HTTP verbs more extensively to improve caching even better in v3. MCP is converging into APIs but wit great auth and auditing
          • Zambyte 49 minutes ago
            ... Are both of you using "API" as a synonym for "REST"?
            • imtringued 38 minutes ago
              This is the worst moment in time to talk about "REST".

              Do you mean the Roy Fielding "REST" or the HTTP API "REST"?

              Calling the latter "REST" is wrong. It's like calling a hermit crab a snail.

              Edit: I forgot to mention, the former is gaining relevance as the elusive evolvable clients are now a thing.

              • jazzypants 31 minutes ago
                I'm not trying to be a dick, but it's pretty hilarious that we made these two posts at the exact same time [0]. I totally get what you're saying, but I don't understand the motivation behind it. A properly designed HTTP API is what Roy Fielding was discussing in his dissertation, but he was obviously talking about HTML pages full of hyperlinks. At the end of the day, does it really matter much if the definition is only 80% correct if the majority of the population understands the basic gist of the conversation?

                [0] https://news.ycombinator.com/item?id=49908582

                • imtringued 27 minutes ago
                  Unironically, Roy Fielding had a point.

                  If you can build the ultimate evolvable client, then you can collapse all UI into a single client.

                  Basically Roy Fielding told us to build an API that can only be operated by a human like intelligence, nobody could implement that because such an intelligence did not exist (hence the switch to imperfect HTTP APIs), and now that LLMs are a thing, said human like intelligence exists. This means Roy Fielding wasn't wrong, he was 25 years too early and ironically people should be building real REST APIs in the pendantic academic sense from today on and not the "pragmatic" HTTP API.

            • jazzypants 37 minutes ago
              It's annoying, but that's been pretty common for the last decade. It's just like how everyone uses "REST" to mean "JSON RPC". In the end, we all basically know what the other ones are talking about, so it's pretty pointless to get bogged down in semantics.
            • natpalmer1776 36 minutes ago
              Seems like in this context API means HTTP API lol
  • _fw 3 hours ago
    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 2 hours ago
      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.

      • msdz 1 hour ago
        Arguably, adopting ACP might even help Pi’s case, in that it could escape the terminal interface into one of many wrapper GUIs. TUIs inherently tend to limit your userbase to those who know what a terminal is… And given OpenAI’s latest product announcement [0] in response to Meta’s, the trend seems to be to attempt an expansion of customers to the general population, away from just developers and maybe “business” people.

        Then again, I don’t even know if general adoption is what Pi/Earendil is going for.

        [0] https://news.ycombinator.com/item?id=49896604

        • alexfortin 39 minutes ago
          Good points.

          About what Pi/Earendil is going for, I can't really say but a while ago they created quite a stir in the Pi community for adding a trust system[0] which for many (me included) went against the loudly advertized "yolo" phylosophy, at that time I speculated it was a move to make it more palatable for the general population (whatever that actually means), so I'll stay optimist for ACP adoption for now.

          [0]: https://pi.dev/docs/latest/security#understand-project-trust

        • ElectricalUnion 1 hour ago
          The "general adoption agent" for Earendil is their other product Lefos, that is based on Pi and uses email as the interface.
    • skohan 13 minutes ago
      You could already use MCP perfectly well on pi via extensions.

      I'm not so sure about this move, or the general inclusion of code mode in the core editor as one of pi's main selling points was its minimal nature.

  • KronisLV 3 hours ago
    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 3 hours ago
      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 2 hours ago
        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/

        • sunaookami 1 hour ago
          I never hit compaction, most of my sessions are 150-300k tokens long with the longest being around 700k. Using sub-agents means that they can't use that cache, have to re-read everything and now multiply this for every sub-agent you call and it just wastes money/tokens. I also don't like how intransparent sub-agents are, I can't follow what they are doing and I can't really steer them. Claude Code has the /agents view but it's clunky and awful to use.

          GPT context window is way too low for me and my last experience with it (GPT 5.6 Sol) was so awful and I hit limits way too fast that I cancelled it (and at least got my money back).

          I'm no longer using Pi since it got worse IMHO and Claude subs can only be used in Claude Code but I miss the /tree feature which is perfect for first letting the model read & cache the important bits of the codebase and then start your plan from there (as long as you stay in the Cache TTL). Claude Code has /rewind but it's not as good.

          I'm only using the 20$ plans.

          • imtringued 6 minutes ago
            I admit I'm not a heavy user of subagents but isn't one of the standard use cases for subagents to run a single command, take the output, summarize it for the main agent and pass it up instead of polluting the context?

            When cargo fails to build and creates a massive amount of compile errors, you're better off having this preprocess step.

        • surgical_fire 2 hours ago
          > 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.

          • KronisLV 15 minutes ago
            > For that is it not better to have separate sessions for planning stuff and doing actual work?

            Personally, seems like too much effort for something that would still need to (and fail to) have some sort of a link between the two, so I could go from the planning over to implementation and back easily. In reality, that'd get lost in the noise of dozens of sessions - I mostly just want the harness to help me do work and otherwise get out of my way, not make me dance around it. Ergo, the more context management it handles, the better!

          • dools 1 hour ago
            What’s the difference between sub agents and separate sessions?
            • Cilvic 32 minutes ago
              I'd assume separate sessions are not aware of each other, sub-agents are spawned by an orchestrator agent?
        • cyanydeez 1 hour ago
          running local models, now with Qwen3.8-Flash-Next, they have 256k, but when they get up there their speed is just too slow. So i've taken https://github.com/Tarquinen/opencode-dynamic-context-prunin... and started improving it. It already worked well to get a lot of mileage out of just taking tool calls, code modifications, etc, and dumping them in favor of a summary.

          But they'd still inevitably get to long in the tooth, and context poisoning meant they'd just eventually not be able to stay in the preferred context size, which for me is 64k-128k. So, I extended it with an eviction command and required a ratio. So instead of a summary of work, it now just places a waypoint. The waypoint basically means the context has a semi-coherent context but without all the baggage.

          I'm on like day 3 of a single session with 3m tokens removed and still in the sweet spot. So it evicts to beneath the lower limit, compresses to the upper limit, then evicts again.

          It's amazing how resilient it is if you give it a good plan. The work flow has basically been:

          1. Write up an implementation document for some new set of features.

          2. Rewrite the implementation as a TDD document

          3. Set it to work.

          The only thing I haven't figured out is it likes to stop when it hits the finish line of the subparts, but likely we're going to end up with the master of puppets monitoring these things and just set them to evaluating what they've done.

          • TobTobXX 1 hour ago
            > taking tool calls, code modifications, etc, and dumping them in favor of a summary

            Doesn't that destroy the cache? I find that caching significantly sped up my Qwen, especially on said larger contexts.

      • Pxtl 1 hour ago
        That sounds like you just NIH'd mr Zechner's Pi Coding Agent. Those were basically its founding design: yolo-mode security, simple design, minimalist system prompts, plug-in based for anything fancy (even sub-agents and web).
        • sunaookami 54 minutes ago
          Yep, I've used Pi in the past (see my other comment https://news.ycombinator.com/item?id=49908276) but I don't like the direction it went (selling out, forgetting their principles/throwing them out). And since Anthropic wants you to use Claude Code with their sub I just switched to CC again. I've only used Pi for a few months though when GitHub Copilot gave you 300 requests for like 10$.
    • buserror 3 hours ago
      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 2 hours ago
      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 2 hours ago
        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 2 hours ago
        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.
        • yurishimo 1 hour ago
          Glad I'm not the only want to find it a bit janky/broken at times. They seem to constantly be pushing updates which is nice, but I treat it mostly as a black box.

          Anecdotally, I find the auto compaction (or what I assume is happening when the context magically drops) to be hit or miss. I do like how easy it is to use my work cursor sub and business chat gpt at the same time. Then I use nearly free cursor models for dumb shit and Sol for real problems.

    • surgical_fire 2 hours ago
      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 3 hours ago
      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__ 2 hours ago
        What would you say is a good harness with subagents?
      • fwip 55 minutes ago
        I found the MCP extension for Pi to work fine.
  • Jenk 4 minutes ago
    I'm wondering why these aren't extensions rather than baked in. Extensions would be consistent with the historical development mantra of pi.
  • statenjason 1 hour ago
    I use mcporter[0] for consuming MCP when suitable CLIs aren’t available. It exposes MCPs as shell commands. Agents compose using standard shell primitives. Tool returns json? Pipe into jq.

    Another perk is it allows me to run tools in the exact same way as agents instead of treating MCP as a special way to call on services. Super valuable when debugging.

    [0] https://mcporter.sh/

  • abtinf 17 minutes ago
    > The way we like to think about MCP at this point is that it should be much closer to OpenAPI with intelligent tool discovery. That means tools should return structured data and tools should be discoverable by their documentation and description.

    OpenAPI is “intelligent tool discovery” (whatever that is). OpenAPI literally “returns structured data” and is “discoverable by their documentation and description.”

    Just once, I’d like to see someone explain MCP in terms that suggest they have any idea what they are talking about.

  • NichoPaolucci 3 hours ago
    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 2 hours ago
      Pi doesn't even support a permissions model. It's extremely barebones, you're expected to customize basically everything.
      • alexfortin 2 hours ago
        ... 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)
  • jrecyclebin 31 minutes ago
    My biggest frustration with MCP at the moment is that it has no built-in way of uploading and downloading files. Every argument has to go through the context.

    Sure you can use curl along with it - but many MCP friendly harnesses don't have access to a tool like that. Wish they had added this before moving on to stuff like MCP apps.

    • clickety_clack 28 minutes ago
      Same here. At the moment I upload the file to s3 and pass the file link, but there should be a way to pass files alongside the chat.
  • whazor 13 minutes ago
    This will make it easy to add Pi.dev to a web application and connect it via WebMCP or a backend MCP.
  • raincole 2 hours ago
    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?
    • Guillaume86 1 hour ago
      Codemode is a fancy name some MCP authors coined for the practice of providing scripting/method chaining for their MCP tools. It's generally implemented by providing some kind of code execution tool, the LLM calls it with a script, and the MCP server runs it in a sandbox.

      It's pretty effective because of the reasons you noted, but there's a composability problem since each MCP has its own sandbox and can't call into the other ones.

      IIUC Pi offer a workaround for this, the harness runs the sandbox and populate it with the MCP tools, that way the composability problem is solved and every MCP do not have to implement their own sandbox.

    • the_mitsuhiko 2 hours ago
      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 2 hours ago
      From my understanding, code mode came about due to some agents not having access to a shell.
      • andrewingram 1 hour ago
        The value is that rather than an agent chaining together tool calls itself (which means each step sends the result back to the agent for it to analyse and work out what to do next), it writes a script for the harness to execute that chains together all the calls. The major benefits are:

        * speed - much fewer hops back to the LLM

        * fewer tokens - intermediate execution steps in the script don't leak into context, only the final result does.

        * repeatability - if the LLM needs to repeat work, it can reuse a script it wrote last time.

        If you have a harness that has access to a full shell and knows how to use bash or python, you'll often see it writing little scripts. For setups that don't (ie normal model API requests with tool calls), you can give it an lightweight secure execution environment like just-bash, or quickjs.

        • dools 57 minutes ago
          Agents just do this anyway, how is it a “mode”? I always see the agent writing scripts in a tmp dir to execute or even just inlining bash and python scripts.
          • jsw97 23 minutes ago
            Perhaps the appeal is a stronger and more customizable lockdown on agent capabilities.
          • Cilvic 28 minutes ago
            but these bash scripts can not execute MCP tools.

            What if I have an MCP Tool LookupZip(City) and want to chain it with a bash tool that prodcues a list of 100 cities. And then I want to filter again to the largest Zip code.

            • jsw97 22 minutes ago
              Yeah but arguably that tool should be a cli anyway, or could easily be converted to one. The benefit of MCP is that it's _less_ capable than bash.
      • asar 1 hour ago
        thanks! it now clicked for me. so instead of cat its read_file, even if read_file resolves to cat, cat is not always available.
  • faxmeyourcode 39 minutes ago
    This is a potentially polarizing (but very welcome imo) change to pi. I'm such a huge fan of the pi SDK, and just yesterday I was trying to wire up the pi mcp extension to be used in a project and sonnet told me about the ongoing work in the 0.99.x tags. Didn't realize the next day it would be merged! Fantastic news.
  • CamilleScholtz 1 hour ago
    I don't understand MCP still? What can MCP do that a skill + cli can't? I've been using hax (https://usehax.dev) and haven't missed skills at all to be honest.
    • fnordsensei 56 minutes ago
      As a provider, I can add a tool or change instructions on my MCP server, and you'll get it on your next connection, sometimes even mid-session.

      With a skill, updates depend on whatever channel delivered it to you. Whichever channel that is, it's out of my hands as a provider.

      So, MCP solves the problem of coordinated distribution of updates to a larger subscriber base. Think inside of a company, for example. I don't have to go around and tell people to `git pull` their skills folder.

    • sthuck 56 minutes ago
      Im sure there are more reasons but updates to prompts and tools coming from the server side is a major one.

      It's typed so you can build some governance around it, by allowing only some tools or parameters for your org (this is a pretty weak point, but still)

      A skill has one giant description from the frontmatter loaded into the context, where MCP loads a smaller one for every tool. Not necessarily better, the skill approach is often better actually, but sometimes the MCP approach fits more

  • _R_ 38 minutes ago
    MCP is a lot like XML these days, it's not bad and still useful, but no longer trending
  • darepublic 1 hour ago
    > The first thing to remember is that the world is not static.

    I will use this to talk to my manager about the project status

  • samayashar 1 hour ago
    > That means tools should return structured data and tools should be discoverable by their documentation and description.

    Treating MCP as a part of OpenAPI rather than a tool connector is a direction in which we're heading. It is important for the users to have the flexibility of deciding the model, work to be done and the tool call in one prompt. The framework sets up the configuration and gets the output.

  • agentdev001 1 hour ago
    As many others have commented: good, I too am an mcp hater.

    However- in my testing, mcp is really quite fast, and its pretty much free at this point- with frontier models. Context rot is, from what ive tested, not as much of a concern now. I genuinely was not able to hillclimb skills/extensions to beat out the speed of mcp in some cases I've been testing.

  • wren6991 3 hours ago
    > 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 2 hours ago
      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).

    • hobofan 3 hours ago
      > 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 2 hours ago
        > 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 2 hours ago
        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 hours ago
          That has been one of the most common exploits for decades.
          • otabdeveloper4 33 minutes ago
            Yes, and also MCP does literally nothing to prevent these sorts of exploits.

            Like I said, AI bros vibecoding slop because they literally have no clue what they're doing.

    • pjmlp 2 hours ago
      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.

  • magnio 1 hour ago
    I'm a bit bumped when I first saw pi is moving from bash to codemode and also adding MCP, since I thought that loses the purity and simplicity of the "use bash for everything" philosophy. However, after reading more about it, I realized codemode is just a slightly enhanced version of bash: more complex, sure, but likely more robust, secure, and efficient. For those who, like me, don't get the point of this change, here is how I understand it.

    The first tool execution runtime in harnesses are direct tool calls with JSON or XML, such as the Read and Edit tools. As an escape hatch, we have Bash tool that allows arbitrary code execution on the host running the agent. The downsides of using bash (on the host) as the main tool execution runtime are:

    - Syntax and obvious errors only surface at runtime

    - Unergonomic orchestration of parallel and background tasks

    - Verbose command output cluttering context

    - Dependent on the host environment, packages versions, etc.

    - No security measures by default.

    To me the last point is the biggest inherent weakness, usually mitigated by creating a dedicated unprivileged user or running bash in a sandbox.

    Note that direct tool calling is kind of the polar opposite on these points: syntax errors are caught early, orchestration can be done with some wrapping tools, command output is controlled, and most importantly they are more sandboxed. On the flip side, they obviously have way less power, necessitating Bash tool in the first place.

    Codemode is the middle ground between these two extremes. It actually can be derived simply by one idea: what if we replace Bash by another language that can be checked for obvious errors, i.e. type checked?

    Everything else falls out from there:

    - Any language would do, but I think TypeScript fits the balance between safety, speed, conciseness, and popularity in training data.

    - If we use TypeScript, might as well run it in a sandbox as JS runtimes have been designed with this in mind for 20 years

    - Orchestration comes for free from the JS runtime. It's not more powerful, just more ergonomic.

    - Since the tools are controlled by the harness and not dependent on the host, cloud agent becomes easier.

    - With this in place, MCP are not very different from a tool provided to this sandboxed runtime.

    Overall I find the benefits compelling enough, but we'll see if the heavily-RLed models these days will use it effectively.

  • carlsborg 3 hours ago
    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.
  • spence-s 18 minutes ago
    This just reads like Pi is becoming Armins and Marios opinions on what a good harness is instead of letting us build our own with the features we want and need.

    There were already tons of third party MCP extensions that were every bit as good as this half baked built in.

    Already lots of code mode extensions too, which is also opinionated.

    Sad to see Pi to go from being: "This harness is yours"

    to

    "Just another coding harness"

  • melodyogonna 2 hours ago
    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 2 hours ago
      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...
  • Havoc 1 hour ago
    Interesting - I didn’t even notice it’s not supported. Must have been added via extension because I definitely have mcp active on pi.

    The idea of using jev as a cheaper faster subagent for specific use cases is interesting. Will have to experiment with that!

  • coder-pm 1 hour ago
    Hmm what is this JavaScript sandbox? container, separate process, same Node process? Also does it have access to the MCP tokens? The harness credentials?
  • Phemist 2 hours ago
    So Pi is also accruing cruft now :(
    • rcarmo 2 hours ago
      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 2 hours ago
      To be clear: absolutely not the plan and nothing is loaded by default that was not loaded before.
      • Phemist 1 hour ago
        Ok! I trust that you and the maintainer will steward the project properly. It's just that I really like Pi as is and am a natural worrier. I'm also not sold on Jev(-likes), so that reasoning rung a bit hollow to me.
  • zmmmmm 2 hours ago
    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 ...)
  • praveenvijayan 1 hour ago
    The core idea of Codemode that I understood is - The script doesn't actually write any code itself; rather, it acts as a workflow automation and program management tool. It pulls data from an issue tracker, delegates the analysis to a model, and synthesizes the results to help manage Pi's development priorities.

    Codemode isn't replacing MCP; it's fixing MCP's biggest flaw—its lack of composability.

  • 1238u 1 hour ago
    But I want mayors, animals, gas reservoirs and data lakes. Can Pi offer in game purchases?
  • 0xbadcafebee 24 minutes ago
    It is bizarre that Marco said MCP is hard to compose. It's like he doesn't understand how composability works.

    Unix programs are said to be composable, in that you can combine them in different ways to get more complex and useful functionality. But the applications themselves are not composeable. They just take input, perform calculation, and return output. Each app has unique input and output, and none know about other apps. So how can they possibly work together?

    Bash acts like a programming language, allowing you to write a new program on the fly. It is very lightweight, but gives enough functionality to do two things: 1) call arbitrary programs, 2) connect their inputs and outputs, 3) make decisions about how to do this to result in a novel solution. It uses Unix pipes to make writing the program easier, but actually it could work fine without pipes, reading/writing program input/output with files.

    The important thing is bash is a "glue" program that ties together the other programs. Bash is what makes those programs composeable. That, and the Unix API (execve(), open(), read(), write(), close()) that allows making the call, passing input, reading output, in one standard way for all programs.

    MCP is both the application to call, and the Unix API to call them. Your agent harness is bash. Codemode is certainly a neat/more efficient way to write the code, but it's not necessary. What's necessary is getting a very large library of programs, like Unix programs (find, cat, grep, sed, awk, tr, cut, sort, tail, head, etc) that each have powerful functionality. The more programs you have, the more your bash script can do to chain them together and get more powerful results.

    LLMs only use Bash because they didn't yet have MCP and a large library of MCP programs. Bash is a stopgap solution. The future is MCP (or whatever replaxes it).

  • andrewingram 1 hour ago
    Over the last week or so on Twitter, I've seen a lot of people talking about how various ways of using MCP don't compose, but nobody seems to be clarifying what that means with a concrete fashion; which leads me to try and read between the lines.

    In this very post:

    > While a lot of things have improved about MCP, quite a few have not. The biggest issue with MCP continues to be that it’s hard to compose. Even with codemode, which is just a neat little sandbox to allow composing of tool calls, MCP doesn’t fully deliver on this. But that at this point is less the problem of MCP but the MCP servers out there and different approaches of harnesses to work with them.

    Can we get a bit more clarity on this? With codemode, what's the gap? I've also been investigating the search+execute MCP server pattern evangelised by Cloudflare (it uses codemode inside the MCP server to bypass the need to expose a large number of individual tools), but i've seen people say that doesn't compose well either.

  • adithyassekhar 1 hour ago
    Best mcp I’ve seen is the chrome devtools one
  • blamestross 3 hours ago
    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.

    • rcarmo 2 hours ago
      In enterprise integrations, that is just not an option. MCP has pretty much taken over there.
    • avereveard 2 hours ago
      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 2 hours ago
      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.
  • ppsreejith 3 hours ago
    Anyone found a good file upload solution for MCP? Or is the best practice to use HTTP to upload files outside MCP?
    • jerkstate 11 minutes ago
      I just implemented this with oauth - basically I have a tool that returns a signed URL that the client can PUT the file to. Works in ChatGPT Work mode. My use-case was to have the client generate an image and upload it.
    • hobofan 3 hours ago
      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 2 hours ago
      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".
  • mi_lk 3 hours ago
    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 3 hours ago
      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 3 hours ago
        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 3 hours ago
          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 3 hours ago
        "Now we talked so much about Codemode, it might be worth explaining what that even is."
        • Pxtl 1 hour ago
          Yeah, since pi is my first agent harness I barely understand what MCP is beyond an API standard. When the essay started talking about codemode without any introduction I was having trouble following it.
  • OleksandrC 3 hours ago
    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.

    • assumed_throwaw 1 hour ago
      > Key Feature: Respects your terminal — Streaming Markdown and live tool output, reflowed for display in the terminal. Only redraws the current streaming line or the input area, native scrollback is preserved. Does not take over or mess with your terminal.

      Thank you. I've been frustrated by harnesses hijacking the terminal and breaking basic features such as scrolling and text selection.

      It even sends BEL when the agent completes, which makes so much sense, yet Pi never implemented it.

      I'm definitely going to use it over the next few days and hopefully make the switch.

  • aussieguy1234 3 hours ago
    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.

  • Pxtl 1 hour ago
    It sounds like the main value-add of codemode is security, since its a sandboxed language that can call your MCPs with elevated privs.

    But pi doesn't have security. Pi is full yolo, it's on the user to run it in an environment that minimizes the blast radius if the LLM goes haywire.

    So I'm not sure what the plan is here. Will pi support running certain tools like bash as a different OS user than owner of the pi process?

  • croes 3 hours ago
    > 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 3 hours ago
    so much MCPs in the FTA yet not a line about what MCP actually is.
    • seanhunter 3 hours ago
      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 3 hours ago
      1. The first paragraph has a callback and link 2. You're not the intended audience of the post most likely
    • tiborsaas 2 hours ago
      It's just like API-s, but with built in documentation.
    • otabdeveloper4 3 hours ago
      MCP is the NIH non-standard version of OpenAPI.
  • benjy3379 1 hour ago
    [dead]
  • 77rushi77 2 hours ago
    [dead]
  • Bayard_ne 3 hours ago
    [dead]
  • Sha1rholder 3 hours ago
    An article pretending to address its title, but just beating around the bush.
    • embedding-shape 3 hours ago
      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.