rust_mcp_sdk/
error.rs

1use crate::schema::RpcError;
2use rust_mcp_transport::error::TransportError;
3use thiserror::Error;
4
5#[cfg(feature = "hyper-server")]
6use crate::hyper_servers::error::TransportServerError;
7
8pub type SdkResult<T> = core::result::Result<T, McpSdkError>;
9
10#[derive(Debug, Error)]
11pub enum McpSdkError {
12    #[error("{0}")]
13    RpcError(#[from] RpcError),
14    #[error("{0}")]
15    IoError(#[from] std::io::Error),
16    #[error("{0}")]
17    TransportError(#[from] TransportError),
18    #[error("{0}")]
19    AnyError(Box<(dyn std::error::Error + Send + Sync)>),
20    #[error("{0}")]
21    SdkError(#[from] crate::schema::schema_utils::SdkError),
22    #[cfg(feature = "hyper-server")]
23    #[error("{0}")]
24    TransportServerError(#[from] TransportServerError),
25    #[error("Incompatible mcp protocol version!\n client:{0}\nserver:{1}")]
26    IncompatibleProtocolVersion(String, String),
27}
28
29#[deprecated(since = "0.2.0", note = "Use `McpSdkError` instead.")]
30pub type MCPSdkError = McpSdkError;