Skip to main content
Utilities for producing MCP-compliant JSON Schemas. Pydantic represents Optional[T] as \{"anyOf": [\{"type": "T"\}, \{"type": "null"\}]\}. While valid JSON Schema, this is not idiomatic MCP — the protocol signals optionality by omitting the property from the required array. The anyOf/null pattern also confuses several MCP clients (e.g. the Inspector) which fail to render descriptions for those fields. simplify_optional_schema walks a JSON Schema object and collapses every nullable anyOf into the simpler \{"type": "T"\} form.

simplify_optional_schema

function simplify_optional_schema

Return schema with nullable anyOf patterns simplified.Returns a deep copy when properties need simplification. When the schema has no properties key (or it is empty), the original dict is returned as-is since there is nothing to transform.Only touches properties of the top-level object schema — nested $defs and deeply nested objects are left as-is since MCP tool schemas are typically flat.
from mcp_use.server.utils.json_schema import simplify_optional_schema
Parameters
schema
dict[str, Any]
required
Dictionary of key-value pairs
Returns
returns
dict[str, Any]
Signature
def simplify_optional_schema(schema: dict[str, Any]):