diff --git a/go.mod b/go.mod index 04bf488..4628a70 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.1 require ( github.com/fsnotify/fsnotify v1.9.0 - github.com/mark3labs/mcp-go v0.28.0 + github.com/mark3labs/mcp-go v0.29.0 github.com/pkg/errors v0.9.1 github.com/spf13/afero v1.14.0 github.com/spf13/cobra v1.9.1 diff --git a/go.sum b/go.sum index 66d4d31..baf9907 100644 --- a/go.sum +++ b/go.sum @@ -185,8 +185,8 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mark3labs/mcp-go v0.28.0 h1:7yl4y5D1KYU2f/9Uxp7xfLIggfunHoESCRbrjcytcLM= -github.com/mark3labs/mcp-go v0.28.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4= +github.com/mark3labs/mcp-go v0.29.0 h1:sH1NBcumKskhxqYzhXfGc201D7P76TVXiT0fGVhabeI= +github.com/mark3labs/mcp-go v0.29.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= diff --git a/pkg/mcp/configuration.go b/pkg/mcp/configuration.go index ccce30e..60c0d50 100644 --- a/pkg/mcp/configuration.go +++ b/pkg/mcp/configuration.go @@ -26,7 +26,7 @@ func (s *Server) initConfiguration() []server.ServerTool { func (s *Server) configurationView(_ context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { minify := true - minified := ctr.Params.Arguments["minified"] + minified := ctr.GetArguments()["minified"] if _, ok := minified.(bool); ok { minify = minified.(bool) } diff --git a/pkg/mcp/events.go b/pkg/mcp/events.go index 1cd2e3f..f263d3f 100644 --- a/pkg/mcp/events.go +++ b/pkg/mcp/events.go @@ -22,7 +22,7 @@ func (s *Server) initEvents() []server.ServerTool { } func (s *Server) eventsList(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - namespace := ctr.Params.Arguments["namespace"] + namespace := ctr.GetArguments()["namespace"] if namespace == nil { namespace = "" } diff --git a/pkg/mcp/helm.go b/pkg/mcp/helm.go index ca6b037..b3af45c 100644 --- a/pkg/mcp/helm.go +++ b/pkg/mcp/helm.go @@ -48,19 +48,19 @@ func (s *Server) initHelm() []server.ServerTool { func (s *Server) helmInstall(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { var chart string ok := false - if chart, ok = ctr.Params.Arguments["chart"].(string); !ok { + if chart, ok = ctr.GetArguments()["chart"].(string); !ok { return NewTextResult("", fmt.Errorf("failed to install helm chart, missing argument chart")), nil } values := map[string]interface{}{} - if v, ok := ctr.Params.Arguments["values"].(map[string]interface{}); ok { + if v, ok := ctr.GetArguments()["values"].(map[string]interface{}); ok { values = v } name := "" - if v, ok := ctr.Params.Arguments["name"].(string); ok { + if v, ok := ctr.GetArguments()["name"].(string); ok { name = v } namespace := "" - if v, ok := ctr.Params.Arguments["namespace"].(string); ok { + if v, ok := ctr.GetArguments()["namespace"].(string); ok { namespace = v } ret, err := s.k.Helm.Install(ctx, chart, values, name, namespace) @@ -72,11 +72,11 @@ func (s *Server) helmInstall(ctx context.Context, ctr mcp.CallToolRequest) (*mcp func (s *Server) helmList(_ context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { allNamespaces := false - if v, ok := ctr.Params.Arguments["all_namespaces"].(bool); ok { + if v, ok := ctr.GetArguments()["all_namespaces"].(bool); ok { allNamespaces = v } namespace := "" - if v, ok := ctr.Params.Arguments["namespace"].(string); ok { + if v, ok := ctr.GetArguments()["namespace"].(string); ok { namespace = v } ret, err := s.k.Helm.List(namespace, allNamespaces) @@ -89,11 +89,11 @@ func (s *Server) helmList(_ context.Context, ctr mcp.CallToolRequest) (*mcp.Call func (s *Server) helmUninstall(_ context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { var name string ok := false - if name, ok = ctr.Params.Arguments["name"].(string); !ok { + if name, ok = ctr.GetArguments()["name"].(string); !ok { return NewTextResult("", fmt.Errorf("failed to uninstall helm chart, missing argument name")), nil } namespace := "" - if v, ok := ctr.Params.Arguments["namespace"].(string); ok { + if v, ok := ctr.GetArguments()["namespace"].(string); ok { namespace = v } ret, err := s.k.Helm.Uninstall(name, namespace) diff --git a/pkg/mcp/pods.go b/pkg/mcp/pods.go index 5fb0951..57163ce 100644 --- a/pkg/mcp/pods.go +++ b/pkg/mcp/pods.go @@ -100,7 +100,7 @@ func (s *Server) initPods() []server.ServerTool { } func (s *Server) podsListInAllNamespaces(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - labelSelector := ctr.Params.Arguments["labelSelector"] + labelSelector := ctr.GetArguments()["labelSelector"] var selector string if labelSelector != nil { selector = labelSelector.(string) @@ -114,11 +114,11 @@ func (s *Server) podsListInAllNamespaces(ctx context.Context, ctr mcp.CallToolRe } func (s *Server) podsListInNamespace(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - ns := ctr.Params.Arguments["namespace"] + ns := ctr.GetArguments()["namespace"] if ns == nil { return NewTextResult("", errors.New("failed to list pods in namespace, missing argument namespace")), nil } - labelSelector := ctr.Params.Arguments["labelSelector"] + labelSelector := ctr.GetArguments()["labelSelector"] var selector string if labelSelector != nil { selector = labelSelector.(string) @@ -131,11 +131,11 @@ func (s *Server) podsListInNamespace(ctx context.Context, ctr mcp.CallToolReques } func (s *Server) podsGet(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - ns := ctr.Params.Arguments["namespace"] + ns := ctr.GetArguments()["namespace"] if ns == nil { ns = "" } - name := ctr.Params.Arguments["name"] + name := ctr.GetArguments()["name"] if name == nil { return NewTextResult("", errors.New("failed to get pod, missing argument name")), nil } @@ -147,11 +147,11 @@ func (s *Server) podsGet(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.Cal } func (s *Server) podsDelete(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - ns := ctr.Params.Arguments["namespace"] + ns := ctr.GetArguments()["namespace"] if ns == nil { ns = "" } - name := ctr.Params.Arguments["name"] + name := ctr.GetArguments()["name"] if name == nil { return NewTextResult("", errors.New("failed to delete pod, missing argument name")), nil } @@ -163,19 +163,19 @@ func (s *Server) podsDelete(ctx context.Context, ctr mcp.CallToolRequest) (*mcp. } func (s *Server) podsExec(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - ns := ctr.Params.Arguments["namespace"] + ns := ctr.GetArguments()["namespace"] if ns == nil { ns = "" } - name := ctr.Params.Arguments["name"] + name := ctr.GetArguments()["name"] if name == nil { return NewTextResult("", errors.New("failed to exec in pod, missing argument name")), nil } - container := ctr.Params.Arguments["container"] + container := ctr.GetArguments()["container"] if container == nil { container = "" } - commandArg := ctr.Params.Arguments["command"] + commandArg := ctr.GetArguments()["command"] command := make([]string, 0) if _, ok := commandArg.([]interface{}); ok { for _, cmd := range commandArg.([]interface{}) { @@ -196,15 +196,15 @@ func (s *Server) podsExec(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.Ca } func (s *Server) podsLog(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - ns := ctr.Params.Arguments["namespace"] + ns := ctr.GetArguments()["namespace"] if ns == nil { ns = "" } - name := ctr.Params.Arguments["name"] + name := ctr.GetArguments()["name"] if name == nil { return NewTextResult("", errors.New("failed to get pod log, missing argument name")), nil } - container := ctr.Params.Arguments["container"] + container := ctr.GetArguments()["container"] if container == nil { container = "" } @@ -218,19 +218,19 @@ func (s *Server) podsLog(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.Cal } func (s *Server) podsRun(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - ns := ctr.Params.Arguments["namespace"] + ns := ctr.GetArguments()["namespace"] if ns == nil { ns = "" } - name := ctr.Params.Arguments["name"] + name := ctr.GetArguments()["name"] if name == nil { name = "" } - image := ctr.Params.Arguments["image"] + image := ctr.GetArguments()["image"] if image == nil { return NewTextResult("", errors.New("failed to run pod, missing argument image")), nil } - port := ctr.Params.Arguments["port"] + port := ctr.GetArguments()["port"] if port == nil { port = float64(0) } diff --git a/pkg/mcp/resources.go b/pkg/mcp/resources.go index 17708a6..cf1a11d 100644 --- a/pkg/mcp/resources.go +++ b/pkg/mcp/resources.go @@ -97,15 +97,15 @@ func (s *Server) initResources() []server.ServerTool { } func (s *Server) resourcesList(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - namespace := ctr.Params.Arguments["namespace"] + namespace := ctr.GetArguments()["namespace"] if namespace == nil { namespace = "" } - labelSelector := ctr.Params.Arguments["labelSelector"] + labelSelector := ctr.GetArguments()["labelSelector"] if labelSelector == nil { labelSelector = "" } - gvk, err := parseGroupVersionKind(ctr.Params.Arguments) + gvk, err := parseGroupVersionKind(ctr.GetArguments()) if err != nil { return NewTextResult("", fmt.Errorf("failed to list resources, %s", err)), nil } @@ -117,15 +117,15 @@ func (s *Server) resourcesList(ctx context.Context, ctr mcp.CallToolRequest) (*m } func (s *Server) resourcesGet(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - namespace := ctr.Params.Arguments["namespace"] + namespace := ctr.GetArguments()["namespace"] if namespace == nil { namespace = "" } - gvk, err := parseGroupVersionKind(ctr.Params.Arguments) + gvk, err := parseGroupVersionKind(ctr.GetArguments()) if err != nil { return NewTextResult("", fmt.Errorf("failed to get resource, %s", err)), nil } - name := ctr.Params.Arguments["name"] + name := ctr.GetArguments()["name"] if name == nil { return NewTextResult("", errors.New("failed to get resource, missing argument name")), nil } @@ -137,7 +137,7 @@ func (s *Server) resourcesGet(ctx context.Context, ctr mcp.CallToolRequest) (*mc } func (s *Server) resourcesCreateOrUpdate(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - resource := ctr.Params.Arguments["resource"] + resource := ctr.GetArguments()["resource"] if resource == nil || resource == "" { return NewTextResult("", errors.New("failed to create or update resources, missing argument resource")), nil } @@ -149,15 +149,15 @@ func (s *Server) resourcesCreateOrUpdate(ctx context.Context, ctr mcp.CallToolRe } func (s *Server) resourcesDelete(ctx context.Context, ctr mcp.CallToolRequest) (*mcp.CallToolResult, error) { - namespace := ctr.Params.Arguments["namespace"] + namespace := ctr.GetArguments()["namespace"] if namespace == nil { namespace = "" } - gvk, err := parseGroupVersionKind(ctr.Params.Arguments) + gvk, err := parseGroupVersionKind(ctr.GetArguments()) if err != nil { return NewTextResult("", fmt.Errorf("failed to delete resource, %s", err)), nil } - name := ctr.Params.Arguments["name"] + name := ctr.GetArguments()["name"] if name == nil { return NewTextResult("", errors.New("failed to delete resource, missing argument name")), nil }