mcp_error_rs/
lib.rs

1use std::io;
2
3use thiserror::Error as ThisError;
4
5#[derive(ThisError, Debug)]
6pub enum Error {
7    #[error("IO error: {0}")]
8    Io(#[from] io::Error),
9
10    #[error("url error: {0}")]
11    Url(#[from] url::ParseError),
12
13    #[error("serde_json error: {0}")]
14    Json(#[from] serde_json::Error),
15
16    #[error("system error: {0}")]
17    System(String),
18
19    #[error("Invalid UTF-8 sequence: {0}")]
20    Utf8(#[from] std::string::FromUtf8Error),
21
22    #[error("Protocol error: {0}")]
23    Protocol(String),
24
25    #[error("invalid parameters: {0}")]
26    InvalidParameters(String),
27
28    #[error("Invalid message format: {0}")]
29    InvalidMessage(String),
30
31    #[error("Transport was not connected or is already closed")]
32    NotConnected,
33
34    #[error("Channel closed")]
35    ChannelClosed,
36
37    #[error("Unsupported message type. JsonRpcMessage can only be Request or Notification.")]
38    UnsupportedMessage,
39
40    #[error("Stdio process error: {0}")]
41    StdioProcessError(String),
42
43    #[error("SSE connection error: {0}")]
44    SseConnection(String),
45
46    #[error("HTTP error: {status} - {message}")]
47    HttpError { status: u16, message: String },
48
49    #[error("config error: {0}")]
50    ServiceError(#[from] service_utils_rs::error::Error),
51}
52
53pub type Result<T> = core::result::Result<T, Error>;
54
55pub type BoxError = Box<dyn std::error::Error + Sync + Send>;