MCP: Brilliant Idea, Bad Execution

May 27, 2025

Reading time ~4 minutes

Everyone is currently racing to add AI to their applications. The Model Context Protocol (MCP) solves the problem of writing an integration for each service by using a protocol that can be plugged into any system. It is gaining serious traction but it still is wild west.

The problem? The organization behind MCP (Anthropic) doesn't even implement their own specification properly. Also the specification is a vibe-coded mess. Writing good protocol specs can take many years e.g. hardware protocols like USB, or software-protocols like medical standard FHIR but Anthropic is speed-running this.

Why Everyone's Confused About MCP

The documentation reads like someone wrote the implementation in code first and then let the LLM write the documentation. First many people seem to be confused by the introduction that introduces the terminology of host, client and server. The terminology is reasonable but it could be probably better communicated. Here is what is actually happening: Your application bundles various clients that connect to external servers. Think of it like your app connecting to multiple SQL databases. You have multiple database clients, but from the user perspective, it's just your app talking to databases. When used for information retrievel it is not even far of from a database.

So that is not novel concept. The novel part is merely introducing that aspect as something special.

Anthropic Doesn't Follow Their Own Rules

Anthropic is pushing this protocol, however they do not fully implement the spec with Claude Desktop nor Claude Code.

HTTP Transport? Not supported .

Transport mode via HTTP is not supported, despite being part of the core specification. It is suprising that the organization that built this, is also not really supporting it properly. With billions pouring into AI I would expect that there is enough money to hire a technical writer.

The transport design has been critized before by Rasmus Holm in this great post.

For HTTP support in Claude Desktop there is a workaround to utilitize other tools to act as a proxy .

e.g. for the claude_desktop_config.json you configure

"your tool": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://yourmcp.local/mcp",
        "--allow-http"
      ]
    }

On a side note about this config file: There is no documentation on the claude_desktop_config.json. After all it is application specific code and should not be part of the MCP spec but in the Claude documentation. However, there is some random documentation scattered aroud like here where it tells you how to add env variables.

MCP Resources are not implemented

I wanted to retrive simple values to the chat. According to the documentation this can be done with MCP resources. It works like a REST interface where you can pass identifiers in the URI. Claude doesn't support resources either. Everything gets forced through tool implementations instead, defeating the purpose of having resources as a separate concept.

MCP for Robotics and IoT: Early But Promising

Mittel%20%28MCP%20sketch%29 There are no official completed SDKs for C++ or Rust, languages that are commonly used for embedded development. Without the SDK the spec is too complex to quickly built it yourself per project. What can be done instead as of now is to run a bridge MCP server on your computer that uses then rest.

The ESP32 is a popular microcontroller with bluetooth and wifi support and GPIO pins. As you can run the async framework tokio used by the mcp rust SDK on an ESP32 you could run an MCP server on an ESP32. Smart Homes could indeed get smart and a central LLM intelligence can manage the home. The privacy aspect of using this in intimate spaces remains challenging as local LLM hosts are super expensive, energy-intensive and LLM scaling benefits like KV-caching and dissagregated serving can not be used in low-request environments. For now, economics force a combination of cloud computing and edge processing.

For a proof of concept, I built an integration to let an agentic system control my standing desk via chat messages. I am currently waiting for some additional electronics components to solder the prototype into a complete installation.

What Needs to Happen Next

MCP represents a critical standardization opportunity, but execution must match the vision:

For Anthropic: Lead by example. Fully implement your own specification in Claude, especially HTTP transport and resources. Hire a technical writer.

For the Community: The IoT opportunity is real, but it needs proper SDK support. Native embedded implementations will unlock applications we haven't even imagined yet. We need to write the software libraries.

The idea behind MCP is brilliant. The execution needs serious work.


Have you tried implementing MCP in your projects? I'd love to hear about your experience, especially if you've encountered the limitations I've described.