Client Architecture
rust-mcp-sdk provides two levels of client handler abstraction, mirroring the server side.
Handler Traitsโ
| Trait | Use Case |
|---|---|
ClientHandler | Recommended - override only needed methods |
ClientHandlerCore | Advanced - three raw methods for full message control |
McpClient Traitโ
The McpClient trait provides methods to communicate with a connected server:
request_tool_list()- list available toolsrequest_tool_list()- list available toolsrequest_tool_call()- invoke a toolrequest_resource_list()- list resourcesrequest_resource_read()- read a resourcerequest_prompt_list()- list promptsrequest_prompt()- get a promptrequest_completion()- get completionsserver_version()- get server identity infoshut_down()- gracefully disconnect
Client Runtimesโ
| Transport | Function |
|---|---|
| Stdio | client_runtime::create_client(McpClientOptions { .. }) or client_runtime_core::create_client(McpClientOptions { .. }) |
| Streamable HTTP | client_runtime::with_transport_options(client_details, StreamableTransportOptions { mcp_url, .. }, handler, None, None, None) |
| SSE | client_runtime::with_transport_options(client_details, StreamableTransportOptions { mcp_url, .. }, handler, None, None, None) |