{"record":{"id":"16ee77d3306b347f","repo":"rohitg00/ai-engineering-from-scratch","slug":"32021-16ee77","errorCode":"-32021","errorMessage":"modern request is missing {CLIENT_CAPABILITIES_KEY}","messagePattern":"modern request is missing (.+?)","errorType":"exception","errorClass":"ProtocolViolation","httpStatus":null,"severity":"error","filePath":"phases/13-tools-and-protocols/31-mcp-conformance-versioning-and-operations/code/main.py","lineNumber":204,"sourceCode":"    if not isinstance(params, dict):\n        raise ProtocolViolation(\"params must be an object\", -32602)\n    wire_headers = normalized_headers(headers)\n    if era == \"legacy\":\n        if body[\"method\"] != \"initialize\" and wire_headers.get(\"mcp-protocol-version\") == MODERN_VERSION:\n            raise ProtocolViolation(\"modern metadata reached the legacy branch\", -32020)\n        return\n    if era != \"modern\":\n        raise ValueError(f\"unknown era: {era}\")\n\n    metadata = params.get(\"_meta\")\n    if not isinstance(metadata, dict):\n        raise ProtocolViolation(\"modern request is missing params._meta\", -32602)\n    protocol_version = metadata.get(PROTOCOL_VERSION_KEY)\n    capabilities = metadata.get(CLIENT_CAPABILITIES_KEY)\n    if not isinstance(protocol_version, str):\n        raise ProtocolViolation(f\"modern request is missing {PROTOCOL_VERSION_KEY}\", -32602)\n    if not isinstance(capabilities, dict):\n        raise ProtocolViolation(f\"modern request is missing {CLIENT_CAPABILITIES_KEY}\", -32021)\n\n    mirrored = {\n        \"mcp-protocol-version\": protocol_version,\n        \"mcp-method\": body[\"method\"],\n    }\n    name = routing_name(body)\n    if name is not None:\n        mirrored[\"mcp-name\"] = name\n    for header, body_value in mirrored.items():\n        header_value = wire_headers.get(header)\n        if header == \"mcp-name\" and header_value is not None:\n            header_value = decode_header_value(header_value)\n        if header_value != body_value:\n            raise ProtocolViolation(\n                f\"{header} does not match the JSON-RPC body\",\n                -32020,\n            )\n    if protocol_version != MODERN_VERSION:","sourceCodeStart":186,"sourceCodeEnd":222,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/13-tools-and-protocols/31-mcp-conformance-versioning-and-operations/code/main.py#L186-L222","documentation":"Error \"modern request is missing {CLIENT_CAPABILITIES_KEY}\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at phases/13-tools-and-protocols/31-mcp-conformance-versioning-and-operations/code/main.py:204 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","schemaVersion":2},"datasetVersion":"2026-08-26T07:17:17.940Z"}