MCP client
An MCP client is the side of a Model Context Protocol connection that consumes capabilities. It opens the transport, sends the initialize request, reads the server's tool list, and decides which of those tools to expose to a model. Claude Desktop, IDE extensions, and custom agents are all MCP clients.
What is an MCP client?
An MCP client is the program holding the model. It connects outward to servers, gathers what they offer, and presents some or all of it to the model as callable functions.
The client owns the conversation. It chooses which servers to connect to, when to refresh a tool list, and what to do when a server misbehaves.
What does a client do during a connection?
Four things, in order: open the transport, send initialize with the revision it prefers, read back the server's revision and capabilities, then call tools/list to find out what is available.
Our own tester is a minimal client and does exactly this, which is why it can report what a server answered without knowing anything about the product behind it.
Why does the client's behaviour matter to a server author?
Because the client decides what the model sees. A server returning 213 tools is not offering the model 213 options: the client may paginate, filter, truncate, or refuse, and every tool it does pass through spends context.
The specification is explicit that a client "MUST consider tool annotations to be untrusted unless they come from trusted servers", which is the same principle applied to metadata. Descriptions and annotations are the server's claims about itself, and a careful client treats them that way.
Example
Our tester connected to https://gitmcp.io/docs on 5 August 2026, sent an initialize request, received revision 2025-03-26 back, and then called tools/list and read 5 tools. It reported those 5 and stopped. A production client like an IDE assistant would go further and hand some subset of them to a model, and that subset is a client-side decision the server has no say in.