MCP by Design

SERIES · 9 NOTES · 2026

Where MCP Without the SDK took the protocol apart message by message, this series is about the engineering around it. An MCP server is written by an agent, called by an agent, and often evaluated by an agent, and every one of them can confabulate. The work is putting things into that loop that cannot.

Ten notes: why I write these servers in Go rather than Python, how to compose several servers into one process instead of running three that cannot see each other, how to steer an agent from server middleware rather than from tool descriptions, where knowledge from a session goes so it does not vanish when the conversation ends, what happens when a tool’s description does not match what the tool does, how Starlark is embedded so an agent can write the code that updates a dashboard after the conversation ends, how Hive maps a CSV in object storage to a table without ingesting it, how a session handle lives in a tool argument after the protocol stopped carrying one, how an OpenAPI document is indexed so a search for list customers hits every catalog, and how the process brokers OAuth so Claude gets a token without the server becoming an identity provider.

All of it comes out of txn2/mcp-data-platform, an Apache-2.0 Go platform that fronts Trino, DataHub, and S3 behind one MCP endpoint, also available hosted as Plexara. Design and SDLC are different work and a server needs both. A well-designed server can still be unverified, and a heavily tested one can still be badly designed.

MCP by Design