A critical look at MCP
What MCP Is and How It Differs from Existing Approaches
- Many describe MCP as “JSON‑RPC with predefined methods for LLMs”: an RPC standard with built‑in tool discovery and metadata that clients can query (tools, resources, prompts).
- Supporters argue this is better than OpenAPI for LLMs:
- Tool descriptions are much shorter than full OpenAPI specs, saving tokens.
- The LLM stays in its “text out” paradigm; an engine interprets tool calls.
- Specs can be dynamic and session-based (tools added/announced at runtime).
- Skeptics counter that:
- OpenAPI + dynamic serving and
/.well-knownalready solve discovery. - MCP tool lists are trivially convertible to OpenAPI; MCP adds complexity without clear new capability, especially for remote servers.
- OpenAPI + dynamic serving and
Transport Layer and Statefulness
- Major controversy centers on transports:
- Stdio is seen as simple and Unix‑like, but brittle for larger systems and hard to combine with existing servers.
- HTTP+SSE / “Streamable HTTP” is widely criticized as an overengineered attempt to emulate a bidirectional socket using separate read/write endpoints and session IDs.
- Several argue WebSockets (or plain TCP) are the obvious fit for full‑duplex, stateful interaction; the published reasons “why not WebSockets” are called weak or misguided.
- Others defend HTTP-based designs as friendlier to serverless, firewalls, and modern infra, though even supporters note that MCP’s “statelessness” is leaky (sessions, resume tokens, sampling).
Spec Quality, Tooling, and Security
- Recurrent theme: the spec site is vague, reads like LLM‑generated marketing, and forces developers to reverse‑engineer SDKs and schemas.
- Concerns:
- Underspecified behaviors (e.g., how exactly streaming, sessions, and resumability work).
- Multiple entry points and transports increasing attack surface.
- Difficulty auditing logging, state, and data flows when hidden behind SDKs.
- MCP authors and contributors respond that:
- It’s very early; auth and other parts are being revised with input from security experts.
- OAuth 2.1–style flows are recommended for non‑local servers; local/stdio can remain simpler.
Developer Experiences and Adoption Dynamics
- Many implementers report painful experiences: broken SDKs, unclear errors, non‑working servers in registries, and brittle stdio behavior.
- Others report strong practical wins: very low barrier to writing simple servers, rapid tool wiring, and non‑developers successfully exposing data sources to LLMs.
- Several frame MCP as “worse is better”: technically messy but good enough to ignite a tooling ecosystem; fear is that early design mistakes will ossify and be hard to undo if MCP becomes the de facto standard.