Skip to main content

Feature

Enum Feature 

Source
pub enum Feature {
Show 39 variants Tools, ToolsListChanged, ToolAnnotations, ToolStructuredOutput, ToolResourceLinks, ToolAnnotationsLastModified, ToolResourceLinkIcons, ToolAudioContent, ToolResultType, Resources, ResourcesListChanged, ResourcesSubscribe, Prompts, PromptsListChanged, Completions, Roots, RootsListChanged, Sampling, SamplingContext, SamplingTools, Elicitation, ElicitationForm, ElicitationUrl, Logging, JsonRpcBatching, StreamableHttp, LegacySse, McpProtocolVersionHeader, MetaExtensions, StatelessLifecycle, ServerDiscover, SubscriptionsListen, StandardRoutingHeaders, ResponseCaching, MultiRoundTripRequests, Ping, Tasks, Extensions, Experimental,
}
Expand description

A protocol behaviour a session may have.

Variants§

§

Tools

tools/list and tools/call. Every revision, every transport.

§

ToolsListChanged

tools.list_changed, gated on the server advertising it.

§

ToolAnnotations

Tool annotations — read-only, destructive, and so on. 2025-03-26.

§

ToolStructuredOutput

structuredContent on a tool result. 2025-06-18.

Resource links in a tool call result. 2025-06-18.

§

ToolAnnotationsLastModified

annotations.lastModified on a content block. 2025-06-18.

Separate from ToolAnnotations because the two gate different revisions: annotations as a field exist in 2024-11-05, untyped, while lastModified first appears in the typed form at 2025-06-18. A value carrying only audience or priority needs the older feature alone.

§

ToolResourceLinkIcons

icons on a resource link. 2025-11-25, SEP-973.

https://github.com/modelcontextprotocol/modelcontextprotocol/issues/973

§

ToolAudioContent

Audio content blocks. 2025-03-26.

§

ToolResultType

resultType on tool results. 2026-07-28, required rather than optional there.

§

Resources

resources/list, resources/read, resources/templates/list. Every revision.

§

ResourcesListChanged

resources.list_changed.

§

ResourcesSubscribe

Server-to-client resource change notifications. The capability survives 2026-07-28 even though the methods behind it are replaced.

§

Prompts

prompts/list and prompts/get. Every revision.

§

PromptsListChanged

prompts.list_changed.

§

Completions

completion/complete. 2025-03-26.

§

Roots

roots/list. Deprecated 2026-07-28 but still defined.

§

RootsListChanged

notifications/roots/list_changed. Removed in 2026-07-28.

§

Sampling

sampling/createMessage. Deprecated 2026-07-28 but still defined.

§

SamplingContext

Sampling with includeContext. 2025-11-25.

§

SamplingTools

Sampling with tools and toolChoice. 2025-11-25, SEP-1577.

§

Elicitation

elicitation/create. 2025-06-18.

§

ElicitationForm

Form-mode elicitation with the SEP-1330 schema shapes. 2025-11-25.

§

ElicitationUrl

URL-mode elicitation. 2025-11-25, SEP-1036. The completion notification behind it is removed in 2026-07-28; the capability is not.

§

Logging

logging/setLevel and notifications/message. Deprecated 2026-07-28, which also removes the method and moves log level into _meta.

§

JsonRpcBatching

JSON-RPC batching. Added 2025-03-26, removed 2025-06-18.

§

StreamableHttp

The Streamable HTTP transport. 2025-03-26.

§

LegacySse

The legacy HTTP+SSE transport. 2024-11-05 only; replaced in 2025-03-26, reclassified as Deprecated in 2026-07-28.

§

McpProtocolVersionHeader

The MCP-Protocol-Version header on subsequent HTTP requests. 2025-06-18.

§

MetaExtensions

_meta on interface types. 2025-06-18.

§

StatelessLifecycle

The stateless lifecycle: no initialize handshake, version and capabilities in _meta on every request. 2026-07-28, SEP-2575.

§

ServerDiscover

server/discover. 2026-07-28, SEP-2575.

§

SubscriptionsListen

subscriptions/listen, replacing the HTTP GET endpoint and resources/subscribe. 2026-07-28, SEP-2575.

§

StandardRoutingHeaders

Mcp-Method and Mcp-Name routing headers. 2026-07-28, SEP-2243.

§

ResponseCaching

ttlMs and cacheScope on cacheable results. 2026-07-28, SEP-2549.

§

MultiRoundTripRequests

The multi-round-trip request pattern, which is what the removal of notifications/elicitation/complete is predicated on. 2026-07-28.

§

Ping

ping. Removed in 2026-07-28, SEP-2575.

§

Tasks

The tasks capability, core-protocol only. Added 2025-11-25 (SEP-1686), removed from the core in 2026-07-28 when it moves to the io.modelcontextprotocol/tasks extension (SEP-2663).

§

Extensions

The extensions capability bag. 2026-07-28, SEP-2575.

§

Experimental

The experimental capability bag. Every revision.

Implementations§

Source§

impl Feature

Source

pub const ALL: [Self; 39]

Every feature, in declaration order.

Source

pub const fn as_str(self) -> &'static str

The feature’s name, for logs, errors and golden files.

Trait Implementations§

Source§

impl Clone for Feature

Source§

fn clone(&self) -> Self

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 Feature

Source§

impl Debug for Feature

Source§

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

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

impl Display for Feature

Source§

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

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

impl Eq for Feature

Source§

impl Hash for Feature

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Feature

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

fn clamp_to<R>(self, range: R) -> Self
where Self: Sized, R: ClampBounds<Self>,

🔬This is a nightly-only experimental API. (clamp_to)
Restrict a value to a certain range. Read more
Source§

impl PartialEq for Feature

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl PartialOrd for Feature

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StructuralPartialEq for Feature

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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