r/WebAfterAI · 23h

"MCP is dead."
Is it though?

The context-bloat complaint was real and big names piled on. Then it quietly got fixed. The protocol isn't dead — it's evolving.

Pick per job, not per side
Clay-style CLI vs MCP illustration: pick per job, not per side
The actual complaint

Context bloat was real.

Connect MCP servers and every tool definition loads into the window up front — used or not.

143K tokens
/ 200K window

Gone before the model reads a single thing — 3 servers, ~40 tools (GitHub, Slack, Sentry). — Apideck

3×–9.4×slower per call / on first callJira MCP vs REST — Eric Holmes
4×–32×more tokens than the CLIMCP vs equivalent CLI — Scalekit
12,800tokens for Linear's 42 toolsloaded every turn, even for 1 call — Quandri
Why the CLI argument lands

The model already learned the CLI.

gh, psql, aws — straight from man pages and StackOverflow. Same lookup, wildly different price.

pipe through grep & jq reproduce a bug in the terminal one interface for you & the agent
terminal — ~hundreds of tokens
# CLI: a couple hundred tokens total.
# nothing preloaded, the model knows this.
gh issue view 1234 \
   --json title,state,assignees

# MCP for the same lookup: the call is
# tiny — but the server's tool defs sit
# in context up front, used or not.
The part the "dead" crowd skips

It already got fixed.

code execution with MCP — Nov 2025
servers/ ├── google-drive/ │ ├── getDocument.ts │ └── index.ts └── salesforce/ ├── updateRecord.ts └── index.ts

The agent browses tools as files and loads only what it needs. Data stays in the sandbox; only the result returns.

One published workflow
150,000 tokens
↓ to 2,000 — a 98.7% cut

Per Anthropic's own engineering blog. Cloudflare hit the same idea independently — Code Mode.

Claude Code deferred loading · ~85%+ less
So when do you use what?

It was never MCP vs CLI.

Use the CLIgh · psql · aws

A real CLI exists and the model already knows it. Lightest, fully composable, debugs in the terminal.

Use SkillsCLI baked in

Repeatable multi-step workflows. Loaded only when invoked — not every turn.

Use MCPNo-CLI SaaS

Web-only services, teams needing shared auth & permission scoping, or prod DBs where a server blocks a stray DROP TABLE.

The real shift

From "load everything" to "fetch on demand."

🗂️Old MCPload everything up front
🧱Context bloatslow & wasteful
⚗️New approachfetch on demand
📉Lower tokensfaster, smarter
🎯Better outcomesload only what you need

The naive "load everything up front" version of MCP is dying — and that's healthy.

Bottom line

Load only what you need, when you need it. The headline is clickbait — the protocol isn't dead, it's evolving.

CLI for trained-in tools MCP for no-CLI SaaS, team auth & DB guardrails Pick per job, not per side
Receipts · this very deck

Published two ways.

Same artifact, two doors — an MCP and a CLI for the exact same job. Proof that it isn't a side to pick.

dropthis — CLI
# one command, model already knows it
dropthis publish mcp-is-dead.html \
   --title "MCP is dead?" --json
live ↗ mcp-is-dead.dropthis.app
vs
same deck
dropthis — MCP tool
// typed tool call, no CLI on the box
dropthis_publish({
  content: "<deck html>",
  title: "MCP is dead?"
})
live ↗ mcp-is-dead-mcp.dropthis.app

Pick per job, not per side

← / → · space to advance