We Already Had the Protocol

RSS did everything the open social web needed. Publish once, in a standard format, and anyone can subscribe without asking your permission. No gatekeeper, no algorithm deciding who sees what, no company standing between a publisher and a reader. For a while, in the 2000s, that's basically what blogging was, and it worked.

It didn't lose to something technically better. Google Reader — the dominant way people actually consumed RSS — got shut down in 2013, and the honest reason wasn't "usage declined," which was the official line. The real one, reported at the time and confirmed since: Google couldn't insert ads into a product where the reader controlled the feed. The company had already subsidized the RSS reader market into dependency on Reader, starving the competitors that might have kept the ecosystem alive without it, and once Reader stopped serving the Google+ engagement push it was built to feed, there was no reason to keep it running. Embrace, extend, extinguish — the same pattern that had a name back when it was Microsoft doing it to open standards in the '90s.

The open version usually still exists

RSS's actual spiritual successor for social media is ActivityPub — the protocol behind Mastodon and the rest of the fediverse. It's real, it works, federation actually functions the way RSS's did. It also has a rounding error's share of the users Twitter or Instagram have, for the identical reason Reader got killed: nobody with Meta's resources has an incentive to pour money into a protocol they can't fence off. The thing that makes a protocol reusable by everyone — no gatekeeper, no lock-in — is the same thing that makes it unfundable by the one company with the resources to make it good. That's not a coincidence twice. It's the actual mechanism.

Worth saying plainly, because it's easy to overcorrect into "the industry always reinvents everything": sometimes the reuse does happen, quietly, exactly where there's no lock-in to lose. OAuth and OIDC run on plain HTTP and JSON instead of a bespoke transport. Email addresses are the de facto identity layer for most of the web — every "sign in with your email" link is SMTP doing real work, decades after anyone was arguing about it. Reuse isn't rare. It's just conditional on nobody's business model depending on preventing it.

MCP is having the RSS conversation right now

Forrester's 2026 predictions say 30% of enterprise app vendors will ship their own MCP server this year. Read as standardization winning, that's good news. Read the other way, it's thirty-plus vendors each implementing the same spec with their own quirks, their own interpretation of the EMA extension, their own edges — which is the same "three vendors, three names for one field" problem from field mapping, just moved up to the protocol layer. And Forrester's own research notes that if MCP adoption stalls at all, competing agent protocols — A2A, ACP, whatever a big enough vendor decides to ship instead — have room to fill the gap. The "we all agreed on one shape" moment isn't secure. It rarely is, once there's something worth controlling on the other side of agreeing.

Here's the part worth saying outright: for most of what agent tool-calling actually needs to do, none of this was necessary in the first place.

The CLI already solved this

What an MCP integration requires you to build, compared to what a CLI already has the MCP path stand up an MCP server adopt EMA or bespoke OAuth JSON-RPC transport, session model track a spec that's still breaking things — session IDs, DCR real value: one governed, audited entry point across many users, many tools the CLI path the tool's own CLI, already exists existing auth — profiles, contexts plain shell, no new transport versioned by the tool itself, discoverable with --help real cost: no central governance across many users at once
most agent tool-calling only needs the right column. the left column earns its cost only when the thing you actually need is centralized, audited access across many people and many tools at once.

A CLI already has an auth model — whatever the tool already uses, aws sso, kubectl contexts, gh auth login, an API key in an env var. It's already versioned, by the people who own the tool, on their own release cycle. It's already discoverable, with --help and man pages an agent can read the same way a person does. It runs over a shell, which every agent environment already has, instead of a new client-server transport with its own session semantics to implement and keep working. None of that needed inventing. It was already sitting there, the same way RSS was already sitting there before anyone built a fediverse.

I don't have to reach far for evidence. Nothing in this blog's own publishing pipeline — checking mesh's CI status, pushing commits, uploading a screenshot to this chat, checking a peer's connection status — goes through an MCP server. It goes through git, curl, and a handful of chatops commands, because that's what was already sufficient. The one MCP server in the loop is for browser automation, which doesn't have as natural a CLI equivalent. Everything else didn't need one.

Where the protocol actually earns its cost

None of this is an argument that MCP is pointless. Enterprise-Managed Authorization solves a real problem: one company, many employees, many MCP-native tools, one governed and audited entry point instead of everyone individually authorizing everything with no central record. That's a genuine, narrow case, and it's worth the protocol overhead. It's also a much smaller slice of what's actually being built right now than the hype around MCP suggests. A single developer's agent running gh pr create doesn't need a server, a session model, or a spec that's still changing its own authentication flow mid-year. It needs the CLI that's already there, with the auth that's already configured, doing the thing it was already built to do.

The pattern isn't that the industry forgets what's already built. It's that whoever's positioned to profit from controlling the new layer has every reason to build one anyway, and the rest of us adopt it because it's there, not because we checked whether we needed it.