Chapter 4. MCP Clients: Advanced Use and Best Practices
In Chapter 3, you learned how to build a client that supported the server primitives: tools, resources, and prompts. You learned a standard architecture for building clients and how to manage stdio and Streamable HTTP connections. To round out your client-building knowledge, this chapter will show you how to provide the server with client-based capabilities, use OAuth to allow servers to authorize your client users, and build for various models and model providers. You will also learn how to discover servers with the MCP Registry, connect to multiple servers, manage your context window with context engineering, and follow best practices for building your client.
Providing MCP Client Capabilities
This section introduces the use of callback functions to provide client capabilities to the connected MCP server. A client can provide a server with three major capabilities: sampling, where the server is able to request chat completions from the LLM the client is connected to via the client; roots, which indicate to servers what areas in the host application’s filesystem the server has access to; and elicitations, which allow the connected server to request information from the user.
Warning
Roots, sampling, and logging are all in the process of being deprecated in the specification and in the official SDKs, as server-initiated requests are no longer in the specification. They are still covered here so that you can support older ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access