@@ -152,6 +152,54 @@ public async Task SampleAsync_Messages_Forwards_To_McpServer_SendRequestAsync()
152152 mockServer . Verify ( s => s . SendRequestAsync ( It . IsAny < JsonRpcRequest > ( ) , It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
153153 }
154154
155+ [ Fact ]
156+ public async Task SampleAsync_Messages_UsesDefaultSamplingMaxTokens_WhenNotSpecified ( )
157+ {
158+ var mockServer = new Mock < McpServer > { CallBase = true } ;
159+
160+ var resultPayload = new CreateMessageResult
161+ {
162+ Content = new TextContentBlock { Text = "resp" } ,
163+ Model = "test-model" ,
164+ Role = Role . Assistant ,
165+ StopReason = "endTurn" ,
166+ } ;
167+
168+ const int customDefaultMaxTokens = 500 ;
169+
170+ mockServer
171+ . Setup ( s => s . ClientCapabilities )
172+ . Returns ( new ClientCapabilities ( ) { Sampling = new ( ) } ) ;
173+
174+ mockServer
175+ . Setup ( s => s . ServerOptions )
176+ . Returns ( new McpServerOptions { DefaultSamplingMaxTokens = customDefaultMaxTokens } ) ;
177+
178+ CreateMessageRequestParams ? capturedRequest = null ;
179+ mockServer
180+ . Setup ( s => s . SendRequestAsync ( It . IsAny < JsonRpcRequest > ( ) , It . IsAny < CancellationToken > ( ) ) )
181+ . Callback < JsonRpcRequest , CancellationToken > ( ( request , _ ) =>
182+ {
183+ capturedRequest = JsonSerializer . Deserialize < CreateMessageRequestParams > (
184+ request . Params ?? throw new InvalidOperationException ( ) ,
185+ McpJsonUtilities . DefaultOptions ) ;
186+ } )
187+ . ReturnsAsync ( new JsonRpcResponse
188+ {
189+ Id = default ,
190+ Result = JsonSerializer . SerializeToNode ( resultPayload , McpJsonUtilities . DefaultOptions ) ,
191+ } ) ;
192+
193+ IMcpServer server = mockServer . Object ;
194+
195+ // Call SampleAsync without specifying MaxOutputTokens in options
196+ await server . SampleAsync ( [ new ChatMessage ( ChatRole . User , "hi" ) ] , cancellationToken : TestContext . Current . CancellationToken ) ;
197+
198+ // Verify that the default value was used
199+ Assert . NotNull ( capturedRequest ) ;
200+ Assert . Equal ( customDefaultMaxTokens , capturedRequest . MaxTokens ) ;
201+ }
202+
155203 [ Fact ]
156204 public async Task RequestRootsAsync_Forwards_To_McpServer_SendRequestAsync ( )
157205 {
0 commit comments