MCP-DSC-001
server/discover is implemented
“Servers MUST implement server/discover.” — spec anchor
How to fix this
Implement the `server/discover` method. It replaced the `initialize` handshake and is the first request a modern client makes, so a server that cannot answer it leaves most other rules unassessable.
Example: failing and passing
POST /mcp HTTP/1.1
Host: mcp.example.com
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: server/discover
{"jsonrpc": "2.0", "id": 1, "method": "server/discover", "params": {"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}}}}
HTTP/1.1 404 Not Found
Content-Type: application/json
{"jsonrpc": "2.0", "id": 1, "error": {"code": -32601, "message": "Method not found"}}POST /mcp HTTP/1.1
Host: mcp.example.com
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: server/discover
{"jsonrpc": "2.0", "id": 1, "method": "server/discover", "params": {"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}}}}
HTTP/1.1 200 OK
Content-Type: application/json
{"jsonrpc": "2.0", "id": 1, "result": {"resultType": "complete",
"supportedVersions": ["2026-07-28"], "capabilities": {"tools": {}},
"ttlMs": 3600000, "cacheScope": "public"}}How the validator checks this
Probe P1.1, against a streamable-http server on the modern protocol. What it reports:
- pass
- server/discover responded successfully
- fail
- server/discover did not return a usable response (…)
- skip
- server/discover requires authorization (HTTP 401), so conformance could not be assessed without a token. The authorization checks below still apply.
Quoted from the probe that runs this check, so it cannot drift from what the validator actually reports.
This rule is checked deterministically: a fail here is a certain violation, not an inference.
Checked in the same request as MCP-DSC-002, MCP-DSC-003, MCP-DSC-004, MCP-DSC-005, MCP-STL-003, MCP-RES-001, MCP-RES-002, MCP-RES-005.
How often this is violated
Of the 7 servers where this rule could be evaluated, 4 did not satisfy it.
Counted across public validation reports, one server counted once. Servers where the rule could not be checked are excluded from both figures — they say nothing either way.
Check your own server against MCP-DSC-001
Probe P1.1 checks MCP-DSC-001 in the same request as 8 other rules, so one run shows your server's result for this rule next to the rest. Validate a server or read how the validator works.
Background on this topic: server/discover explained.
Other Discovery and capabilities rules
- MCP-DSC-002DiscoverResult advertises supported protocol versions
- MCP-DSC-003Advertised versions include a currently-supported revision
- MCP-DSC-004Extension identifiers use a valid non-reserved reverse-DNS prefix
- MCP-DSC-005Results carry io.modelcontextprotocol/serverInfo in _meta