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;