pub struct Client<T: Transport, H: ClientHandler = NoOpHandler> { /* private fields */ }Expand description
An MCP client connected to a server.
The client provides methods for interacting with MCP servers:
- Tools:
list_tools(),call_tool() - Resources:
list_resources(),read_resource() - Prompts:
list_prompts(),get_prompt() - Tasks:
list_tasks(),get_task(),cancel_task()
The client also handles server-initiated requests (sampling, elicitation)
by delegating to a ClientHandler implementation.
§Example
use mcpkit_client::ClientBuilder;
use mcpkit_transport::SpawnedTransport;
let transport = SpawnedTransport::spawn("my-server", &[] as &[&str]).await?;
let client = ClientBuilder::new()
.name("my-client")
.version("1.0.0")
.build(transport)
.await?;
let tools = client.list_tools().await?;Implementations§
Source§impl<T: Transport + 'static, H: ClientHandler + 'static> Client<T, H>
impl<T: Transport + 'static, H: ClientHandler + 'static> Client<T, H>
Sourcepub const fn server_info(&self) -> &ServerInfo
pub const fn server_info(&self) -> &ServerInfo
Get the server information.
Sourcepub const fn server_capabilities(&self) -> &ServerCapabilities
pub const fn server_capabilities(&self) -> &ServerCapabilities
Get the server capabilities.
Sourcepub fn protocol_version(&self) -> ProtocolVersion
pub fn protocol_version(&self) -> ProtocolVersion
Get the negotiated protocol version.
Use this for feature detection. For example:
if client.protocol_version().supports_tasks() {
// Use task-related features
}Sourcepub const fn client_info(&self) -> &ClientInfo
pub const fn client_info(&self) -> &ClientInfo
Get the client information.
Sourcepub const fn client_capabilities(&self) -> &ClientCapabilities
pub const fn client_capabilities(&self) -> &ClientCapabilities
Get the client capabilities.
Sourcepub fn instructions(&self) -> Option<&str>
pub fn instructions(&self) -> Option<&str>
Get the server instructions, if provided.
Sourcepub const fn has_resources(&self) -> bool
pub const fn has_resources(&self) -> bool
Check if the server supports resources.
Sourcepub const fn has_prompts(&self) -> bool
pub const fn has_prompts(&self) -> bool
Check if the server supports prompts.
Sourcepub const fn has_completions(&self) -> bool
pub const fn has_completions(&self) -> bool
Check if the server supports completions.
Sourcepub fn is_connected(&self) -> bool
pub fn is_connected(&self) -> bool
Check if the client is still connected.
Sourcepub async fn list_tools_paginated(
&self,
cursor: Option<&str>,
) -> Result<ListToolsResult, McpError>
pub async fn list_tools_paginated( &self, cursor: Option<&str>, ) -> Result<ListToolsResult, McpError>
List tools with pagination.
§Errors
Returns an error if tools are not supported or the request fails.
Sourcepub async fn call_tool(
&self,
name: impl Into<String>,
arguments: Value,
) -> Result<CallToolResult, McpError>
pub async fn call_tool( &self, name: impl Into<String>, arguments: Value, ) -> Result<CallToolResult, McpError>
Sourcepub async fn list_resources(&self) -> Result<Vec<Resource>, McpError>
pub async fn list_resources(&self) -> Result<Vec<Resource>, McpError>
List all available resources.
§Errors
Returns an error if resources are not supported or the request fails.
Sourcepub async fn list_resources_paginated(
&self,
cursor: Option<&str>,
) -> Result<ListResourcesResult, McpError>
pub async fn list_resources_paginated( &self, cursor: Option<&str>, ) -> Result<ListResourcesResult, McpError>
List resources with pagination.
§Errors
Returns an error if resources are not supported or the request fails.
Sourcepub async fn list_resource_templates(
&self,
) -> Result<Vec<ResourceTemplate>, McpError>
pub async fn list_resource_templates( &self, ) -> Result<Vec<ResourceTemplate>, McpError>
List resource templates.
§Errors
Returns an error if resources are not supported or the request fails.
Sourcepub async fn read_resource(
&self,
uri: impl Into<String>,
) -> Result<Vec<ResourceContents>, McpError>
pub async fn read_resource( &self, uri: impl Into<String>, ) -> Result<Vec<ResourceContents>, McpError>
Sourcepub async fn list_prompts(&self) -> Result<Vec<Prompt>, McpError>
pub async fn list_prompts(&self) -> Result<Vec<Prompt>, McpError>
List all available prompts.
§Errors
Returns an error if prompts are not supported or the request fails.
Sourcepub async fn list_prompts_paginated(
&self,
cursor: Option<&str>,
) -> Result<ListPromptsResult, McpError>
pub async fn list_prompts_paginated( &self, cursor: Option<&str>, ) -> Result<ListPromptsResult, McpError>
List prompts with pagination.
§Errors
Returns an error if prompts are not supported or the request fails.
Sourcepub async fn get_prompt(
&self,
name: impl Into<String>,
arguments: Option<Map<String, Value>>,
) -> Result<GetPromptResult, McpError>
pub async fn get_prompt( &self, name: impl Into<String>, arguments: Option<Map<String, Value>>, ) -> Result<GetPromptResult, McpError>
Get a prompt by name, optionally with arguments.
§Errors
Returns an error if prompts are not supported or the get fails.
Sourcepub async fn list_tasks(&self) -> Result<Vec<TaskSummary>, McpError>
pub async fn list_tasks(&self) -> Result<Vec<TaskSummary>, McpError>
Sourcepub async fn list_tasks_filtered(
&self,
status: Option<TaskStatus>,
cursor: Option<&str>,
) -> Result<ListTasksResult, McpError>
pub async fn list_tasks_filtered( &self, status: Option<TaskStatus>, cursor: Option<&str>, ) -> Result<ListTasksResult, McpError>
List tasks with optional status filter and pagination.
§Errors
Returns an error if tasks are not supported or the request fails.
Sourcepub async fn cancel_task(&self, id: impl Into<String>) -> Result<(), McpError>
pub async fn cancel_task(&self, id: impl Into<String>) -> Result<(), McpError>
Cancel a running task.
§Errors
Returns an error if tasks are not supported, cancellation is not supported, or the task is not found.
Sourcepub async fn complete_prompt_argument(
&self,
prompt_name: impl Into<String>,
argument_name: impl Into<String>,
current_value: impl Into<String>,
) -> Result<CompleteResult, McpError>
pub async fn complete_prompt_argument( &self, prompt_name: impl Into<String>, argument_name: impl Into<String>, current_value: impl Into<String>, ) -> Result<CompleteResult, McpError>
Sourcepub async fn complete_resource_argument(
&self,
resource_uri: impl Into<String>,
argument_name: impl Into<String>,
current_value: impl Into<String>,
) -> Result<CompleteResult, McpError>
pub async fn complete_resource_argument( &self, resource_uri: impl Into<String>, argument_name: impl Into<String>, current_value: impl Into<String>, ) -> Result<CompleteResult, McpError>
Sourcepub async fn subscribe_resource(
&self,
uri: impl Into<String>,
) -> Result<(), McpError>
pub async fn subscribe_resource( &self, uri: impl Into<String>, ) -> Result<(), McpError>
Subscribe to updates for a resource.
When subscribed, the server will send notifications/resources/updated
when the resource changes.
§Errors
Returns an error if resource subscriptions are not supported or the request fails.
Sourcepub async fn unsubscribe_resource(
&self,
uri: impl Into<String>,
) -> Result<(), McpError>
pub async fn unsubscribe_resource( &self, uri: impl Into<String>, ) -> Result<(), McpError>
Unsubscribe from updates for a resource.
§Errors
Returns an error if resource subscriptions are not supported or the request fails.
Auto Trait Implementations§
impl<T, H = NoOpHandler> !Freeze for Client<T, H>
impl<T, H = NoOpHandler> !RefUnwindSafe for Client<T, H>
impl<T, H> Send for Client<T, H>
impl<T, H> Sync for Client<T, H>
impl<T, H> Unpin for Client<T, H>
impl<T, H = NoOpHandler> !UnwindSafe for Client<T, H>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more