rohitg00/ai-engineering-from-scratch · error · RpcProblem
-32022
-32022
Error message
Unsupported protocol version
What it means
Error "Unsupported protocol version" thrown in rohitg00/ai-engineering-from-scratch.
Source
Thrown at phases/13-tools-and-protocols/07-building-an-mcp-server/code/main.py:169
return result
def validate_request(message: dict[str, Any]) -> None:
if message.get("jsonrpc") != "2.0" or not isinstance(message.get("method"), str):
raise RpcProblem(-32600, "Invalid Request")
if "id" in message and type(message["id"]) not in (int, str):
raise RpcProblem(-32600, "id must be a string or integer")
params = message.get("params")
if not isinstance(params, dict):
raise RpcProblem(-32602, "params must be an object")
meta = params.get("_meta")
if not isinstance(meta, dict):
raise RpcProblem(-32602, "params._meta is required")
requested = meta.get(VERSION_KEY)
if not isinstance(requested, str):
raise RpcProblem(-32602, f"{VERSION_KEY} is required")
if requested not in SUPPORTED_VERSIONS:
raise RpcProblem(
-32022,
"Unsupported protocol version",
{"requested": requested, "supported": SUPPORTED_VERSIONS.copy()},
)
if not isinstance(meta.get(CAPABILITIES_KEY), dict):
raise RpcProblem(-32602, f"{CAPABILITIES_KEY} is required")
client_info = meta.get(CLIENT_INFO_KEY)
if client_info is not None and (
not isinstance(client_info, dict)
or not isinstance(client_info.get("name"), str)
or not isinstance(client_info.get("version"), str)
):
raise RpcProblem(-32602, f"{CLIENT_INFO_KEY} is malformed")
def exec_notes_list(arguments: dict[str, Any]) -> list[dict[str, str]]:
tag = arguments.get("tag")
items = [View on GitHub (pinned to 39ea8a1c6d)
When it happens
Trigger: Thrown at phases/13-tools-and-protocols/07-building-an-mcp-server/code/main.py:169 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of rohitg00/ai-engineering-from-scratch@39ea8a1c6d (2026-08-26).
Data as JSON: /api/errors/63fd0900c4b62dd7.
Report an issue: GitHub.