Skip to content

Commit 9ffc5c0

Browse files
committed
[MCP] Properly handle oneOf and anyOf in generated mcp schema
1 parent d36c14c commit 9ffc5c0

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

src/Mcp/JsonSchema/SchemaFactory.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,13 @@ public static function resolveNode(array|\ArrayObject $node, array $definitions,
109109
return self::resolveDeep($merged, $definitions, $resolving);
110110
}
111111

112+
// oneOf/anyOf nodes must not receive a type fallback — their type is expressed
113+
// through the sub-schemas. Adding 'type: object' here would break schemas like
114+
// HydraItemBaseSchema's @context, which is oneOf: [string, object].
115+
if (isset($node['oneOf']) || isset($node['anyOf'])) {
116+
return self::resolveDeep($node, $definitions, $resolving);
117+
}
118+
112119
if (!isset($node['type'])) {
113120
$node['type'] = 'object';
114121
}

0 commit comments

Comments
 (0)