The architecture: host, client, server, transport
The four moving parts of every MCP connection and how they fit together.
MCP has four roles, and keeping them straight makes everything else click.
Host — the AI application the user actually interacts with (Claude Desktop, Claude Code, an IDE). The host coordinates everything and, crucially, is where user consent lives.
Client — a connector inside the host that maintains exactly one connection to one server. If a host talks to three servers, it runs three clients. This 1:1 pairing keeps server boundaries clean.
Server — the program you write. It exposes capabilities (tools, resources, prompts). A server runs locally (launched by the host, talking over standard input/output) or remotely (an HTTP endpoint serving many clients).
Transport — how bytes move. Two options today: stdio for local servers, and Streamable HTTP for remote ones. (The old "HTTP+SSE" transport is deprecated; SSE now only exists as an optional response stream inside Streamable HTTP.)
Under that, MCP separates a data layer (the JSON-RPC messages: discovering capabilities, calling tools, sending notifications) from the transport layer (stdio or HTTP, plus auth). You mostly work at the data layer; the SDK handles transport.
The single biggest change in the current spec: MCP is now stateless. The old initialize handshake is gone. Instead, every request self-describes — it carries the protocol version, the client's capabilities, and client info in a metadata field, and the server echoes its own info back on every result. There's a server/discover call a client may make up front to learn what a server supports, but it's optional because each request already negotiates itself. Protocol-level sessions (the old Mcp-Session-Id) are also gone; if a server needs to remember something across calls, it mints an explicit handle (like a cart ID) and receives it back as a normal argument.
Why does statelessness matter to you as a builder? It makes remote servers far easier to scale — no sticky sessions, any instance can handle any request — which is exactly what enterprises hit walls on with the older design.
Draw the four roles for a concrete case: Claude Desktop (host) using a weather server you'll build. Label which part runs on your machine, which the host launches, and which transport connects them.
Enjoying the free lessons? Get an email when we publish new courses and updates — no spam, unsubscribe anytime.
Discussion (0)
Ask a question or share what worked for you. Comments are reviewed before they appear.
No comments yet. Be the first to start the discussion!