pub struct McpClient { /* private fields */ }Expand description
High-level MCP client for communicating with MCP servers.
The McpClient handles the complete MCP protocol flow including:
- Transport connection management
- Protocol initialization and capability negotiation
- Request/response correlation and timeouts
- Server notification handling
- Automatic retries and error recovery
Implementations§
Source§impl McpClient
impl McpClient
Sourcepub async fn new(
transport_config: TransportConfig,
client_config: ClientConfig,
notification_handler: Box<dyn NotificationHandler>,
) -> McpResult<Self>
pub async fn new( transport_config: TransportConfig, client_config: ClientConfig, notification_handler: Box<dyn NotificationHandler>, ) -> McpResult<Self>
Create a new MCP client with the specified transport configuration.
§Arguments
transport_config- Configuration for the transport layerclient_config- Configuration for client behaviornotification_handler- Handler for server notifications
§Returns
A new MCP client ready for connection.
§Example
use mcp_probe_core::client::{McpClient, ClientConfig, DefaultNotificationHandler};
use mcp_probe_core::transport::TransportConfig;
let transport_config = TransportConfig::stdio("python", &["server.py"]);
let client_config = ClientConfig::default();
let handler = Box::new(DefaultNotificationHandler);
let client = McpClient::new(transport_config, client_config, handler).await?;Sourcepub async fn with_defaults(transport_config: TransportConfig) -> McpResult<Self>
pub async fn with_defaults(transport_config: TransportConfig) -> McpResult<Self>
Sourcepub async fn state(&self) -> ClientState
pub async fn state(&self) -> ClientState
Get the current client state.
Sourcepub async fn server_info(&self) -> Option<ServerInfo>
pub async fn server_info(&self) -> Option<ServerInfo>
Get information about the connected server.
Sourcepub async fn stats(&self) -> ClientStats
pub async fn stats(&self) -> ClientStats
Get client operation statistics.
Sourcepub async fn is_ready(&self) -> bool
pub async fn is_ready(&self) -> bool
Check if the client is connected and ready for operations.
Sourcepub fn transport_info(&self) -> TransportInfo
pub fn transport_info(&self) -> TransportInfo
Get transport information and metadata.
Sourcepub async fn connect(
&mut self,
client_info: Implementation,
) -> McpResult<ServerInfo>
pub async fn connect( &mut self, client_info: Implementation, ) -> McpResult<ServerInfo>
Connect to the MCP server and perform protocol initialization.
This method:
- Establishes the transport connection
- Sends the initialize request
- Waits for the initialize response
- Sends the initialized notification
- Starts message processing
§Arguments
client_info- Information about this client implementation
§Returns
Server information upon successful connection.
§Example
use mcp_probe_core::messages::Implementation;
let client_info = Implementation {
name: "mcp-probe".to_string(),
version: "0.1.0".to_string(),
metadata: std::collections::HashMap::new(),
};
let server_info = client.connect(client_info).await?;
println!("Connected to server: {}", server_info.implementation.name);Sourcepub async fn disconnect(&mut self) -> McpResult<()>
pub async fn disconnect(&mut self) -> McpResult<()>
Disconnect from the MCP server.
Sourcepub async fn send_notification<T>(
&mut self,
method: &str,
params: T,
) -> McpResult<()>where
T: Serialize,
pub async fn send_notification<T>(
&mut self,
method: &str,
params: T,
) -> McpResult<()>where
T: Serialize,
Send a notification to the server.
Sourcepub async fn send_request<T>(
&mut self,
method: &str,
params: T,
) -> McpResult<JsonRpcResponse>where
T: Serialize,
pub async fn send_request<T>(
&mut self,
method: &str,
params: T,
) -> McpResult<JsonRpcResponse>where
T: Serialize,
Send a request to the server and wait for a response.
Auto Trait Implementations§
impl !Freeze for McpClient
impl !RefUnwindSafe for McpClient
impl Send for McpClient
impl Sync for McpClient
impl Unpin for McpClient
impl !UnwindSafe for McpClient
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
Mutably borrows from an owned value. Read more