by joshstrange | 2025-05-05 20:37:35+00:00
I've seen a number of projects re-implement the same MCP servers that exist elsewhere, and I wonder if we're doomed to do this over and over and over again. One of the huge draws of MCP servers was a reusable standard to describe tools, but if everyone re-implements their own tools, then where's the value?

I assume this comes from the fact that it is very easy to create an MCP server, it is much harder to create a good MCP server. And so, a number of companies have fallen into "not invented here" or they just want to be able to control the quality of the MCP servers (that's fair). a "GitHub MCP" is a dime-a-dozen but I wrote a lot of MCP servers just for myself because often the servers provided 80% of what I wanted. It's early days for MCP but it's been easier in all cases to just write my own MCP from scratch instead of trying to fork off something existing. I'm sure that will change as time goes on but MCP is, often, a thin layer over a SDK/API, it's not hard to implement.

All of this gets to an idea that I've been playing around in my head and and have written about a fourth of a blog post on, which is "MCP interfaces". MCP Interfaces, put very simply, is the concept of a pluggable way to swap out different MCP servers that may not implement the exact same tools, but are the same spirit of tools. So, for example, a way to plug in Google search, Bing search, SearXNG, or Jina.ai search.

Why do we even need "interfaces"? Well, throwing all the tools at every LLM is a recipe for disaster in multiple ways (privacy, security, sanity, the list goes on) and often agents work best with a limited set of tools they know how to best utilize. That's all well and good and I'm sure most SaaS' out there will write their own tools or pick off-the-shelf MCP servers but for the open source world I've been thinking it would be nice to slot in your own MCP tools for certain tasks.

Search is an easy example. Lots of tools can make use of search (other good examples might be headless/headed browser automation, or memory/RAG) and I've seen the trend of different LLM application asking for all sorts of ways to do search. Some ask for your Google API key, some want Jina, some want SearXNG (some want to spin up their own docker container for SearXNG). It's all over the place, it's inconsistent, and it's a ton of wasted work. I don't want to ask the developer of "insert cool LLM application" to support my special-snowflake MCP server or tool, but I also don't want to just throw additional tools at the agents.

So far the best I can come up with is "MCP Interface" where an application can have a "minimum viable" tool(s) definition and then you can slot in MCP tools that meet that standard. Maybe "Interface" is too strict even, maybe it would just work to say "Here are my search tools, use them wherever you would provide an agent with search features". "MCP Tagging"?

I'm not sure and in a year maybe we won't even be talking about MCP or maybe the world of plug and play will be tiny/non-existent so this idea will not matter. In a way it seems too utopian to imagine we'd end up in a place where a user can say "I have my own search, let's use that" and instead we will have MCP app stores inside SaaS products (with no overlap or use outside the SaaS in question), or maybe we won't even get that, you'll just get whatever the SaaS wrote or, more likely, got from the open source community.