createmcps.com

MCP-ERR-007

Missing client capability returns -32021 with data.requiredCapabilities

“If processing a request requires a capability the client did not include, the server MUST return a MissingRequiredClientCapabilityError whose data.requiredCapabilities lists the missing capabilities.” — spec anchor

How to fix this

When a request needs a capability the client did not declare, return `-32021` with `data.requiredCapabilities` naming exactly what was missing.

Example: failing and passing

The tool needs to elicit input but the client declared no elicitation capability, and the server's -32021 error does not say which capability is missing.
Violates MCP-ERR-007 · HTTP
POST /mcp HTTP/1.1
Host: mcp.example.com
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: create_issue

{"jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {"name": "create_issue", "arguments": {"title": "Bug"},
    "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
              "io.modelcontextprotocol/clientCapabilities": {}}}}

HTTP/1.1 400 Bad Request
Content-Type: application/json

{"jsonrpc": "2.0", "id": 1, "error": {"code": -32021, "message": "Server requires the elicitation capability for this request"}}
The server returns -32021 with data.requiredCapabilities naming the missing elicitation capability.
Complies with MCP-ERR-007 · HTTP
POST /mcp HTTP/1.1
Host: mcp.example.com
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: create_issue

{"jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {"name": "create_issue", "arguments": {"title": "Bug"},
    "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
              "io.modelcontextprotocol/clientCapabilities": {}}}}

HTTP/1.1 400 Bad Request
Content-Type: application/json

{"jsonrpc": "2.0", "id": 1, "error": {"code": -32021, "message": "Server requires the elicitation capability for this request", "data": {"requiredCapabilities": {"elicitation": {}}}}}

How the validator checks this

Probe P4.1, against a streamable-http server on the modern protocol. What it reports:

skip
Cannot construct a request that requires a specific client capability without invoking a real tool — out of scope for a read-only probe

Quoted from the probe that runs this check, so it cannot drift from what the validator actually reports.

This rule is checked heuristically: a fail is inferred rather than certain, so it bumps the overall grade up one level instead of being treated as certain non-compliance.

Checked in the same request as MCP-ERR-006.

Check your own server against MCP-ERR-007

Probe P4.1 checks MCP-ERR-007 in the same request as 1 other rule, 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: MCP error codes explained.

Other Error codes rules

  • MCP-ERR-001Unsupported version returns -32022 with data.supported[]
  • MCP-ERR-002Unknown method returns HTTP 404 and JSON-RPC -32601
  • MCP-ERR-003Resource-not-found uses -32602, not the retired -32002
  • MCP-ERR-004The retired -32042 code is never emitted
  • MCP-ERR-005No undefined code is emitted in the reserved -32020…-32099 range
  • MCP-ERR-006Missing required _meta field returns HTTP 400 + JSON-RPC -32602
  • MCP-ERR-008New implementation-defined codes avoid the legacy -32000…-32019 range