MCP defines three roles.
The host is the AI application the user actually interacts with: Claude Desktop, Claude Code, an IDE like Cursor, or your own agent. The host owns the model loop, the UI, and the security policy. It decides which servers to connect, gathers user consent, filters which tools reach the model, and mediates approvals.
A client is the protocol connector object the host creates to talk to one server. Each client maintains a 1:1 stateful session with exactly one server, handling initialization, capability negotiation, request/response correlation, and notifications. A host that connects to five servers runs five clients.
A server is the program that exposes capabilities: tools it can execute, resources it can read, and prompt templates it offers.
A useful mental model:
Host (Claude Desktop)
Client 1 <-> Server A (filesystem, stdio)
Client 2 <-> Server B (GitHub, Streamable HTTP)
The host receives a tool-use request from the model and routes it through the right client. It gets the result and inserts it back into the model's context.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓