What MCP servers actually do (and when they break)
A short field guide after a month of running MCP servers in production agent loops.
Every AI tool now claims to support MCP. After running half a dozen MCP servers in actual agent loops for a month, here's what holds up and what doesn't.
What MCP is, briefly
Model Context Protocol is a contract between an AI client and an external tool server. The server publishes a list of tools and resources; the client (Claude, Cursor, your custom agent) calls them with structured arguments. JSON-RPC over stdio or HTTP. That's it.
The value isn't the protocol itself. It's the network effect: any MCP server works with any MCP client, so you only write the integration once.
Where it shines
Long-lived stateful tools. A Postgres MCP server keeps the connection open, runs a query, returns rows. No per-call connection overhead. Same pattern works well for git repos, Linear, Notion, file systems, browser sessions.
Resource discovery. Servers can publish a list of resources (files, tables, channels) and let the model pull them by URI. This works much better than dumping everything into context.
Where it breaks
Tool naming collisions. Two servers both expose a search tool, the model picks the wrong one or refuses to choose. Prefixing helps but isn't enforced.
Stdio servers and zombies. If the client crashes mid-call, you get an orphaned subprocess holding a port or file handle. Some clients clean up, some do not. Build a pid file or a watchdog.
Auth. Every server invents its own auth flow. OAuth, env-var tokens, mTLS, local-only with a Unix socket. The spec doesn't standardize this, so configuration is per-server and brittle across machines.
Latency. Each tool call is a round trip through JSON-RPC. For a chatty agent making 30+ calls per task, that adds real wall-clock time even when the server is local.
A working pattern
What works for me: one MCP server per logical domain (database, repo, browser), strict tool naming, env-var auth, and a wrapper that retries idempotent calls on connection drops. Anything more complex than that and I write a custom tool instead.
Related
Once you have an agent making MCP tool calls reliably, prompt quality becomes the bottleneck. fixmyprompt.net is where I send my tool-use prompts when the model starts ignoring them.
Comments
No comments yet — be the first.