Summary Add support for tool use within sampling requests, as described in the MCP 2025-11-25 spec's sampling.tools capability. New types Content types: - ToolUseContent — represents a tool invocation request from the assistant - ToolResultContent — represents the result of a tool invocation, with nested []Content for the result blocks Capability types: - SamplingCapabilities gains Tools and Context sub-fields - SamplingToolsCapabilities, SamplingContextCapabilities Tool-enabled sampling (parallel tool calls): - CreateMessageWithToolsParams with SamplingMessageV2 (supports array content) - CreateMessageWithToolsResult (supports array content) - ToolChoice — controls tool invocation mode (auto, required, none) - ServerSession.CreateMessageWithTools - ClientOptions.CreateMessageWithToolsHandler Design Following the TypeScript SDK's pattern, tool-enabled sampling uses separate types from basic sampling to avoid breaking the existing API. The basic CreateMessage/CreateMessageResult path is unchanged. Both paths share the same wire method (sampling/createMessage) and go through the method info table. The table uses the broader CreateMessageWithToolsResult type internally; CreateMessage downconverts (erroring if multiple content blocks are returned). This is documented as a rough edge to unify in v2. Setting CreateMessageWithToolsHandler automatically infers the sampling.tools capability. It is a panic to set both CreateMessageHandler and CreateMessageWithToolsHandler. References - https://modelcontextprotocol.io/specification/2025-11-25/client/sampling - TypeScript SDK: CreateMessageResultWithToolsSchema / CreateMessageRequestParamsWithTools --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
39 lines
2.2 KiB
Go
39 lines
2.2 KiB
Go
// Copyright 2025 The Go MCP SDK Authors. All rights reserved.
|
|
// Use of this source code is governed by an MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// This file holds the request types.
|
|
|
|
package mcp
|
|
|
|
type (
|
|
CallToolRequest = ServerRequest[*CallToolParamsRaw]
|
|
CompleteRequest = ServerRequest[*CompleteParams]
|
|
GetPromptRequest = ServerRequest[*GetPromptParams]
|
|
InitializedRequest = ServerRequest[*InitializedParams]
|
|
ListPromptsRequest = ServerRequest[*ListPromptsParams]
|
|
ListResourcesRequest = ServerRequest[*ListResourcesParams]
|
|
ListResourceTemplatesRequest = ServerRequest[*ListResourceTemplatesParams]
|
|
ListToolsRequest = ServerRequest[*ListToolsParams]
|
|
ProgressNotificationServerRequest = ServerRequest[*ProgressNotificationParams]
|
|
ReadResourceRequest = ServerRequest[*ReadResourceParams]
|
|
RootsListChangedRequest = ServerRequest[*RootsListChangedParams]
|
|
SubscribeRequest = ServerRequest[*SubscribeParams]
|
|
UnsubscribeRequest = ServerRequest[*UnsubscribeParams]
|
|
)
|
|
|
|
type (
|
|
CreateMessageRequest = ClientRequest[*CreateMessageParams]
|
|
CreateMessageWithToolsRequest = ClientRequest[*CreateMessageWithToolsParams]
|
|
ElicitRequest = ClientRequest[*ElicitParams]
|
|
initializedClientRequest = ClientRequest[*InitializedParams]
|
|
InitializeRequest = ClientRequest[*InitializeParams]
|
|
ListRootsRequest = ClientRequest[*ListRootsParams]
|
|
LoggingMessageRequest = ClientRequest[*LoggingMessageParams]
|
|
ProgressNotificationClientRequest = ClientRequest[*ProgressNotificationParams]
|
|
PromptListChangedRequest = ClientRequest[*PromptListChangedParams]
|
|
ResourceListChangedRequest = ClientRequest[*ResourceListChangedParams]
|
|
ResourceUpdatedNotificationRequest = ClientRequest[*ResourceUpdatedNotificationParams]
|
|
ToolListChangedRequest = ClientRequest[*ToolListChangedParams]
|
|
ElicitationCompleteNotificationRequest = ClientRequest[*ElicitationCompleteParams]
|
|
)
|