In an MCP deployment, one component attaches the protocol version and its capabilities to every request it sends, and it communicates with exactly one server. Which participant is this?
Select an answer to reveal the explanation.
Short Explanation
One client, one server, every time, so you'll never see a client juggling two. It stamps each request with the protocol version and its capabilities because there's no handshake to remember them. If it talks to many servers, it isn't a client.
Full Explanation
Each client is created by the host and communicates with exactly one server, maintaining a one-to-one relationship. The architecture specification lists the client's duties as communicating with exactly one server, attaching protocol version and capabilities to every request, routing protocol messages, managing subscriptions and notifications, and maintaining security boundaries between servers. Because the 2026-07-28 revision is stateless, those per-request _meta fields replace the information once exchanged during an initialization handshake. The host coordinates many clients and therefore many servers; it is the container that creates clients rather than the component that holds a single connection. The server receives requests and exposes tools, resources and prompts; it reads the client's version and capabilities rather than attaching them. A gateway connects to several back ends and serves several hosts, so it fails the exactly-one-server test, and toward its back ends it would itself run a separate client per connection. Exam caveat: io.modelcontextprotocol/protocolVersion and io.modelcontextprotocol/clientCapabilities are required on every request, while clientInfo is recommended but optional. Operational check: capture a request from the component and confirm its _meta carries protocolVersion and clientCapabilities, and confirm the component holds a connection to only one server.