
Your MCP server is not an API adapter
A lot of MCP servers I see in the wild look like this: @mcp.tool () async def get_thing ( id : str ): resp = await httpx . get ( f " https://api.example.com/things/ { id } " ) return resp . json () Fetch, forward, done. A thin HTTP proxy with a JSON Schema wrapper. For some use cases, that's enough. The servers I keep coming back to do something different. They hold state and pre-compute answers. An agent hitting a thin wrapper might need three round trips and 30 seconds. The same agent hitting a server that does real work gets its answer in one call, under a millisecond. Preloaded in-memory index Here's a failure mode I run into constantly: the agent needs to find something but doesn't know the exact ID. Most APIs only support exact lookups. No ID, no result. The conversation dead-ends with "I couldn't find that resource" and the user gives up. I built a server that wraps a CDN management API. Hundreds of properties, and the agent regularly needs to find which one handles a given host
Continue reading on Dev.to
Opens in a new tab
