pub enum MessageFromServer {
RequestFromServer(RequestFromServer),
ResultFromServer(ResultFromServer),
NotificationFromServer(NotificationFromServer),
Error(RpcError),
}
Expand description
An enum representing various types of messages that can be sent from an MCP Server.
It provides a typed structure for the message payload while skipping internal details like
requestId
and protocol version, which are used solely by the transport layer and
do not need to be exposed to the user.
Variants§
RequestFromServer(RequestFromServer)
ResultFromServer(ResultFromServer)
NotificationFromServer(NotificationFromServer)
Error(RpcError)
Trait Implementations§
Source§impl Clone for MessageFromServer
impl Clone for MessageFromServer
Source§fn clone(&self) -> MessageFromServer
fn clone(&self) -> MessageFromServer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for MessageFromServer
impl Debug for MessageFromServer
Source§impl<'de> Deserialize<'de> for MessageFromServer
impl<'de> Deserialize<'de> for MessageFromServer
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<MessageFromServer, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<MessageFromServer, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<CallToolResult> for MessageFromServer
impl From<CallToolResult> for MessageFromServer
Source§fn from(value: CallToolResult) -> MessageFromServer
fn from(value: CallToolResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<CancelledNotification> for MessageFromServer
impl From<CancelledNotification> for MessageFromServer
Source§fn from(value: CancelledNotification) -> MessageFromServer
fn from(value: CancelledNotification) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<CompleteResult> for MessageFromServer
impl From<CompleteResult> for MessageFromServer
Source§fn from(value: CompleteResult) -> MessageFromServer
fn from(value: CompleteResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<CreateMessageRequest> for MessageFromServer
impl From<CreateMessageRequest> for MessageFromServer
Source§fn from(value: CreateMessageRequest) -> MessageFromServer
fn from(value: CreateMessageRequest) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ElicitRequest> for MessageFromServer
impl From<ElicitRequest> for MessageFromServer
Source§fn from(value: ElicitRequest) -> MessageFromServer
fn from(value: ElicitRequest) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<GetPromptResult> for MessageFromServer
impl From<GetPromptResult> for MessageFromServer
Source§fn from(value: GetPromptResult) -> MessageFromServer
fn from(value: GetPromptResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<InitializeResult> for MessageFromServer
impl From<InitializeResult> for MessageFromServer
Source§fn from(value: InitializeResult) -> MessageFromServer
fn from(value: InitializeResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ListPromptsResult> for MessageFromServer
impl From<ListPromptsResult> for MessageFromServer
Source§fn from(value: ListPromptsResult) -> MessageFromServer
fn from(value: ListPromptsResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ListResourceTemplatesResult> for MessageFromServer
impl From<ListResourceTemplatesResult> for MessageFromServer
Source§fn from(value: ListResourceTemplatesResult) -> MessageFromServer
fn from(value: ListResourceTemplatesResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ListResourcesResult> for MessageFromServer
impl From<ListResourcesResult> for MessageFromServer
Source§fn from(value: ListResourcesResult) -> MessageFromServer
fn from(value: ListResourcesResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ListRootsRequest> for MessageFromServer
impl From<ListRootsRequest> for MessageFromServer
Source§fn from(value: ListRootsRequest) -> MessageFromServer
fn from(value: ListRootsRequest) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ListToolsResult> for MessageFromServer
impl From<ListToolsResult> for MessageFromServer
Source§fn from(value: ListToolsResult) -> MessageFromServer
fn from(value: ListToolsResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<LoggingMessageNotification> for MessageFromServer
impl From<LoggingMessageNotification> for MessageFromServer
Source§fn from(value: LoggingMessageNotification) -> MessageFromServer
fn from(value: LoggingMessageNotification) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<MessageFromServer> for MessagesFromServer
impl From<MessageFromServer> for MessagesFromServer
Source§fn from(value: MessageFromServer) -> MessagesFromServer
fn from(value: MessageFromServer) -> MessagesFromServer
Converts to this type from the input type.
Source§impl From<NotificationFromServer> for MessageFromServer
impl From<NotificationFromServer> for MessageFromServer
Source§fn from(value: NotificationFromServer) -> MessageFromServer
fn from(value: NotificationFromServer) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<PingRequest> for MessageFromServer
impl From<PingRequest> for MessageFromServer
Source§fn from(value: PingRequest) -> MessageFromServer
fn from(value: PingRequest) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ProgressNotification> for MessageFromServer
impl From<ProgressNotification> for MessageFromServer
Source§fn from(value: ProgressNotification) -> MessageFromServer
fn from(value: ProgressNotification) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<PromptListChangedNotification> for MessageFromServer
impl From<PromptListChangedNotification> for MessageFromServer
Source§fn from(value: PromptListChangedNotification) -> MessageFromServer
fn from(value: PromptListChangedNotification) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ReadResourceResult> for MessageFromServer
impl From<ReadResourceResult> for MessageFromServer
Source§fn from(value: ReadResourceResult) -> MessageFromServer
fn from(value: ReadResourceResult) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<RequestFromServer> for MessageFromServer
impl From<RequestFromServer> for MessageFromServer
Source§fn from(value: RequestFromServer) -> MessageFromServer
fn from(value: RequestFromServer) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ResourceListChangedNotification> for MessageFromServer
impl From<ResourceListChangedNotification> for MessageFromServer
Source§fn from(value: ResourceListChangedNotification) -> MessageFromServer
fn from(value: ResourceListChangedNotification) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ResourceUpdatedNotification> for MessageFromServer
impl From<ResourceUpdatedNotification> for MessageFromServer
Source§fn from(value: ResourceUpdatedNotification) -> MessageFromServer
fn from(value: ResourceUpdatedNotification) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<Result> for MessageFromServer
impl From<Result> for MessageFromServer
Source§fn from(value: Result) -> MessageFromServer
fn from(value: Result) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ResultFromServer> for MessageFromServer
impl From<ResultFromServer> for MessageFromServer
Source§fn from(value: ResultFromServer) -> MessageFromServer
fn from(value: ResultFromServer) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<RpcError> for MessageFromServer
impl From<RpcError> for MessageFromServer
Source§fn from(value: RpcError) -> MessageFromServer
fn from(value: RpcError) -> MessageFromServer
Converts to this type from the input type.
Source§impl From<ToolListChangedNotification> for MessageFromServer
impl From<ToolListChangedNotification> for MessageFromServer
Source§fn from(value: ToolListChangedNotification) -> MessageFromServer
fn from(value: ToolListChangedNotification) -> MessageFromServer
Converts to this type from the input type.
Source§impl FromMessage<MessageFromServer> for ServerMessage
impl FromMessage<MessageFromServer> for ServerMessage
fn from_message( message: MessageFromServer, request_id: Option<RequestId>, ) -> Result<ServerMessage, RpcError>
Source§impl McpMessage for MessageFromServer
impl McpMessage for MessageFromServer
fn is_response(&self) -> bool
fn is_request(&self) -> bool
fn is_notification(&self) -> bool
fn is_error(&self) -> bool
fn message_type(&self) -> MessageTypes
Source§impl Serialize for MessageFromServer
impl Serialize for MessageFromServer
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,
Serialize this value into the given Serde serializer. Read more
Source§impl Transport<ClientMessages, MessageFromServer, ClientMessage, ServerMessages, ServerMessage> for SseTransport<ClientMessage>
impl Transport<ClientMessages, MessageFromServer, ClientMessage, ServerMessages, ServerMessage> for SseTransport<ClientMessage>
Source§fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ReceiverStream<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage>,
SseTransport<ClientMessage>: 'async_trait,
fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ReceiverStream<ClientMessages>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
MessageDispatcher<ClientMessage>: McpDispatch<ClientMessages, ServerMessages, ClientMessage, ServerMessage>,
SseTransport<ClientMessage>: 'async_trait,
Starts the transport, initializing streams and message dispatcher
Sets up the MCP stream and dispatcher using the provided duplex streams.
§Returns
TransportResult<(Pin<Box<dyn Stream<Item = R> + Send>>, MessageDispatcher<R>, IoStream)>
- The message stream, dispatcher, and error stream
§Errors
- Returns
TransportError
if streams are already taken or not initialized
Source§fn is_shut_down<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn is_shut_down<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
Checks if the transport has been shut down
§Returns
bool
- True if the transport is shut down, false otherwise
Source§fn shut_down<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn shut_down<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
Shuts down the transport, terminating tasks and signaling closure
Cancels any running tasks and clears the cancellation source.
§Returns
TransportResult<()>
- Ok if shutdown is successful, Err if cancellation fails
fn message_sender( &self, ) -> Arc<RwLock<Option<MessageDispatcher<ClientMessage>>>>
fn error_stream(&self) -> &RwLock<Option<IoStream>>
fn consume_string_payload<'life0, 'life1, 'async_trait>(
&'life0 self,
payload: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn keep_alive<'life0, 'async_trait>(
&'life0 self,
interval: Duration,
disconnect_tx: Sender<()>,
) -> Pin<Box<dyn Future<Output = Result<JoinHandle<()>, TransportError>> + Send + 'async_trait>>where
'life0: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
fn pending_request_tx<'life0, 'life1, 'async_trait>(
&'life0 self,
request_id: &'life1 RequestId,
) -> Pin<Box<dyn Future<Output = Option<Sender<ClientMessage>>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SseTransport<ClientMessage>: 'async_trait,
impl TransportDispatcher<ClientMessages, MessageFromServer, ClientMessage, ServerMessages, ServerMessage> for SseTransport<ClientMessage>
impl TransportDispatcher<ClientMessages, MessageFromServer, ClientMessage, ServerMessages, ServerMessage> for StdioTransport<ClientMessage>
Auto Trait Implementations§
impl Freeze for MessageFromServer
impl RefUnwindSafe for MessageFromServer
impl Send for MessageFromServer
impl Sync for MessageFromServer
impl Unpin for MessageFromServer
impl UnwindSafe for MessageFromServer
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