Latest MCP Protocol 2026_07_28
This notification is sent by the client to indicate that it is cancelling a request it previously issued.
On stdio, the server also sends this notification, solely to terminate a {@link SubscriptionsListenRequestsubscriptions/listen} stream: it references the ID of the subscriptions/listen request that opened the stream. Servers MUST NOT use this notification to cancel any other request.
The request SHOULD still be in-flight, but due to communication latency, it is always possible that this notification MAY arrive after the request has already finished.
This notification indicates that the result will be unused, so any associated processing SHOULD cease.
Latest MCP Protocol 2026_07_28
Capabilities a client may support. Known capabilities are defined here, in this schema, but this is not a closed set: any client can define its own, additional capabilities.
Latest MCP Protocol 2026_07_28
This notification is sent by the client to indicate that it is cancelling a request it previously issued.
On stdio, the server also sends this notification, solely to terminate a {@link SubscriptionsListenRequestsubscriptions/listen} stream: it references the ID of the subscriptions/listen request that opened the stream. Servers MUST NOT use this notification to cancel any other request.
The request SHOULD still be in-flight, but due to communication latency, it is always possible that this notification MAY arrive after the request has already finished.
This notification indicates that the result will be unused, so any associated processing SHOULD cease.
Latest MCP Protocol 2026_07_28
A request from the server to sample an LLM via the client. The client has full discretion over which model to select. The client should also inform the user before beginning sampling, to allow them to inspect the request (human in the loop) and decide whether to approve it.
Latest MCP Protocol 2026_07_28
The result returned by the client for a {@link CreateMessageRequestsampling/createMessage} request.
The client should inform the user before returning the sampled message, to allow them
to inspect the response (human in the loop) and decide whether to allow the server to see it.
Latest MCP Protocol 2026_07_28
A request from the client asking the server to advertise its supported
protocol versions, capabilities, and other metadata. Servers MUST
implement server/discover. Clients MAY call it but are not required
to — version negotiation can also happen inline via per-request _meta.
Latest MCP Protocol 2026_07_28
The contents of a resource, embedded into a prompt or tool call result.
It is up to the client how best to render embedded resources for the benefit
of the LLM and/or the user.
Latest MCP Protocol 2026_07_28
Returned when a server rejects a request because the values in the HTTP
headers do not match the corresponding values in the request body, or
because required headers are missing or malformed. For HTTP, the response
status code MUST be 400 Bad Request.
Latest MCP Protocol 2026_07_28
A map of server-initiated requests that the client must fulfill.
Keys are server-assigned identifiers; values are the request objects.
Latest MCP Protocol 2026_07_28
An InputRequiredResult sent by the server to indicate that additional input is needed
before the request can be completed.
At least one of inputRequests or requestState MUST be present.
Latest MCP Protocol 2026_07_28
A map of client responses to server-initiated requests.
Keys correspond to the keys in the {@link InputRequests} map;
values are the client’s result for each request.
Latest MCP Protocol 2026_07_28
A JSON-RPC error indicating that an internal error occurred on the receiver. This error is returned when the receiver encounters an unexpected condition that prevents it from fulfilling the request.
Latest MCP Protocol 2026_07_28
A JSON-RPC error indicating that the method parameters are invalid or malformed.
In MCP, this error is returned in various contexts when request parameters fail validation:
Latest MCP Protocol 2026_07_28
A JSON-RPC error indicating that the request is not a valid request object. This error is returned when the message structure does not conform to the JSON-RPC 2.0 specification requirements for a request (e.g., missing required fields like jsonrpc or method, or using invalid types for these fields).
Latest MCP Protocol 2026_07_28
Sent from the server to request a list of root URIs from the client. Roots allow
servers to ask for specific directories or files to operate on. A common example
for roots is providing a set of repositories or directories a server should operate
on.
This request is typically used when the server needs to understand the file system
structure or access specific locations that the client has permission to read from.
Latest MCP Protocol 2026_07_28
The result returned by the client for a {@link ListRootsRequestroots/list} request.
This result contains an array of {@link Root} objects, each representing a root directory
or file that the server can operate on.
Latest MCP Protocol 2026_07_28
JSONRPCNotification of a log message passed from server to client. The client opts in by setting “io.modelcontextprotocol/logLevel” in a request’s _meta.
Latest MCP Protocol 2026_07_28
Represents the contents of a _meta field, which clients and servers use to attach additional metadata to their interactions.
Certain key names are reserved by MCP for protocol-level metadata; implementations MUST NOT make assumptions about values at these keys. Additionally, specific schema definitions may reserve particular names for purpose-specific metadata, as declared in those definitions.
Valid keys have two segments:
Prefix:
Latest MCP Protocol 2026_07_28
A JSON-RPC error indicating that the requested method does not exist or is not available.
In MCP, a server returns this error when a client invokes a method the server does not implement — either a genuinely unknown method, or one gated behind a server capability the server did not advertise (e.g., calling prompts/list when the prompts capability was not advertised).
A request that requires a client capability the client did not declare is signalled instead by {@link MissingRequiredClientCapabilityError} (-32021).
Latest MCP Protocol 2026_07_28
Returned when processing a request requires a capability the client did not
declare in clientCapabilities. For HTTP, the response status code MUST be
400 Bad Request.
Latest MCP Protocol 2026_07_28
Hints to use for model selection.
Keys not declared here are currently left unspecified by the spec and are up
to the client to interpret.
Latest MCP Protocol 2026_07_28
The server’s preferences for model selection, requested of the client during sampling.
Because LLMs can vary along multiple dimensions, choosing the “best” model is
rarely straightforward. Different models excel in different areas—some are
faster but less capable, others are more capable but more expensive, and so
on. This interface allows servers to express their priorities across multiple
dimensions to help clients make an appropriate selection for their use case.
These preferences are always advisory. The client MAY ignore them. It is also
up to the client to decide how to interpret these preferences and how to
balance them against other considerations.
Latest MCP Protocol 2026_07_28
A JSON-RPC error indicating that invalid JSON was received by the server. This error is returned when the server cannot parse the JSON text of a message.
Latest MCP Protocol 2026_07_28
An optional notification from the server to the client, informing it that the list of prompts it offers has changed. This is only delivered on a {@link SubscriptionsListenRequestsubscriptions/listen} stream when the client requested it via the promptsListChanged filter field.
Latest MCP Protocol 2026_07_28
Describes a message returned as part of a prompt.
This is similar to {@link SamplingMessage}, but also supports the embedding of
resources from the MCP server.
Latest MCP Protocol 2026_07_28
A resource that the server is capable of reading, included in a prompt or tool call result.
Note: resource links returned by tools are not guaranteed to appear in the results of {@link ListResourcesRequestresources/list} requests.
Latest MCP Protocol 2026_07_28
An optional notification from the server to the client, informing it that the list of resources it can read from has changed. This is only delivered on a {@link SubscriptionsListenRequestsubscriptions/listen} stream when the client requested it via the resourcesListChanged filter field.
Latest MCP Protocol 2026_07_28
A notification from the server to the client, informing it that a resource has changed and may need to be read again. This is only sent for resources the client opted in to via the resourceSubscriptions field of a {@link SubscriptionsListenRequestsubscriptions/listen} request.
Latest MCP Protocol 2026_07_28
Indicates the type of a {@link Result} object, allowing the client to
determine how to parse the response.
complete - the request completed successfully and the result contains the final content.
input_required - the request requires additional input and the result contains an {@link InputRequiredResult} object with instructions for the client to provide additional input before retrying the original request.
Latest MCP Protocol 2026_07_28
Capabilities that a server may support. Known capabilities are defined here, in this schema, but this is not a closed set: any server can define its own, additional capabilities.
Latest MCP Protocol 2026_07_28
The set of notification types a client may opt in to on a
{@link SubscriptionsListenRequestsubscriptions/listen} request.
Each notification type is opt-in; the server MUST NOT send
notification types the client has not explicitly requested here.
Latest MCP Protocol 2026_07_28
Sent by the server to acknowledge that a
{@link SubscriptionsListenRequestsubscriptions/listen} subscription has been
established and to report which notification types it agreed to honor.
This notification MUST be the first message the server sends carrying the
subscription’s ID in io.modelcontextprotocol/subscriptionId. The server MUST
NOT send any notification on the subscription before acknowledging it. On
stdio, where every subscription shares one channel, this ordering is defined
per subscription ID and not per channel: messages belonging to other
subscriptions MAY be interleaved before it.
Latest MCP Protocol 2026_07_28
Sent from the client to open a long-lived channel for receiving notifications
outside the context of a specific request. Replaces the previous HTTP GET
endpoint and ensures consistent behavior between HTTP and STDIO.
Latest MCP Protocol 2026_07_28
The response to a {@link SubscriptionsListenRequestsubscriptions/listen}
request, signalling that the subscription has ended gracefully (for example,
during server shutdown). Because the listen stream is long-lived, this result
is sent only when the server tears the subscription down; an abrupt transport
close carries no response. The result body is otherwise empty.
Latest MCP Protocol 2026_07_28
Extends {@link ResultMetaObject} with the subscription-stream identifier carried by a
{@link SubscriptionsListenResult}. All key naming rules from MetaObject apply.
Latest MCP Protocol 2026_07_28
A successful response from the server for a {@link SubscriptionsListenRequestsubscriptions/listen}
request, sent when the server tears the subscription down gracefully.
Latest MCP Protocol 2026_07_28
Additional properties describing a {@link Tool} to clients.
NOTE: all properties in ToolAnnotations are hints.
They are not guaranteed to provide a faithful description of
tool behavior (including descriptive properties like title).
Clients should never make tool use decisions based on ToolAnnotations
received from untrusted servers.
Latest MCP Protocol 2026_07_28
A JSON Schema object defining the expected parameters for the tool.
Tool arguments are always JSON objects, so type: “object” is required at the root.
Beyond that, any JSON Schema 2020-12 keyword may appear alongside type — including
composition keywords (oneOf, anyOf, allOf, not), conditional keywords
(if/then/else), reference keywords ($ref, $defs, $anchor), and any other
standard validation or annotation keywords.
Property schemas may carry an x-mcp-header annotation to mirror the
argument value into an HTTP header on the Streamable HTTP transport. See
the Streamable HTTP transport specification for the validity and
extraction rules.
Defaults to JSON Schema 2020-12 when no explicit $schema is provided.
Latest MCP Protocol 2026_07_28
An optional notification from the server to the client, informing it that the list of tools it offers has changed. This is only delivered on a {@link SubscriptionsListenRequestsubscriptions/listen} stream when the client requested it via the toolsListChanged filter field.
Latest MCP Protocol 2026_07_28
An optional JSON Schema object defining the structure of the tool’s output returned in
the structuredContent field of a {@link CallToolResult}. This can be any valid JSON Schema 2020-12.
Defaults to JSON Schema 2020-12 when no explicit $schema is provided.
Latest MCP Protocol 2026_07_28
Returned when the request’s protocol version is unknown to the server or
unsupported (e.g., a known experimental or draft version the server has
chosen not to implement). For HTTP, the response status code MUST be
400 Bad Request.
Latest MCP Protocol 2026_07_28
Optional specifier for the theme this icon is designed for. “light” indicates
the icon is designed to be used with a light background, and “dark” indicates
the icon is designed to be used with a dark background.
If not provided, the client should assume the icon can be used with any theme.
Latest MCP Protocol 2026_07_28
A request to include context from one or more MCP servers (including the caller), to be attached to the prompt.
The client MAY ignore this request.
Default is “none”. The values “thisServer” and “allServers” are deprecated (SEP-2596): servers SHOULD
omit this field or use “none”, and SHOULD only use the deprecated values if the client declares
{@link ClientCapabilities.sampling.context}.