Skip to main content

McpErrorCode

Enum McpErrorCode 

Source
#[non_exhaustive]
#[repr(i32)]
pub enum McpErrorCode { ConnectionClosed = -32_000, HeaderMismatch = -32_001, ResourceNotFound = -32_002, MissingRequiredClientCapability = -32_003, UnsupportedProtocolVersion = -32_004, SessionNotFound = -32_005, SessionRequired = -32_006, Forbidden = -32_007, AlreadySubscribed = -32_008, NotSubscribed = -32_009, RequestTimeout = -32_010, UrlElicitationRequired = -32_042, }
Expand description

MCP-specific error codes (in the -32000 to -32099 range).

Codes marked spec are assigned by an MCP SEP. Others are implementation-defined within the JSON-RPC server-error range; using them is permitted by JSON-RPC 2.0 but they are not part of the MCP wire spec.

Recently-changed assignments:

  • MissingRequiredClientCapability (-32003) and UnsupportedProtocolVersion (-32004) are spec assignments from SEP-2575.
  • AlreadySubscribed and NotSubscribed previously occupied -32003 and -32004; they moved to -32008 and -32009 to make room. This is a breaking change on the wire for any subscribe/unsubscribe responses that relied on the old codes.
  • HeaderMismatch (-32001) is a spec assignment from SEP-2243 (HTTP header standardization). RequestTimeout previously occupied -32001 and moved to -32010 to make room. This is a breaking change on the wire for any consumers matching on the old RequestTimeout code.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

ConnectionClosed = -32_000

Transport connection was closed.

§

HeaderMismatch = -32_001

SEP-2243: HTTP headers (e.g. Mcp-Method, Mcp-Name, Mcp-Param-*) do not match the corresponding values in the request body, or a required header is missing or malformed.

Use JsonRpcError::header_mismatch to construct.

§

ResourceNotFound = -32_002

👎Deprecated since 0.12.0:

SEP-2164 reassigned resource-not-found to InvalidParams (-32602). Use JsonRpcError::resource_not_found or ErrorCode::InvalidParams.

Resource not found.

Deprecated: SEP-2164 (FINAL) moves this to the standard JSON-RPC InvalidParams code (-32602). The JsonRpcError::resource_not_found constructor now emits -32602. The enum variant is retained so existing pattern matches on McpErrorCode::ResourceNotFound keep compiling, but the variant’s numeric value is no longer what the constructor produces.

§

MissingRequiredClientCapability = -32_003

SEP-2575: client capabilities advertised on the request do not include a capability required by the called method.

§

UnsupportedProtocolVersion = -32_004

SEP-2575: server does not support the protocol version the client requested (via MCP-Protocol-Version header or per-request _meta). Use JsonRpcError::unsupported_protocol_version to construct.

§

SessionNotFound = -32_005

Session not found or expired – client should re-initialize.

SEP-2567 deprecates sessions entirely. This code stays for the 2025-11-25 protocol path; sessionless deployments will never emit it.

§

SessionRequired = -32_006

Session ID is required but was not provided.

SEP-2567 deprecates sessions entirely. Same caveat as SessionNotFound.

§

Forbidden = -32_007

Access forbidden (insufficient scope or authorization).

§

AlreadySubscribed = -32_008

Resource already subscribed. Moved from -32003 to avoid the SEP-2575 MissingRequiredClientCapability collision.

§

NotSubscribed = -32_009

Resource not subscribed (for unsubscribe). Moved from -32004 to avoid the SEP-2575 UnsupportedProtocolVersion collision.

§

RequestTimeout = -32_010

Request exceeded timeout. Moved from -32001 to avoid the SEP-2243 HeaderMismatch collision.

§

UrlElicitationRequired = -32_042

URL elicitation is required before processing the request.

Implementations§

Source§

impl McpErrorCode

Source

pub fn code(self) -> i32

Trait Implementations§

Source§

impl Clone for McpErrorCode

Source§

fn clone(&self) -> McpErrorCode

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for McpErrorCode

Source§

impl Debug for McpErrorCode

Source§

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

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

impl Eq for McpErrorCode

Source§

impl PartialEq for McpErrorCode

Source§

fn eq(&self, other: &McpErrorCode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for McpErrorCode

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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