In depth
An MCP client is the side of the protocol that consumes capabilities. It maintains a 1:1 connection with a single MCP server and handles the protocol lifecycle: initialization, capability negotiation, tool invocation, resource fetching, and graceful shutdown.
In practice, MCP clients are embedded inside MCP hosts. A host can contain many clients — one per connected server. For example, Claude Desktop is a host that spawns multiple clients, one for each MCP server configured in `claude_desktop_config.json`.
The client's job is to abstract the server: it presents tool calls to the LLM in a unified format, regardless of whether the underlying server is a local subprocess or a remote HTTP endpoint. It also handles authorization flows (OAuth), progress notifications, and sampling requests from the server back to the host's LLM.
Client implementations exist in all official MCP SDKs. If you're building a custom AI product and want MCP support, you embed a client library into your app.