pub enum ClientMessage {
Request(ClientJsonrpcRequest),
Notification(ClientJsonrpcNotification),
Response(ClientJsonrpcResponse),
Error(JsonrpcError),
}
Expand description
“Similar to JsonrpcMessage, but with the variants restricted to client-side messages.” ClientMessage represents a message sent by an MCP Client and received by an MCP Server.
Variants§
Request(ClientJsonrpcRequest)
Notification(ClientJsonrpcNotification)
Response(ClientJsonrpcResponse)
Error(JsonrpcError)
Implementations§
Source§impl ClientMessage
impl ClientMessage
Sourcepub fn as_response(self) -> Result<ClientJsonrpcResponse, RpcError>
pub fn as_response(self) -> Result<ClientJsonrpcResponse, RpcError>
Converts the current message into a ClientJsonrpcResponse
if it’s of the correct type.
This function checks if the current message is of type Response
. If so, it returns the
ClientJsonrpcResponse
wrapped in a Result::Ok
. If the message is not a Response
,
it returns an error with a descriptive message indicating the mismatch in expected message types.
§Returns
Ok(ClientJsonrpcResponse)
if the message is a validResponse
.Err(RpcError)
if the message type is invalid
Sourcepub fn as_request(self) -> Result<ClientJsonrpcRequest, RpcError>
pub fn as_request(self) -> Result<ClientJsonrpcRequest, RpcError>
Converts the current message into a ClientJsonrpcRequest
if it’s of the correct type.
This function checks if the current message is of type Request
. If so, it returns the
ClientJsonrpcRequest
wrapped in a Result::Ok
. If the message is not a Request
,
it returns an error with a descriptive message indicating the mismatch in expected message types.
§Returns
Ok(ClientJsonrpcRequest)
if the message is a validRequest
.Err(RpcError)
if the message type is invalid
Sourcepub fn as_notification(self) -> Result<ClientJsonrpcNotification, RpcError>
pub fn as_notification(self) -> Result<ClientJsonrpcNotification, RpcError>
Converts the current message into a ClientJsonrpcNotification
if it’s of the correct type.
This function checks if the current message is of type Notification
. If so, it returns the
ClientJsonrpcNotification
wrapped in a Result::Ok
. If the message is not a Notification
,
it returns an error with a descriptive message indicating the mismatch in expected message types.
§Returns
Ok(ClientJsonrpcNotification)
if the message is a validNotification
.Err(RpcError)
if the message type is invalid
Sourcepub fn as_error(self) -> Result<JsonrpcError, RpcError>
pub fn as_error(self) -> Result<JsonrpcError, RpcError>
Converts the current message into a JsonrpcError
if it’s of the correct type.
This function checks if the current message is of type Error
. If so, it returns the
JsonrpcError
wrapped in a Result::Ok
. If the message is not a Error
,
it returns an error with a descriptive message indicating the mismatch in expected message types.
§Returns
Ok(JsonrpcError)
if the message is a validError
.Err(RpcError)
if the message type is invalid
Trait Implementations§
Source§impl Clone for ClientMessage
impl Clone for ClientMessage
Source§fn clone(&self) -> ClientMessage
fn clone(&self) -> ClientMessage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ClientMessage
impl Debug for ClientMessage
Source§impl<'de> Deserialize<'de> for ClientMessage
impl<'de> Deserialize<'de> for ClientMessage
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ClientMessage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ClientMessage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Display for ClientMessage
impl Display for ClientMessage
Source§impl FromMessage<CallToolRequest> for ClientMessage
impl FromMessage<CallToolRequest> for ClientMessage
fn from_message( message: CallToolRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<CancelledNotification> for ClientMessage
impl FromMessage<CancelledNotification> for ClientMessage
fn from_message( message: CancelledNotification, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<CompleteRequest> for ClientMessage
impl FromMessage<CompleteRequest> for ClientMessage
fn from_message( message: CompleteRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<CreateMessageResult> for ClientMessage
impl FromMessage<CreateMessageResult> for ClientMessage
fn from_message( message: CreateMessageResult, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<GetPromptRequest> for ClientMessage
impl FromMessage<GetPromptRequest> for ClientMessage
fn from_message( message: GetPromptRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<InitializeRequest> for ClientMessage
impl FromMessage<InitializeRequest> for ClientMessage
fn from_message( message: InitializeRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<InitializedNotification> for ClientMessage
impl FromMessage<InitializedNotification> for ClientMessage
fn from_message( message: InitializedNotification, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<ListPromptsRequest> for ClientMessage
impl FromMessage<ListPromptsRequest> for ClientMessage
fn from_message( message: ListPromptsRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<ListResourceTemplatesRequest> for ClientMessage
impl FromMessage<ListResourceTemplatesRequest> for ClientMessage
fn from_message( message: ListResourceTemplatesRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<ListResourcesRequest> for ClientMessage
impl FromMessage<ListResourcesRequest> for ClientMessage
fn from_message( message: ListResourcesRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<ListRootsResult> for ClientMessage
impl FromMessage<ListRootsResult> for ClientMessage
fn from_message( message: ListRootsResult, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<ListToolsRequest> for ClientMessage
impl FromMessage<ListToolsRequest> for ClientMessage
fn from_message( message: ListToolsRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<MessageFromClient> for ClientMessage
impl FromMessage<MessageFromClient> for ClientMessage
fn from_message( message: MessageFromClient, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<PingRequest> for ClientMessage
impl FromMessage<PingRequest> for ClientMessage
fn from_message( message: PingRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<ProgressNotification> for ClientMessage
impl FromMessage<ProgressNotification> for ClientMessage
fn from_message( message: ProgressNotification, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<ReadResourceRequest> for ClientMessage
impl FromMessage<ReadResourceRequest> for ClientMessage
fn from_message( message: ReadResourceRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<Result> for ClientMessage
impl FromMessage<Result> for ClientMessage
fn from_message( message: Result, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<RootsListChangedNotification> for ClientMessage
impl FromMessage<RootsListChangedNotification> for ClientMessage
fn from_message( message: RootsListChangedNotification, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<SetLevelRequest> for ClientMessage
impl FromMessage<SetLevelRequest> for ClientMessage
fn from_message( message: SetLevelRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<SubscribeRequest> for ClientMessage
impl FromMessage<SubscribeRequest> for ClientMessage
fn from_message( message: SubscribeRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromMessage<UnsubscribeRequest> for ClientMessage
impl FromMessage<UnsubscribeRequest> for ClientMessage
fn from_message( message: UnsubscribeRequest, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl FromStr for ClientMessage
impl FromStr for ClientMessage
Source§impl McpDispatch<ClientMessage, MessageFromServer> for MessageDispatcher<ClientMessage>
impl McpDispatch<ClientMessage, MessageFromServer> for MessageDispatcher<ClientMessage>
Source§fn send<'life0, 'async_trait>(
&'life0 self,
message: MessageFromServer,
request_id: Option<RequestId>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: 'async_trait,
fn send<'life0, 'async_trait>(
&'life0 self,
message: MessageFromServer,
request_id: Option<RequestId>,
request_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<Option<ClientMessage>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: 'async_trait,
Sends a message from the server to the client and awaits a response if applicable.
Serializes the MessageFromServer
to JSON, writes it to the transport, and waits for a
ClientMessage
response if the message is a request. Notifications and responses return
Ok(None)
.
§Arguments
message
- The server message to send.request_id
- An optional request ID (used for responses/errors, None for requests).
§Returns
A TransportResult
containing Some(ClientMessage)
for requests with a response,
or None
for notifications/responses, or an error if the operation fails.
§Errors
Returns a TransportError
if serialization, writing, or timeout occurs.
Source§impl McpMessage for ClientMessage
impl McpMessage for ClientMessage
Source§fn message_type(&self) -> MessageTypes
fn message_type(&self) -> MessageTypes
Determines the type of the message and returns the corresponding MessageTypes
variant.
fn is_response(&self) -> bool
fn is_request(&self) -> bool
fn is_notification(&self) -> bool
fn is_error(&self) -> bool
Source§impl RpcMessage for ClientMessage
impl RpcMessage for ClientMessage
Source§impl Serialize for ClientMessage
impl Serialize for ClientMessage
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl ToMessage<ClientMessage> for CallToolRequest
impl ToMessage<ClientMessage> for CallToolRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for CancelledNotification
impl ToMessage<ClientMessage> for CancelledNotification
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for CompleteRequest
impl ToMessage<ClientMessage> for CompleteRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for CreateMessageResult
impl ToMessage<ClientMessage> for CreateMessageResult
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for GetPromptRequest
impl ToMessage<ClientMessage> for GetPromptRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for InitializeRequest
impl ToMessage<ClientMessage> for InitializeRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for InitializedNotification
impl ToMessage<ClientMessage> for InitializedNotification
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for ListPromptsRequest
impl ToMessage<ClientMessage> for ListPromptsRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for ListResourceTemplatesRequest
impl ToMessage<ClientMessage> for ListResourceTemplatesRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for ListResourcesRequest
impl ToMessage<ClientMessage> for ListResourcesRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for ListRootsResult
impl ToMessage<ClientMessage> for ListRootsResult
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for ListToolsRequest
impl ToMessage<ClientMessage> for ListToolsRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for PingRequest
impl ToMessage<ClientMessage> for PingRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for ProgressNotification
impl ToMessage<ClientMessage> for ProgressNotification
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for ReadResourceRequest
impl ToMessage<ClientMessage> for ReadResourceRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for Result
impl ToMessage<ClientMessage> for Result
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for RootsListChangedNotification
impl ToMessage<ClientMessage> for RootsListChangedNotification
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for SetLevelRequest
impl ToMessage<ClientMessage> for SetLevelRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for SubscribeRequest
impl ToMessage<ClientMessage> for SubscribeRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Source§impl ToMessage<ClientMessage> for UnsubscribeRequest
impl ToMessage<ClientMessage> for UnsubscribeRequest
fn to_message( self, request_id: Option<RequestId>, ) -> Result<ClientMessage, RpcError>
Auto Trait Implementations§
impl Freeze for ClientMessage
impl RefUnwindSafe for ClientMessage
impl Send for ClientMessage
impl Sync for ClientMessage
impl Unpin for ClientMessage
impl UnwindSafe for ClientMessage
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string
, but without panic on OOM.