MCPcopy Create free account
hub / github.com/modelcontextprotocol/go-sdk / TestSamplingWithTools_ParallelToolCalls

Function TestSamplingWithTools_ParallelToolCalls

mcp/sampling_test.go:321–373  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

319}
320
321func TestSamplingWithTools_ParallelToolCalls(t *testing.T) {
322 ctx := context.Background()
323 ct, st := NewInMemoryTransports()
324
325 result := &CreateMessageWithToolsResult{
326 Model: "test-model",
327 Role: "assistant",
328 Content: []Content{
329 &ToolUseContent{ID: "call_1", Name: "weather", Input: map[string]any{"city": "SF"}},
330 &ToolUseContent{ID: "call_2", Name: "weather", Input: map[string]any{"city": "NY"}},
331 },
332 StopReason: "toolUse",
333 }
334 // Client returns parallel tool use results
335 client := NewClient(testImpl, &ClientOptions{
336 CreateMessageWithToolsHandler: func(_ context.Context, req *CreateMessageWithToolsRequest) (*CreateMessageWithToolsResult, error) {
337 return result, nil
338 },
339 Capabilities: &ClientCapabilities{
340 Sampling: &SamplingCapabilities{Tools: &SamplingToolsCapabilities{}},
341 },
342 })
343
344 server := NewServer(testImpl, nil)
345 ss, err := server.Connect(ctx, st, nil)
346 if err != nil {
347 t.Fatal(err)
348 }
349 defer ss.Close()
350
351 cs, err := client.Connect(ctx, ct, nil)
352 if err != nil {
353 t.Fatal(err)
354 }
355 defer cs.Close()
356
357 gotResult, err := ss.CreateMessageWithTools(ctx, &CreateMessageWithToolsParams{
358 MaxTokens: 1000,
359 Messages: []*SamplingMessageV2{
360 {Role: "user", Content: []Content{&TextContent{Text: "Weather in SF and NY"}}},
361 },
362 Tools: []*Tool{
363 {Name: "weather", InputSchema: map[string]any{"type": "object"}},
364 },
365 })
366 if err != nil {
367 t.Fatalf("CreateMessageWithTools() error = %v", err)
368 }
369
370 if diff := cmp.Diff(result, gotResult); diff != "" {
371 t.Errorf("CreateMessageWithToolsResult mismatch (-want +got):\n%s", diff)
372 }
373}
374
375func TestNewClient_BothHandlersPanics(t *testing.T) {
376 defer func() {

Callers

nothing calls this directly

Calls 7

ConnectMethod · 0.95
ConnectMethod · 0.95
NewInMemoryTransportsFunction · 0.85
NewClientFunction · 0.85
NewServerFunction · 0.85
CloseMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…