File tree Expand file tree Collapse file tree 2 files changed +34
-2
lines changed
src/ModelContextProtocol.Core/Protocol
tests/ModelContextProtocol.Tests/Protocol Expand file tree Collapse file tree 2 files changed +34
-2
lines changed Original file line number Diff line number Diff line change 11using System . Diagnostics . CodeAnalysis ;
2- using System . Text . Json ;
2+ using System . Text . Json . Nodes ;
33using System . Text . Json . Serialization ;
44
55namespace ModelContextProtocol . Protocol ;
@@ -68,7 +68,7 @@ public sealed class CreateMessageRequestParams : RequestParams
6868 /// </para>
6969 /// </remarks>
7070 [ JsonPropertyName ( "metadata" ) ]
71- public JsonElement ? Metadata { get ; set ; }
71+ public JsonObject ? Metadata { get ; set ; }
7272
7373 /// <summary>
7474 /// Gets or sets the server's preferences for which model to select.
Original file line number Diff line number Diff line change 11using ModelContextProtocol . Protocol ;
22using System . Text . Json ;
3+ using System . Text . Json . Nodes ;
34
45namespace ModelContextProtocol . Tests . Protocol ;
56
@@ -166,6 +167,37 @@ public void WithToolChoiceNone_SerializationRoundtrips()
166167 Assert . NotNull ( deserialized . ToolChoice ) ;
167168 Assert . Equal ( "none" , deserialized . ToolChoice . Mode ) ;
168169 }
170+
171+ [ Fact ]
172+ public void WithMetadata_SerializationRoundtrips ( )
173+ {
174+ CreateMessageRequestParams requestParams = new ( )
175+ {
176+ MaxTokens = 500 ,
177+ Messages =
178+ [
179+ new SamplingMessage
180+ {
181+ Role = Role . User ,
182+ Content = [ new TextContentBlock { Text = "Hello" } ]
183+ }
184+ ] ,
185+ Metadata = new JsonObject
186+ {
187+ [ "provider" ] = "test-provider" ,
188+ [ "custom_setting" ] = 42
189+ }
190+ } ;
191+
192+ var json = JsonSerializer . Serialize ( requestParams , McpJsonUtilities . DefaultOptions ) ;
193+ var deserialized = JsonSerializer . Deserialize < CreateMessageRequestParams > ( json , McpJsonUtilities . DefaultOptions ) ;
194+
195+ Assert . NotNull ( deserialized ) ;
196+ Assert . Equal ( 500 , deserialized . MaxTokens ) ;
197+ Assert . NotNull ( deserialized . Metadata ) ;
198+ Assert . Equal ( "test-provider" , ( string ? ) deserialized . Metadata [ "provider" ] ) ;
199+ Assert . Equal ( 42 , ( int ) deserialized . Metadata [ "custom_setting" ] ! ) ;
200+ }
169201}
170202
171203
You can’t perform that action at this time.
0 commit comments