createmcps.com

MCP-HDR-007

Base64 sentinel-encoded header values decoded before comparison

For headers that permit the Base64 sentinel encoding (Mcp-Name and Mcp-Param-{Name}), servers MUST decode encoded values before comparing them to the body value.spec anchor

How to fix this

Decode Base64 sentinel-encoded header values before comparing them to the body. `Mcp-Name` and `Mcp-Param-{Name}` both permit the encoding, and comparing the encoded form rejects requests that actually match.

How the validator checks this

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

pass
Decoded the Base64 sentinel Mcp-Name before comparing it to the body
fail
Rejected a Base64 sentinel-encoded Mcp-Name that decodes to the body value — encoded values must be decoded before comparison
info
Inconclusive (HTTP …, code …)

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.

Check your own server against this rule

The validator makes real protocol requests and reports this rule as pass, warn or fail alongside the other 78. Validate a server or read how the check works.

Other Request metadata headers rules

  • MCP-HDR-001Missing Mcp-Method rejected with 400 + HeaderMismatch
  • MCP-HDR-002Missing Mcp-Name on tools/call rejected with 400 + HeaderMismatch
  • MCP-HDR-003Mcp-Name header must match the request body
  • MCP-HDR-004Missing MCP-Protocol-Version rejected (modern-only servers)
  • MCP-HDR-005MCP-Protocol-Version header must match _meta.protocolVersion
  • MCP-HDR-006Header names compared case-insensitively
  • MCP-HDR-008Mcp-Param-{Name} validated against body when x-mcp-header is declared
  • MCP-HDR-009Mcp-Param-{Name} containing invalid characters is rejected
  • MCP-HDR-010Header validation runs before method dispatch