Skip to content

Commit 4496e2e

Browse files
Copilotstephentoub
andcommitted
Refactor CreateStructuredResponse switch to target JsonElement? directly
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
1 parent 4da421c commit 4496e2e

1 file changed

Lines changed: 12 additions & 8 deletions

File tree

src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -537,22 +537,26 @@ typeProperty.ValueKind is not JsonValueKind.String ||
537537
return null;
538538
}
539539

540-
JsonNode? nodeResult = aiFunctionResult switch
540+
JsonElement? elementResult = aiFunctionResult switch
541541
{
542-
JsonNode node => node,
543-
JsonElement jsonElement => JsonSerializer.SerializeToNode(jsonElement, McpJsonUtilities.JsonContext.Default.JsonElement),
544-
_ => JsonSerializer.SerializeToNode(aiFunctionResult, AIFunction.JsonSerializerOptions.GetTypeInfo(typeof(object))),
542+
JsonElement jsonElement => jsonElement,
543+
JsonNode node => node.Deserialize(McpJsonUtilities.JsonContext.Default.JsonElement),
544+
null => null,
545+
_ => JsonSerializer.SerializeToElement(aiFunctionResult, AIFunction.JsonSerializerOptions.GetTypeInfo(typeof(object))),
545546
};
546547

547548
if (_structuredOutputRequiresWrapping)
548549
{
549-
nodeResult = new JsonObject
550+
JsonNode? resultNode = elementResult is { } je
551+
? JsonSerializer.SerializeToNode(je, McpJsonUtilities.JsonContext.Default.JsonElement)
552+
: null;
553+
return new JsonObject
550554
{
551-
["result"] = nodeResult
552-
};
555+
["result"] = resultNode
556+
}.Deserialize(McpJsonUtilities.JsonContext.Default.JsonElement);
553557
}
554558

555-
return nodeResult?.Deserialize(McpJsonUtilities.JsonContext.Default.JsonElement);
559+
return elementResult;
556560
}
557561

558562
private static CallToolResult ConvertAIContentEnumerableToCallToolResult(IEnumerable<AIContent> contentItems, JsonElement? structuredContent)

0 commit comments

Comments
 (0)