MCP Was a Mistake. Here Are 200,000 Tokens That Prove It. A developer measured the token overhead of connecting 10 popular MCP servers and found that 111,713 tokens of JSON schemas are injected into the context window before any user message, costing over $1,700 per year at Claude 3.5 Sonnet pricing. The developer built a CLI proxy called mcptoon that reduces token usage to 3,247 tokens per conversation, and cites examples from Anthropic and Cloudflare showing that avoiding tool schema injection can cut token consumption by up to 98.7%. "mcp were a mistake. bash is better." — Peter Steinberger, OpenClaw founder I didn't want to believe it either. MCP was supposed to be the USB-C of AI — one protocol to connect everything. Anthropic, OpenAI, Google all backed it. 97 million monthly downloads. 17,000 servers. But then I measured what MCP actually does to your context window. I connected 10 popular MCP servers to a token counter. Here's what happened before I typed a single word: | Server | Tools | Tokens Injected | |---|---|---| | Filesystem | 11 | 3,847 | | Brave Search | 8 | 2,103 | | Sequential Thinking | 3 | 890 | | Memory | 9 | 2,567 | | Puppeteer | 15 | 5,890 | | Postgres | 19 | 8,231 | | Notion | 24 | 13,780 | | GitHub | 28 | 12,440 | | Slack | 22 | 14,672 | Google Drive | 31 | 47,293 | Total | 170 | 111,713 | 111,713 tokens. Before your first message. That's not a typo. Connecting 10 MCP servers to Claude means over 100K tokens of JSON schemas get injected into your context window. You haven't asked a question yet. You haven't made a tool call. The schemas are just... sitting there. At Claude 3.5 Sonnet pricing $3/M input tokens : That's more than a Claude Pro subscription. You're paying $1,764/year to read JSON braces describing tools you might never use. The 111K is just the schema injection. When you actually call a tool, MCP wraps the result: { "content": { "type": "text", "text": "{\"file\": \"app.py\", \"size\": 1024}" } } The actual content is 38 characters. The wrapping is 47 characters. 55% of your result tokens are JSON overhead. With 20 tool calls per conversation: Your $0.54 conversation now has 130K tokens that serve zero purpose. When YC's CEO said "MCP sucks honestly," he was talking about exactly this. The protocol design has a fundamental flaw: it assumes context is free . In 2024, when Anthropic designed MCP, context windows were 200K tokens. Loading 100K of schemas seemed fine — you still had 100K left. But now we're building complex agent workflows. Multi-turn reasoning chains. Tool call sequences that span hundreds of messages. When you're 30 messages deep into debugging a production issue and your context is already at 150K tokens, those 111K of MCP schema injection aren't just wasteful — they're the reason your conversation falls off a cliff . Anthropic's own engineers published a blog showing token consumption could drop from 150,000 to 2,000 — a 98.7% reduction. Their solution? Stop loading tool schemas into context. Instead, let the model write code that calls tools at runtime. In other words: the fix for MCP is to not use MCP the way it was designed. Cloudflare took this further. Their 2,500-endpoint API originally required 1.17M tokens of schema. They compressed it to 1K tokens by exposing just two functions: search and execute . 1.17M → 1K. That's not optimization. That's admitting the architecture was wrong. Yes. And jQuery has billions of page loads. Popularity doesn't mean the design is correct. It means it was first, it was backed by a major player, and the alternatives weren't ready. The real question is: of those 97 million downloads, how many are actively used in production agent systems? A developer on HN tested 15 MCP servers for three months and kept only 6. The top comment said: "GitHub MCP is a waste of tokens — Claude Code has gh CLI built in. Same for Playwright." When the CLI equivalent exists, MCP loses every time. The only servers that survived were ones with no CLI alternative. I'm not just complaining. I built mcptoon https://github.com/activeing123/mcptoon — a CLI proxy that sits between your agent and MCP servers: {"content": {"type":"text","text":"..."} } Before: 111,713 tokens → $0.33/conversation After: 3,247 tokens → $0.01/conversation Savings: $1,760/year pip install mcptoon 250KB binary. Zero dependencies. 486 tests. Apache 2.0. MCP's protocol design is not the problem. Standardized tool interfaces do matter. The problem is the implementation pattern : loading every tool schema into the model's context at startup. This is like forcing a carpenter to read every tool manual before picking up a hammer. The manuals don't go away. They just sit on the workbench, taking up space, while the carpenter tries to work around them. The fix isn't a new protocol. It's a smarter proxy layer that loads schemas on demand, strips JSON wrapping, and lets the model focus on the actual task. MCP wasn't a mistake. But the way we use it is. All token counts are measured with tiktoken cl100k base , not estimated. Measurement scripts and raw data: GitHub repo. Independent project, not affiliated with Anthropic.