MCPcopy Index your code
hub / github.com/coder/coder / mcpFromSDK

Function mcpFromSDK

coderd/mcp/mcp.go:125–162  ·  view source on GitHub ↗

mcpFromSDK adapts a toolsdk.Tool to go-mcp's server.ServerTool

(sdkTool toolsdk.GenericTool, tb toolsdk.Deps)

Source from the content-addressed store, hash-verified

123
124// mcpFromSDK adapts a toolsdk.Tool to go-mcp's server.ServerTool
125func mcpFromSDK(sdkTool toolsdk.GenericTool, tb toolsdk.Deps) server.ServerTool {
126 if sdkTool.Schema.Properties == nil {
127 panic("developer error: schema properties cannot be nil")
128 }
129
130 return server.ServerTool{
131 Tool: mcp.Tool{
132 Name: sdkTool.Name,
133 Description: sdkTool.Description,
134 InputSchema: mcp.ToolInputSchema{
135 Type: "object",
136 Properties: sdkTool.Schema.Properties,
137 Required: sdkTool.Schema.Required,
138 },
139 Annotations: mcp.ToolAnnotation{
140 ReadOnlyHint: mcp.ToBoolPtr(sdkTool.MCPAnnotations.ReadOnlyHint),
141 DestructiveHint: mcp.ToBoolPtr(sdkTool.MCPAnnotations.DestructiveHint),
142 IdempotentHint: mcp.ToBoolPtr(sdkTool.MCPAnnotations.IdempotentHint),
143 OpenWorldHint: mcp.ToBoolPtr(sdkTool.MCPAnnotations.OpenWorldHint),
144 },
145 },
146 Handler: func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
147 var buf bytes.Buffer
148 if err := json.NewEncoder(&buf).Encode(request.Params.Arguments); err != nil {
149 return nil, xerrors.Errorf("failed to encode request arguments: %w", err)
150 }
151 result, err := sdkTool.Handler(ctx, tb, buf.Bytes())
152 if err != nil {
153 return nil, err
154 }
155 return &mcp.CallToolResult{
156 Content: []mcp.Content{
157 mcp.NewTextContent(string(result)),
158 },
159 }, nil
160 },
161 }
162}
163
164// mcpLoggerAdapter adapts slog.Logger to the mcp-go util.Logger interface
165type mcpLoggerAdapter struct {

Callers 2

RegisterToolsMethod · 0.70
RegisterChatGPTToolsMethod · 0.70

Calls 4

EncodeMethod · 0.80
ErrorfMethod · 0.45
HandlerMethod · 0.45
BytesMethod · 0.45

Tested by

no test coverage detected