diff --git a/src/All.slnx b/src/All.slnx
index 79c4eb007d0..9e733eda2ae 100644
--- a/src/All.slnx
+++ b/src/All.slnx
@@ -194,6 +194,7 @@
+
diff --git a/src/HotChocolate/Adapters/Adapters.slnx b/src/HotChocolate/Adapters/Adapters.slnx
index df81d29adda..3a273f4655d 100644
--- a/src/HotChocolate/Adapters/Adapters.slnx
+++ b/src/HotChocolate/Adapters/Adapters.slnx
@@ -15,6 +15,7 @@
+
diff --git a/src/HotChocolate/Adapters/src/Adapters.Mcp.Core/Serialization/McpSettingsSerializerContext.cs b/src/HotChocolate/Adapters/src/Adapters.Mcp.Core/Serialization/McpSettingsSerializerContext.cs
index 0ecad385b6a..ce880c278f8 100644
--- a/src/HotChocolate/Adapters/src/Adapters.Mcp.Core/Serialization/McpSettingsSerializerContext.cs
+++ b/src/HotChocolate/Adapters/src/Adapters.Mcp.Core/Serialization/McpSettingsSerializerContext.cs
@@ -6,5 +6,6 @@ namespace HotChocolate.Adapters.Mcp.Serialization;
[JsonSerializable(typeof(McpToolSettingsDto))]
[JsonSourceGenerationOptions(
PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase,
- DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
+ DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
+ AllowOutOfOrderMetadataProperties = true)]
internal partial class McpSettingsSerializerContext : JsonSerializerContext;
diff --git a/src/HotChocolate/Adapters/test/Adapters.Mcp.Core.Tests/HotChocolate.Adapters.Mcp.Core.Tests.csproj b/src/HotChocolate/Adapters/test/Adapters.Mcp.Core.Tests/HotChocolate.Adapters.Mcp.Core.Tests.csproj
new file mode 100644
index 00000000000..3f80bcdd5ac
--- /dev/null
+++ b/src/HotChocolate/Adapters/test/Adapters.Mcp.Core.Tests/HotChocolate.Adapters.Mcp.Core.Tests.csproj
@@ -0,0 +1,13 @@
+
+
+
+
+ HotChocolate.Adapters.Mcp.Core.Tests
+ HotChocolate.Adapters.Mcp.Core
+
+
+
+
+
+
+
diff --git a/src/HotChocolate/Adapters/test/Adapters.Mcp.Core.Tests/Serialization/McpPromptSettingsSerializerTests.cs b/src/HotChocolate/Adapters/test/Adapters.Mcp.Core.Tests/Serialization/McpPromptSettingsSerializerTests.cs
new file mode 100644
index 00000000000..327375ce5d9
--- /dev/null
+++ b/src/HotChocolate/Adapters/test/Adapters.Mcp.Core.Tests/Serialization/McpPromptSettingsSerializerTests.cs
@@ -0,0 +1,37 @@
+using System.Text.Json;
+using HotChocolate.Adapters.Mcp.Serialization;
+
+namespace HotChocolate.Adapters.Mcp.Core.Serialization;
+
+public sealed class McpPromptSettingsSerializerTests
+{
+ [Fact]
+ public void Parse_WithPolymorphicMessages_ShouldSucceed()
+ {
+ // arrange
+ var document =
+ JsonDocument.Parse(
+ """
+ {
+ "messages": [
+ {
+ "role": "user",
+ "content": {
+ "text": "Get the person",
+ "type": "text"
+ }
+ }
+ ]
+ }
+ """);
+
+ // act
+ var settings = McpPromptSettingsSerializer.Parse(document);
+
+ // assert
+ var message = Assert.Single(settings.Messages);
+ Assert.Equal("user", message.Role);
+ var content = Assert.IsType(message.Content);
+ Assert.Equal("Get the person", content.Text);
+ }
+}