View the source code for this module on GitHub: https://github.com/mcp-use/mcp-use/blob/main/libraries/python/mcp_use/server/utils/json_schema.py
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.ReturnsDictionary of key-value pairs
Signature