in mcp.go [34:58]
func newKubectlMCPServer(ctx context.Context, kubectlConfig string, tools tools.Tools, workDir string) (*kubectlMCPServer, error) {
s := &kubectlMCPServer{
kubectlConfig: kubectlConfig,
workDir: workDir,
server: server.NewMCPServer(
"kubectl-ai",
"0.0.1",
server.WithToolCapabilities(true),
),
tools: tools,
}
for _, tool := range s.tools.AllTools() {
toolDefn := tool.FunctionDefinition()
toolInputSchema, err := toolDefn.Parameters.ToRawSchema()
if err != nil {
return nil, fmt.Errorf("converting tool schema to json.RawMessage: %w", err)
}
s.server.AddTool(mcp.NewToolWithRawSchema(
toolDefn.Name,
toolDefn.Description,
toolInputSchema,
), s.handleToolCall)
}
return s, nil
}