AION
Open-source releaseMLOps, Tooling & Infrastructure1 source · Oct 2, 2026

modelcontextprotocol/python-sdk v2.3.0

A few things behave differently, so skim these first:

Key points

  • A tool with an invalid x-mcp-header annotation fails at registration (#3620)
  • @mcp.tool(), addtool and Tool.fromfunction raise InvalidSignature, naming the tool and the problem.
  • For an optional header parameter, give the schema directly: Annotated[str | None, WithJsonSchema({"type": "string", "x-mcp-header": "Region"})] = None.
  • On the receiving side ctx.meta is None rather than {}, and middleware sees ctx.params as None for a request without params.

Sources (1)

  • [1]modelcontextprotocol/python-sdk v2.3.0
    GitHub: modelcontextprotocol/python-sdk · Oct 2, 10:02 PM
    A few things behave differently, so skim these first:
    **A tool with an invalid `x-mcp-header` annotation fails at registration** (#3620)

Extractive summary: sentences quoted from the sources.