@@ -14,7 +14,11 @@ import (
1414 "github.com/Azure/aks-mcp/internal/components/monitor"
1515 "github.com/Azure/aks-mcp/internal/components/monitor/diagnostics"
1616 "github.com/Azure/aks-mcp/internal/components/network"
17+ "github.com/Azure/mcp-kubernetes/pkg/cilium"
18+ "github.com/Azure/mcp-kubernetes/pkg/helm"
19+ "github.com/Azure/mcp-kubernetes/pkg/kubectl"
1720 "github.com/Azure/aks-mcp/internal/config"
21+ "github.com/Azure/aks-mcp/internal/k8s"
1822 "github.com/Azure/aks-mcp/internal/tools"
1923 "github.com/Azure/aks-mcp/internal/version"
2024 "github.com/mark3labs/mcp-go/server"
@@ -62,6 +66,9 @@ func (s *Service) Initialize() error {
6266 // Register AKS Control Plane tools
6367 s .registerControlPlaneTools ()
6468
69+ // Register Kubernetes tools
70+ s .registerKubernetesTools ()
71+
6572 return nil
6673}
6774
@@ -315,3 +322,62 @@ func (s *Service) registerAdvisorTools() {
315322 advisorTool := advisor .RegisterAdvisorRecommendationTool ()
316323 s .mcpServer .AddTool (advisorTool , tools .CreateResourceHandler (advisor .GetAdvisorRecommendationHandler (s .cfg ), s .cfg ))
317324}
325+
326+ // registerKubernetesTools registers Kubernetes-related tools (kubectl, helm, cilium)
327+ func (s * Service ) registerKubernetesTools () {
328+ log .Println ("Registering Kubernetes tools..." )
329+
330+ // Register kubectl commands based on access level
331+ s .registerKubectlCommands ()
332+
333+ // Register helm if enabled
334+ if s .cfg .AdditionalTools ["helm" ] {
335+ log .Println ("Registering Kubernetes tool: helm" )
336+ helmTool := helm .RegisterHelm ()
337+ helmExecutor := k8s .WrapK8sExecutor (helm .NewExecutor ())
338+ s .mcpServer .AddTool (helmTool , tools .CreateToolHandler (helmExecutor , s .cfg ))
339+ }
340+
341+ // Register cilium if enabled
342+ if s .cfg .AdditionalTools ["cilium" ] {
343+ log .Println ("Registering Kubernetes tool: cilium" )
344+ ciliumTool := cilium .RegisterCilium ()
345+ ciliumExecutor := k8s .WrapK8sExecutor (cilium .NewExecutor ())
346+ s .mcpServer .AddTool (ciliumTool , tools .CreateToolHandler (ciliumExecutor , s .cfg ))
347+ }
348+ }
349+
350+ // registerKubectlCommands registers kubectl commands based on access level
351+ func (s * Service ) registerKubectlCommands () {
352+ // Register read-only kubectl commands (available at all access levels)
353+ for _ , cmd := range kubectl .GetReadOnlyKubectlCommands () {
354+ log .Printf ("Registering kubectl command: %s" , cmd .Name )
355+ kubectlTool := kubectl .RegisterKubectlCommand (cmd )
356+ k8sExecutor := kubectl .CreateCommandExecutorFunc (cmd .Name )
357+ wrappedExecutor := k8s .WrapK8sExecutorFunc (k8sExecutor )
358+ s .mcpServer .AddTool (kubectlTool , tools .CreateToolHandler (wrappedExecutor , s .cfg ))
359+ }
360+
361+ // Register read-write commands if access level is readwrite or admin
362+ if s .cfg .AccessLevel == "readwrite" || s .cfg .AccessLevel == "admin" {
363+ for _ , cmd := range kubectl .GetReadWriteKubectlCommands () {
364+ log .Printf ("Registering kubectl command: %s" , cmd .Name )
365+ kubectlTool := kubectl .RegisterKubectlCommand (cmd )
366+ k8sExecutor := kubectl .CreateCommandExecutorFunc (cmd .Name )
367+ wrappedExecutor := k8s .WrapK8sExecutorFunc (k8sExecutor )
368+ s .mcpServer .AddTool (kubectlTool , tools .CreateToolHandler (wrappedExecutor , s .cfg ))
369+ }
370+ }
371+
372+ // Register admin commands only if access level is admin
373+ if s .cfg .AccessLevel == "admin" {
374+ for _ , cmd := range kubectl .GetAdminKubectlCommands () {
375+ log .Printf ("Registering kubectl command: %s" , cmd .Name )
376+ kubectlTool := kubectl .RegisterKubectlCommand (cmd )
377+ k8sExecutor := kubectl .CreateCommandExecutorFunc (cmd .Name )
378+ wrappedExecutor := k8s .WrapK8sExecutorFunc (k8sExecutor )
379+ s .mcpServer .AddTool (kubectlTool , tools .CreateToolHandler (wrappedExecutor , s .cfg ))
380+ }
381+ }
382+ }
383+
0 commit comments