MCP and the narrow waist lesson
Is MCP making a mistake? Why are they trying to expand beyond the simplicity of tool call and response?
I don’t debate the benefit of creating a bridge between the unstructured language world of LLMs and the structured world of programming and data. This ability is unlocking many new paths in software and system interactions.
However, if you look at the most recent version of MCP docs, you’ll notice increasing complexity. The proposed fundamental server primitives include tools, resources, and prompts. The client primitives are sampling, elicitation, and logging. The definitions may not be what you think and are sometimes vague and overlapping.
The adoption and evolution of the Internet taught us some important lessons in interoperability. Notably the narrow waist of IP (Internet protocol) at the middle of the TCP/IP hourglass model.
Maybe MCP should draw from this lesson and focus on the narrow waist. Tool call and response with arbitrary content. It’s the simple clarity of tool name, params, response, and description. The beauty of a bridge from unstructured to structured, akin to the simplicity of IP.