What’s actually changing
The specification changelog states it directly:
“Added
server/discoverRPC: Servers must implement this to advertise their supported protocol versions, capabilities, and identity; clients may call before other requests”
This closes the gap left by removing initialize. Previously, a client learned a server’s supported version and capabilities as part of the connection handshake. With that handshake gone, server/discover is the explicit, callable replacement, a request a client can make at any point (typically first) to learn what it’s talking to.
No fallback path if this handler is missing
A server built before the 2026-07-28 revision, with no initialize
replacement added, has no discovery mechanism at all under the new spec. This
isn’t a graceful-degradation case; it’s a required capability gap that blocks
a compliant client from negotiating safely.
Structural Comparison Matrix
| Operational Aspect | Before (initialize handshake) | After (2026-07-28+) |
|---|---|---|
| How a client learns server capabilities | Connection-start handshake response | Explicit server/discover call |
| Is this required on the server? | initialize was implicit to the protocol | server/discover is an explicit, mandatory RPC |
| When a client can call it | N/A, automatic at connection | Any time, typically before other requests |
Fix it: add the required handler
The exact response schema for server/discover wasn’t confirmed from a primary source with full field-level detail here; check the current MCP specification text directly for the precise shape before implementing. What’s confirmed is the requirement itself and its purpose: the response needs to communicate supported protocol versions, server capabilities, and server identity, the same three categories a pre-2026-07-28 initialize response would have returned from the server side.
grep -rln "\"method\": \"initialize\"" --include="*.py" --include="*.ts" --include="*.mjs" .If a server codebase only ever implemented initialize and never added a server/discover handler, that’s the concrete gap to close. Cross-reference against the current SDK version for your language; the official Tier 1 SDKs updated for this revision should already expose the right interface to implement against, rather than hand-rolling the RPC from scratch.
Confirmed version
Sourced from the official Model Context Protocol specification changelog, 2026-07-28 revision, published 2026-07-28. The requirement itself and its stated purpose are confirmed verbatim; the exact response field names weren’t independently verified against a full schema reference, so confirm those against the live spec before implementing. Browse more posts like this in the AI Productivity archive.







