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

Function TestSamplingToolsCapabilities

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

Source from the content-addressed store, hash-verified

154}
155
156func TestSamplingToolsCapabilities(t *testing.T) {
157 ctx := context.Background()
158
159 t.Run("client with explicit tools capability", func(t *testing.T) {
160 ct, st := NewInMemoryTransports()
161
162 client := NewClient(testImpl, &ClientOptions{
163 CreateMessageHandler: func(_ context.Context, _ *CreateMessageRequest) (*CreateMessageResult, error) {
164 return &CreateMessageResult{Model: "m", Content: &TextContent{}}, nil
165 },
166 Capabilities: &ClientCapabilities{
167 Sampling: &SamplingCapabilities{
168 Tools: &SamplingToolsCapabilities{},
169 Context: &SamplingContextCapabilities{},
170 },
171 },
172 })
173
174 server := NewServer(testImpl, nil)
175 ss, err := server.Connect(ctx, st, nil)
176 if err != nil {
177 t.Fatal(err)
178 }
179 defer ss.Close()
180
181 cs, err := client.Connect(ctx, ct, nil)
182 if err != nil {
183 t.Fatal(err)
184 }
185 defer cs.Close()
186
187 // Check server sees client capabilities
188 caps := ss.InitializeParams().Capabilities
189 want := &SamplingCapabilities{
190 Tools: &SamplingToolsCapabilities{},
191 Context: &SamplingContextCapabilities{},
192 }
193 if diff := cmp.Diff(want, caps.Sampling); diff != "" {
194 t.Errorf("SamplingCapabilities mismatch (-want +got):\n%s", diff)
195 }
196 })
197
198 t.Run("client without tools capability", func(t *testing.T) {
199 ct, st := NewInMemoryTransports()
200
201 client := NewClient(testImpl, &ClientOptions{
202 CreateMessageHandler: func(_ context.Context, _ *CreateMessageRequest) (*CreateMessageResult, error) {
203 return &CreateMessageResult{Model: "m", Content: &TextContent{}}, nil
204 },
205 // No Capabilities.Sampling.Tools set
206 })
207
208 server := NewServer(testImpl, nil)
209 ss, err := server.Connect(ctx, st, nil)
210 if err != nil {
211 t.Fatal(err)
212 }
213 defer ss.Close()

Callers

nothing calls this directly

Calls 8

ConnectMethod · 0.95
ConnectMethod · 0.95
NewInMemoryTransportsFunction · 0.85
NewClientFunction · 0.85
NewServerFunction · 0.85
RunMethod · 0.80
InitializeParamsMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…