NewMCP Production is out: 57 lessons, 14 labsSee the course

Free sheet · Lesson 1.2 of MCP Production

One MCP request, field by field.

The reference sheet from lesson 1.2: what each header and body field means under revision 2026-07-28, and the check that keeps the two from contradicting each other.

Download the PDF

A4, prints in colour or greyscale. Same sheet the course hands out.

Where this goes next

Lab 1 builds a server that rejects a request whose headers disagree with its body, and runs the same fixtures against a TypeScript and a Python implementation.

FieldMeaningCheck
HTTP endpointServer entry pointCorrect path and destination
methodProtocol operationMirrors Mcp-Method
params.nameAddressed tool or promptMirrors decoded Mcp-Name where required
params.uriAddressed resourceMirrors decoded Mcp-Name on resources/read
params.argumentsTool inputValidate against the tool contract
idRequest correlationMatch the response; not an idempotency key
_meta.io.modelcontextprotocol/protocolVersionRequested contractMirrors MCP-Protocol-Version
_meta.io.modelcontextprotocol/clientInfoOptional client self-descriptionNot authenticated identity
_meta.io.modelcontextprotocol/clientCapabilitiesDeclared supported behaviorNot authorization

The _meta object belongs under params. Mcp-Name is required for tools/call, prompts/get, and resources/read, not for every method. Header names are case-insensitive; method/name values are case-sensitive. The prescribed name encoding is =?base64?{UTF-8 bytes encoded as Base64}?=. Decode before comparing; malformed encodings are not empty names.

Source: HTTP binding, checked 2026-09-09.

More free sheets#