Documentation Index
Fetch the complete documentation index at: https://modelcontextprotocol.io/llms.txt
Use this file to discover all available pages before exploring further.
server/discover lets a client query a server’s supported protocol versions,
capabilities, and identity before sending any other requests. Servers MUST
implement it.
Request
The request carries no body parameters beyond the standard_meta:
Response
The server replies with its supported protocol versions, capabilities, and identity:Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
supportedVersions | string[] | yes | Protocol versions the server supports. The client should choose one for subsequent requests. |
capabilities | ServerCapabilities | yes | Capabilities the server supports (tools, resources, prompts, etc.). |
serverInfo | Implementation | yes | Name and version of the server software. |
instructions | string | no | Natural-language guidance for LLMs on how to use this server effectively. |
When to Call
Callingserver/discover is optional for clients — a client may invoke any
RPC inline and handle
UnsupportedProtocolVersionError
if the server does not support the requested version. However, server/discover
is useful in two scenarios:
- Up-front version selection. The client learns the server’s supported versions before sending any other request, avoiding a round-trip error.
- STDIO backward-compatibility probe. On stdio, there is no per-request
HTTP status code to drive fallback. A client that supports both modern
(per-request
_meta) and legacy (initializehandshake) servers SHOULD sendserver/discoverfirst. If the server returnsMethod not found(-32601), the client falls back to theinitializehandshake.