Enum McpError

Source
pub enum McpError {
    Transport(TransportError),
    Protocol(ProtocolError),
    Validation(ValidationError),
    Auth(AuthError),
    Timeout {
        operation: String,
        duration_ms: u64,
    },
    Config(ConfigError),
    Serialization {
        source: Error,
    },
    Io {
        source: Error,
    },
    Internal {
        message: String,
    },
}
Expand description

The main error type for all MCP operations.

This enum covers all possible error conditions that can occur during MCP client operations, from transport failures to protocol violations.

§Examples

use mcp_probe_core::error::{McpError, TransportError};

let error = McpError::Transport(TransportError::ConnectionFailed {
    transport_type: "stdio".to_string(),
    reason: "Process exited unexpectedly".to_string(),
});

println!("Error: {}", error);

Variants§

§

Transport(TransportError)

Transport-related errors (connection, communication, etc.)

§

Protocol(ProtocolError)

Protocol-level errors (invalid messages, unsupported versions, etc.)

§

Validation(ValidationError)

Validation errors (schema validation, capability mismatches, etc.)

§

Auth(AuthError)

Authentication and authorization errors

§

Timeout

Timeout errors for operations that exceed time limits

Fields

§operation: String

The operation that timed out

§duration_ms: u64

The timeout duration in milliseconds

§

Config(ConfigError)

Configuration errors (invalid config files, missing parameters, etc.)

§

Serialization

Serialization/deserialization errors

Fields

§source: Error

The underlying serde_json error

§

Io

IO errors (file operations, network errors, etc.)

Fields

§source: Error

The underlying IO error

§

Internal

Generic errors for cases not covered by specific variants

Fields

§message: String

Error message

Implementations§

Source§

impl McpError

Source

pub fn internal(message: impl Into<String>) -> Self

Create a new internal error with a custom message.

This is useful for creating errors from string messages when a more specific error type is not available.

§Examples
use mcp_probe_core::error::McpError;

let error = McpError::internal("Something went wrong");
Source

pub fn timeout(operation: impl Into<String>, duration: Duration) -> Self

Create a new timeout error.

§Examples
use mcp_probe_core::error::McpError;
use std::time::Duration;

let error = McpError::timeout("server connection", Duration::from_secs(30));
Source

pub fn is_retryable(&self) -> bool

Check if this error is retryable.

Some errors (like network timeouts) may be worth retrying, while others (like invalid credentials) are permanent failures.

§Examples
use mcp_probe_core::error::{McpError, TransportError};

let timeout_error = McpError::timeout("connection", std::time::Duration::from_secs(30));
assert!(timeout_error.is_retryable());

let auth_error = McpError::Auth(
    mcp_probe_core::error::AuthError::InvalidCredentials {
        auth_type: "Bearer".to_string(),
        reason: "Invalid token".to_string(),
    }
);
assert!(!auth_error.is_retryable());
Source

pub fn category(&self) -> &'static str

Get the error category for this error.

This is useful for error reporting and metrics collection.

Trait Implementations§

Source§

impl Debug for McpError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for McpError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for McpError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<AuthError> for McpError

Source§

fn from(source: AuthError) -> Self

Converts to this type from the input type.
Source§

impl From<ConfigError> for McpError

Source§

fn from(source: ConfigError) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for McpError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for McpError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for McpError

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl From<ParseError> for McpError

Source§

fn from(err: ParseError) -> Self

Converts to this type from the input type.
Source§

impl From<ProtocolError> for McpError

Source§

fn from(source: ProtocolError) -> Self

Converts to this type from the input type.
Source§

impl From<TransportError> for McpError

Source§

fn from(source: TransportError) -> Self

Converts to this type from the input type.
Source§

impl From<ValidationError> for McpError

Source§

fn from(source: ValidationError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,