kubeview-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierrc.json +11 -0
- package/CHANGELOG.md +55 -0
- package/LICENSE +21 -0
- package/README.md +251 -0
- package/RELEASE.md +154 -0
- package/TODO.md +0 -0
- package/bin/kubeview-mcp.js +274 -0
- package/bin/setup.js +368 -0
- package/dist/src/cli/cli.d.ts +3 -0
- package/dist/src/cli/cli.d.ts.map +1 -0
- package/dist/src/cli/cli.js +23 -0
- package/dist/src/cli/cli.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +45 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kubernetes/BaseResourceOperations.d.ts +155 -0
- package/dist/src/kubernetes/BaseResourceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/BaseResourceOperations.js +136 -0
- package/dist/src/kubernetes/BaseResourceOperations.js.map +1 -0
- package/dist/src/kubernetes/CircuitBreaker.d.ts +182 -0
- package/dist/src/kubernetes/CircuitBreaker.d.ts.map +1 -0
- package/dist/src/kubernetes/CircuitBreaker.js +369 -0
- package/dist/src/kubernetes/CircuitBreaker.js.map +1 -0
- package/dist/src/kubernetes/ConnectionManager.d.ts +60 -0
- package/dist/src/kubernetes/ConnectionManager.d.ts.map +1 -0
- package/dist/src/kubernetes/ConnectionManager.js +77 -0
- package/dist/src/kubernetes/ConnectionManager.js.map +1 -0
- package/dist/src/kubernetes/ConnectionPool.d.ts +183 -0
- package/dist/src/kubernetes/ConnectionPool.d.ts.map +1 -0
- package/dist/src/kubernetes/ConnectionPool.js +437 -0
- package/dist/src/kubernetes/ConnectionPool.js.map +1 -0
- package/dist/src/kubernetes/ErrorHandler.d.ts +172 -0
- package/dist/src/kubernetes/ErrorHandler.d.ts.map +1 -0
- package/dist/src/kubernetes/ErrorHandler.js +328 -0
- package/dist/src/kubernetes/ErrorHandler.js.map +1 -0
- package/dist/src/kubernetes/ErrorHandling.d.ts +148 -0
- package/dist/src/kubernetes/ErrorHandling.d.ts.map +1 -0
- package/dist/src/kubernetes/ErrorHandling.js +304 -0
- package/dist/src/kubernetes/ErrorHandling.js.map +1 -0
- package/dist/src/kubernetes/KubernetesClient.d.ts +162 -0
- package/dist/src/kubernetes/KubernetesClient.d.ts.map +1 -0
- package/dist/src/kubernetes/KubernetesClient.js +382 -0
- package/dist/src/kubernetes/KubernetesClient.js.map +1 -0
- package/dist/src/kubernetes/ResourceOperations.d.ts +69 -0
- package/dist/src/kubernetes/ResourceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/ResourceOperations.js +99 -0
- package/dist/src/kubernetes/ResourceOperations.js.map +1 -0
- package/dist/src/kubernetes/RetryStrategy.d.ts +137 -0
- package/dist/src/kubernetes/RetryStrategy.d.ts.map +1 -0
- package/dist/src/kubernetes/RetryStrategy.js +277 -0
- package/dist/src/kubernetes/RetryStrategy.js.map +1 -0
- package/dist/src/kubernetes/RetryableOperation.d.ts +118 -0
- package/dist/src/kubernetes/RetryableOperation.d.ts.map +1 -0
- package/dist/src/kubernetes/RetryableOperation.js +233 -0
- package/dist/src/kubernetes/RetryableOperation.js.map +1 -0
- package/dist/src/kubernetes/index.d.ts +18 -0
- package/dist/src/kubernetes/index.d.ts.map +1 -0
- package/dist/src/kubernetes/index.js +28 -0
- package/dist/src/kubernetes/index.js.map +1 -0
- package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts +60 -0
- package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/ConfigMapOperations.js +306 -0
- package/dist/src/kubernetes/resources/ConfigMapOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/CustomResourceOperations.d.ts +55 -0
- package/dist/src/kubernetes/resources/CustomResourceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/CustomResourceOperations.js +363 -0
- package/dist/src/kubernetes/resources/CustomResourceOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/DeploymentOperations.d.ts +66 -0
- package/dist/src/kubernetes/resources/DeploymentOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/DeploymentOperations.js +234 -0
- package/dist/src/kubernetes/resources/DeploymentOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/IngressOperations.d.ts +60 -0
- package/dist/src/kubernetes/resources/IngressOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/IngressOperations.js +224 -0
- package/dist/src/kubernetes/resources/IngressOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/MetricOperations.d.ts +218 -0
- package/dist/src/kubernetes/resources/MetricOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/MetricOperations.js +893 -0
- package/dist/src/kubernetes/resources/MetricOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/NamespaceOperations.d.ts +38 -0
- package/dist/src/kubernetes/resources/NamespaceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/NamespaceOperations.js +101 -0
- package/dist/src/kubernetes/resources/NamespaceOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.d.ts +109 -0
- package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.js +383 -0
- package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/PersistentVolumeOperations.d.ts +97 -0
- package/dist/src/kubernetes/resources/PersistentVolumeOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/PersistentVolumeOperations.js +321 -0
- package/dist/src/kubernetes/resources/PersistentVolumeOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/PodOperations.d.ts +99 -0
- package/dist/src/kubernetes/resources/PodOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/PodOperations.js +333 -0
- package/dist/src/kubernetes/resources/PodOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/SecretOperations.d.ts +71 -0
- package/dist/src/kubernetes/resources/SecretOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/SecretOperations.js +254 -0
- package/dist/src/kubernetes/resources/SecretOperations.js.map +1 -0
- package/dist/src/kubernetes/resources/ServiceOperations.d.ts +64 -0
- package/dist/src/kubernetes/resources/ServiceOperations.d.ts.map +1 -0
- package/dist/src/kubernetes/resources/ServiceOperations.js +232 -0
- package/dist/src/kubernetes/resources/ServiceOperations.js.map +1 -0
- package/dist/src/kubernetes/utils/ResourceUtils.d.ts +238 -0
- package/dist/src/kubernetes/utils/ResourceUtils.d.ts.map +1 -0
- package/dist/src/kubernetes/utils/ResourceUtils.js +439 -0
- package/dist/src/kubernetes/utils/ResourceUtils.js.map +1 -0
- package/dist/src/plugins/ArgoCDToolsPlugin.d.ts +45 -0
- package/dist/src/plugins/ArgoCDToolsPlugin.d.ts.map +1 -0
- package/dist/src/plugins/ArgoCDToolsPlugin.js +155 -0
- package/dist/src/plugins/ArgoCDToolsPlugin.js.map +1 -0
- package/dist/src/plugins/ArgoToolsPlugin.d.ts +45 -0
- package/dist/src/plugins/ArgoToolsPlugin.d.ts.map +1 -0
- package/dist/src/plugins/ArgoToolsPlugin.js +149 -0
- package/dist/src/plugins/ArgoToolsPlugin.js.map +1 -0
- package/dist/src/plugins/HelmToolsPlugin.d.ts +41 -0
- package/dist/src/plugins/HelmToolsPlugin.d.ts.map +1 -0
- package/dist/src/plugins/HelmToolsPlugin.js +146 -0
- package/dist/src/plugins/HelmToolsPlugin.js.map +1 -0
- package/dist/src/plugins/KubernetesToolsPlugin.d.ts +44 -0
- package/dist/src/plugins/KubernetesToolsPlugin.d.ts.map +1 -0
- package/dist/src/plugins/KubernetesToolsPlugin.js +159 -0
- package/dist/src/plugins/KubernetesToolsPlugin.js.map +1 -0
- package/dist/src/plugins/SamplePlugin.d.ts +12 -0
- package/dist/src/plugins/SamplePlugin.d.ts.map +1 -0
- package/dist/src/plugins/SamplePlugin.js +51 -0
- package/dist/src/plugins/SamplePlugin.js.map +1 -0
- package/dist/src/plugins/index.d.ts +5 -0
- package/dist/src/plugins/index.d.ts.map +1 -0
- package/dist/src/plugins/index.js +5 -0
- package/dist/src/plugins/index.js.map +1 -0
- package/dist/src/server/MCPServer.d.ts +93 -0
- package/dist/src/server/MCPServer.d.ts.map +1 -0
- package/dist/src/server/MCPServer.js +398 -0
- package/dist/src/server/MCPServer.js.map +1 -0
- package/dist/src/tools/argo/ArgoCronListTool.d.ts +10 -0
- package/dist/src/tools/argo/ArgoCronListTool.d.ts.map +1 -0
- package/dist/src/tools/argo/ArgoCronListTool.js +70 -0
- package/dist/src/tools/argo/ArgoCronListTool.js.map +1 -0
- package/dist/src/tools/argo/ArgoGetTool.d.ts +10 -0
- package/dist/src/tools/argo/ArgoGetTool.d.ts.map +1 -0
- package/dist/src/tools/argo/ArgoGetTool.js +80 -0
- package/dist/src/tools/argo/ArgoGetTool.js.map +1 -0
- package/dist/src/tools/argo/ArgoListTool.d.ts +10 -0
- package/dist/src/tools/argo/ArgoListTool.d.ts.map +1 -0
- package/dist/src/tools/argo/ArgoListTool.js +133 -0
- package/dist/src/tools/argo/ArgoListTool.js.map +1 -0
- package/dist/src/tools/argo/ArgoLogsTool.d.ts +10 -0
- package/dist/src/tools/argo/ArgoLogsTool.d.ts.map +1 -0
- package/dist/src/tools/argo/ArgoLogsTool.js +117 -0
- package/dist/src/tools/argo/ArgoLogsTool.js.map +1 -0
- package/dist/src/tools/argo/BaseTool.d.ts +60 -0
- package/dist/src/tools/argo/BaseTool.d.ts.map +1 -0
- package/dist/src/tools/argo/BaseTool.js +51 -0
- package/dist/src/tools/argo/BaseTool.js.map +1 -0
- package/dist/src/tools/argo/index.d.ts +7 -0
- package/dist/src/tools/argo/index.d.ts.map +1 -0
- package/dist/src/tools/argo/index.js +6 -0
- package/dist/src/tools/argo/index.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppGetTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppGetTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppGetTool.js +97 -0
- package/dist/src/tools/argocd/ArgoCDAppGetTool.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppHistoryTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppHistoryTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppHistoryTool.js +80 -0
- package/dist/src/tools/argocd/ArgoCDAppHistoryTool.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppListTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppListTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppListTool.js +128 -0
- package/dist/src/tools/argocd/ArgoCDAppListTool.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppLogsTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppLogsTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppLogsTool.js +143 -0
- package/dist/src/tools/argocd/ArgoCDAppLogsTool.js.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppResourcesTool.d.ts +10 -0
- package/dist/src/tools/argocd/ArgoCDAppResourcesTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/ArgoCDAppResourcesTool.js +123 -0
- package/dist/src/tools/argocd/ArgoCDAppResourcesTool.js.map +1 -0
- package/dist/src/tools/argocd/BaseTool.d.ts +71 -0
- package/dist/src/tools/argocd/BaseTool.d.ts.map +1 -0
- package/dist/src/tools/argocd/BaseTool.js +62 -0
- package/dist/src/tools/argocd/BaseTool.js.map +1 -0
- package/dist/src/tools/argocd/index.d.ts +8 -0
- package/dist/src/tools/argocd/index.d.ts.map +1 -0
- package/dist/src/tools/argocd/index.js +7 -0
- package/dist/src/tools/argocd/index.js.map +1 -0
- package/dist/src/tools/helm/BaseTool.d.ts +51 -0
- package/dist/src/tools/helm/BaseTool.d.ts.map +1 -0
- package/dist/src/tools/helm/BaseTool.js +42 -0
- package/dist/src/tools/helm/BaseTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetHooksTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmGetHooksTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetHooksTool.js +38 -0
- package/dist/src/tools/helm/HelmGetHooksTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetManifestTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmGetManifestTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetManifestTool.js +38 -0
- package/dist/src/tools/helm/HelmGetManifestTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetNotesTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmGetNotesTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetNotesTool.js +38 -0
- package/dist/src/tools/helm/HelmGetNotesTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetResourcesTool.d.ts +13 -0
- package/dist/src/tools/helm/HelmGetResourcesTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetResourcesTool.js +124 -0
- package/dist/src/tools/helm/HelmGetResourcesTool.js.map +1 -0
- package/dist/src/tools/helm/HelmGetValuesTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmGetValuesTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmGetValuesTool.js +54 -0
- package/dist/src/tools/helm/HelmGetValuesTool.js.map +1 -0
- package/dist/src/tools/helm/HelmHistoryTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmHistoryTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmHistoryTool.js +49 -0
- package/dist/src/tools/helm/HelmHistoryTool.js.map +1 -0
- package/dist/src/tools/helm/HelmListTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmListTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmListTool.js +107 -0
- package/dist/src/tools/helm/HelmListTool.js.map +1 -0
- package/dist/src/tools/helm/HelmListWithResourcesTool.d.ts +14 -0
- package/dist/src/tools/helm/HelmListWithResourcesTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmListWithResourcesTool.js +175 -0
- package/dist/src/tools/helm/HelmListWithResourcesTool.js.map +1 -0
- package/dist/src/tools/helm/HelmStatusTool.d.ts +10 -0
- package/dist/src/tools/helm/HelmStatusTool.d.ts.map +1 -0
- package/dist/src/tools/helm/HelmStatusTool.js +54 -0
- package/dist/src/tools/helm/HelmStatusTool.js.map +1 -0
- package/dist/src/tools/helm/index.d.ts +12 -0
- package/dist/src/tools/helm/index.d.ts.map +1 -0
- package/dist/src/tools/helm/index.js +11 -0
- package/dist/src/tools/helm/index.js.map +1 -0
- package/dist/src/tools/kubernetes/BaseTool.d.ts +48 -0
- package/dist/src/tools/kubernetes/BaseTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/BaseTool.js +55 -0
- package/dist/src/tools/kubernetes/BaseTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetConfigMapTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetConfigMapTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetConfigMapTool.js +28 -0
- package/dist/src/tools/kubernetes/GetConfigMapTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetContainerLogsTool.d.ts +15 -0
- package/dist/src/tools/kubernetes/GetContainerLogsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetContainerLogsTool.js +119 -0
- package/dist/src/tools/kubernetes/GetContainerLogsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetDeploymentsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetDeploymentsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetDeploymentsTool.js +30 -0
- package/dist/src/tools/kubernetes/GetDeploymentsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetEventsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetEventsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetEventsTool.js +123 -0
- package/dist/src/tools/kubernetes/GetEventsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetIngressTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetIngressTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetIngressTool.js +35 -0
- package/dist/src/tools/kubernetes/GetIngressTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetMetricsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetMetricsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetMetricsTool.js +40 -0
- package/dist/src/tools/kubernetes/GetMetricsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetNamespacesTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetNamespacesTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetNamespacesTool.js +33 -0
- package/dist/src/tools/kubernetes/GetNamespacesTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.js +92 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumesTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumesTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumesTool.js +88 -0
- package/dist/src/tools/kubernetes/GetPersistentVolumesTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetPodMetricsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetPodMetricsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetPodMetricsTool.js +100 -0
- package/dist/src/tools/kubernetes/GetPodMetricsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetPodsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetPodsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetPodsTool.js +35 -0
- package/dist/src/tools/kubernetes/GetPodsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetResourceTool.d.ts +12 -0
- package/dist/src/tools/kubernetes/GetResourceTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetResourceTool.js +79 -0
- package/dist/src/tools/kubernetes/GetResourceTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetSecretsTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetSecretsTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetSecretsTool.js +49 -0
- package/dist/src/tools/kubernetes/GetSecretsTool.js.map +1 -0
- package/dist/src/tools/kubernetes/GetServicesTool.d.ts +11 -0
- package/dist/src/tools/kubernetes/GetServicesTool.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/GetServicesTool.js +35 -0
- package/dist/src/tools/kubernetes/GetServicesTool.js.map +1 -0
- package/dist/src/tools/kubernetes/index.d.ts +17 -0
- package/dist/src/tools/kubernetes/index.d.ts.map +1 -0
- package/dist/src/tools/kubernetes/index.js +16 -0
- package/dist/src/tools/kubernetes/index.js.map +1 -0
- package/dist/src/utils/CliUtils.d.ts +24 -0
- package/dist/src/utils/CliUtils.d.ts.map +1 -0
- package/dist/src/utils/CliUtils.js +159 -0
- package/dist/src/utils/CliUtils.js.map +1 -0
- package/dist/tests/__mocks__/@kubernetes/client-node.d.ts +34 -0
- package/dist/tests/__mocks__/@kubernetes/client-node.d.ts.map +1 -0
- package/dist/tests/__mocks__/@kubernetes/client-node.js +20 -0
- package/dist/tests/__mocks__/@kubernetes/client-node.js.map +1 -0
- package/dist/tests/argo/ArgoGetTool.test.d.ts +2 -0
- package/dist/tests/argo/ArgoGetTool.test.d.ts.map +1 -0
- package/dist/tests/argo/ArgoGetTool.test.js +141 -0
- package/dist/tests/argo/ArgoGetTool.test.js.map +1 -0
- package/dist/tests/helm/BaseTool.test.d.ts +2 -0
- package/dist/tests/helm/BaseTool.test.d.ts.map +1 -0
- package/dist/tests/helm/BaseTool.test.js +241 -0
- package/dist/tests/helm/BaseTool.test.js.map +1 -0
- package/dist/tests/index.test.d.ts +2 -0
- package/dist/tests/index.test.d.ts.map +1 -0
- package/dist/tests/index.test.js +7 -0
- package/dist/tests/index.test.js.map +1 -0
- package/dist/tests/kubernetes/ConfigMapOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/ConfigMapOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ConfigMapOperations.test.js +460 -0
- package/dist/tests/kubernetes/ConfigMapOperations.test.js.map +1 -0
- package/dist/tests/kubernetes/ConnectionManager.test.d.ts +2 -0
- package/dist/tests/kubernetes/ConnectionManager.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ConnectionManager.test.js +97 -0
- package/dist/tests/kubernetes/ConnectionManager.test.js.map +1 -0
- package/dist/tests/kubernetes/ConnectionPool.test.d.ts +2 -0
- package/dist/tests/kubernetes/ConnectionPool.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ConnectionPool.test.js +328 -0
- package/dist/tests/kubernetes/ConnectionPool.test.js.map +1 -0
- package/dist/tests/kubernetes/DeploymentOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/DeploymentOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/DeploymentOperations.test.js +196 -0
- package/dist/tests/kubernetes/DeploymentOperations.test.js.map +1 -0
- package/dist/tests/kubernetes/ErrorHandling.test.d.ts +2 -0
- package/dist/tests/kubernetes/ErrorHandling.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ErrorHandling.test.js +329 -0
- package/dist/tests/kubernetes/ErrorHandling.test.js.map +1 -0
- package/dist/tests/kubernetes/GetPodMetricsTool.test.d.ts +2 -0
- package/dist/tests/kubernetes/GetPodMetricsTool.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/GetPodMetricsTool.test.js +150 -0
- package/dist/tests/kubernetes/GetPodMetricsTool.test.js.map +1 -0
- package/dist/tests/kubernetes/KubernetesClient.test.d.ts +2 -0
- package/dist/tests/kubernetes/KubernetesClient.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/KubernetesClient.test.js +371 -0
- package/dist/tests/kubernetes/KubernetesClient.test.js.map +1 -0
- package/dist/tests/kubernetes/MetricOperations.parsing.test.d.ts +2 -0
- package/dist/tests/kubernetes/MetricOperations.parsing.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/MetricOperations.parsing.test.js +49 -0
- package/dist/tests/kubernetes/MetricOperations.parsing.test.js.map +1 -0
- package/dist/tests/kubernetes/NamespaceOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/NamespaceOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/NamespaceOperations.test.js +115 -0
- package/dist/tests/kubernetes/NamespaceOperations.test.js.map +1 -0
- package/dist/tests/kubernetes/PodOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/PodOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/PodOperations.test.js +209 -0
- package/dist/tests/kubernetes/PodOperations.test.js.map +1 -0
- package/dist/tests/kubernetes/RetryStrategy.test.d.ts +2 -0
- package/dist/tests/kubernetes/RetryStrategy.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/RetryStrategy.test.js +419 -0
- package/dist/tests/kubernetes/RetryStrategy.test.js.map +1 -0
- package/dist/tests/kubernetes/ServiceOperations.test.d.ts +2 -0
- package/dist/tests/kubernetes/ServiceOperations.test.d.ts.map +1 -0
- package/dist/tests/kubernetes/ServiceOperations.test.js +159 -0
- package/dist/tests/kubernetes/ServiceOperations.test.js.map +1 -0
- package/dist/tests/plugins/KubernetesToolsPlugin.test.d.ts +2 -0
- package/dist/tests/plugins/KubernetesToolsPlugin.test.d.ts.map +1 -0
- package/dist/tests/plugins/KubernetesToolsPlugin.test.js +153 -0
- package/dist/tests/plugins/KubernetesToolsPlugin.test.js.map +1 -0
- package/dist/tests/server/MCPServer.integration.test.d.ts +2 -0
- package/dist/tests/server/MCPServer.integration.test.d.ts.map +1 -0
- package/dist/tests/server/MCPServer.integration.test.js +244 -0
- package/dist/tests/server/MCPServer.integration.test.js.map +1 -0
- package/dist/tests/server/MCPServer.test.d.ts +2 -0
- package/dist/tests/server/MCPServer.test.d.ts.map +1 -0
- package/dist/tests/server/MCPServer.test.js +257 -0
- package/dist/tests/server/MCPServer.test.js.map +1 -0
- package/package.json +85 -0
- package/src/cli/cli.ts +25 -0
- package/src/cli/run-command.js +391 -0
- package/src/index.ts +46 -0
- package/src/kubernetes/BaseResourceOperations.ts +286 -0
- package/src/kubernetes/CircuitBreaker.ts +485 -0
- package/src/kubernetes/ConnectionManager.ts +114 -0
- package/src/kubernetes/ConnectionPool.ts +551 -0
- package/src/kubernetes/ErrorHandler.ts +436 -0
- package/src/kubernetes/ErrorHandling.ts +401 -0
- package/src/kubernetes/KubernetesClient.ts +500 -0
- package/src/kubernetes/README.md +349 -0
- package/src/kubernetes/ResourceOperations.ts +116 -0
- package/src/kubernetes/RetryStrategy.ts +365 -0
- package/src/kubernetes/RetryableOperation.ts +313 -0
- package/src/kubernetes/docs/ResourceOperations.md +606 -0
- package/src/kubernetes/index.ts +116 -0
- package/src/kubernetes/resources/ConfigMapOperations.ts +367 -0
- package/src/kubernetes/resources/CustomResourceOperations.ts +392 -0
- package/src/kubernetes/resources/DeploymentOperations.ts +294 -0
- package/src/kubernetes/resources/IngressOperations.ts +277 -0
- package/src/kubernetes/resources/MetricOperations.ts +1159 -0
- package/src/kubernetes/resources/NamespaceOperations.ts +129 -0
- package/src/kubernetes/resources/PersistentVolumeClaimOperations.ts +516 -0
- package/src/kubernetes/resources/PersistentVolumeOperations.ts +438 -0
- package/src/kubernetes/resources/PodOperations.ts +417 -0
- package/src/kubernetes/resources/SecretOperations.ts +304 -0
- package/src/kubernetes/resources/ServiceOperations.ts +283 -0
- package/src/kubernetes/utils/ResourceUtils.ts +553 -0
- package/src/plugins/ArgoCDToolsPlugin.ts +189 -0
- package/src/plugins/ArgoToolsPlugin.ts +180 -0
- package/src/plugins/HelmToolsPlugin.ts +180 -0
- package/src/plugins/KubernetesToolsPlugin.ts +198 -0
- package/src/plugins/SamplePlugin.ts +60 -0
- package/src/plugins/index.ts +4 -0
- package/src/server/MCPServer.ts +500 -0
- package/src/tools/argo/ArgoCronListTool.ts +78 -0
- package/src/tools/argo/ArgoGetTool.ts +91 -0
- package/src/tools/argo/ArgoListTool.ts +143 -0
- package/src/tools/argo/ArgoLogsTool.ts +131 -0
- package/src/tools/argo/BaseTool.ts +69 -0
- package/src/tools/argo/index.ts +6 -0
- package/src/tools/argocd/ArgoCDAppGetTool.ts +109 -0
- package/src/tools/argocd/ArgoCDAppHistoryTool.ts +91 -0
- package/src/tools/argocd/ArgoCDAppListTool.ts +144 -0
- package/src/tools/argocd/ArgoCDAppLogsTool.ts +162 -0
- package/src/tools/argocd/ArgoCDAppResourcesTool.ts +139 -0
- package/src/tools/argocd/BaseTool.ts +83 -0
- package/src/tools/argocd/index.ts +7 -0
- package/src/tools/helm/BaseTool.ts +60 -0
- package/src/tools/helm/HelmGetHooksTool.ts +44 -0
- package/src/tools/helm/HelmGetManifestTool.ts +44 -0
- package/src/tools/helm/HelmGetNotesTool.ts +44 -0
- package/src/tools/helm/HelmGetResourcesTool.ts +140 -0
- package/src/tools/helm/HelmGetValuesTool.ts +62 -0
- package/src/tools/helm/HelmHistoryTool.ts +56 -0
- package/src/tools/helm/HelmListTool.ts +107 -0
- package/src/tools/helm/HelmListWithResourcesTool.ts +194 -0
- package/src/tools/helm/HelmStatusTool.ts +62 -0
- package/src/tools/helm/index.ts +11 -0
- package/src/tools/kubernetes/BaseTool.ts +76 -0
- package/src/tools/kubernetes/GetConfigMapTool.ts +33 -0
- package/src/tools/kubernetes/GetContainerLogsTool.ts +140 -0
- package/src/tools/kubernetes/GetDeploymentsTool.ts +33 -0
- package/src/tools/kubernetes/GetEventsTool.ts +133 -0
- package/src/tools/kubernetes/GetIngressTool.ts +39 -0
- package/src/tools/kubernetes/GetMetricsTool.ts +53 -0
- package/src/tools/kubernetes/GetNamespacesTool.ts +36 -0
- package/src/tools/kubernetes/GetPersistentVolumeClaimsTool.ts +113 -0
- package/src/tools/kubernetes/GetPersistentVolumesTool.ts +107 -0
- package/src/tools/kubernetes/GetPodMetricsTool.ts +113 -0
- package/src/tools/kubernetes/GetPodsTool.ts +39 -0
- package/src/tools/kubernetes/GetResourceTool.ts +90 -0
- package/src/tools/kubernetes/GetSecretsTool.ts +55 -0
- package/src/tools/kubernetes/GetServicesTool.ts +39 -0
- package/src/tools/kubernetes/index.ts +16 -0
- package/src/utils/CliUtils.ts +207 -0
- package/tsconfig.json +36 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { MCPPlugin, MCPServer } from '../server/MCPServer.js';
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import {
|
|
4
|
+
type ArgoCDBaseTool,
|
|
5
|
+
validateArgoCDCLI,
|
|
6
|
+
ArgoCDAppListTool,
|
|
7
|
+
ArgoCDAppGetTool,
|
|
8
|
+
ArgoCDAppHistoryTool,
|
|
9
|
+
ArgoCDAppLogsTool,
|
|
10
|
+
ArgoCDAppResourcesTool,
|
|
11
|
+
} from '../tools/argocd/index.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Plugin that registers ArgoCD tools with the MCP server
|
|
15
|
+
*/
|
|
16
|
+
export class ArgoCDToolsPlugin implements MCPPlugin {
|
|
17
|
+
name = 'argocd-tools';
|
|
18
|
+
version = '0.1.0';
|
|
19
|
+
|
|
20
|
+
private commands: ArgoCDBaseTool[] = [];
|
|
21
|
+
private logger?: MCPServer['logger'];
|
|
22
|
+
private commandMap: Map<string, ArgoCDBaseTool> = new Map();
|
|
23
|
+
|
|
24
|
+
constructor() {}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Check if plugin is disabled via environment variable
|
|
28
|
+
*/
|
|
29
|
+
private static isDisabled(): boolean {
|
|
30
|
+
return (
|
|
31
|
+
process.env.DISABLE_ARGOCD_PLUGIN === 'true' || process.env.DISABLE_ARGOCD_PLUGIN === '1'
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Create the list of all available tool instances
|
|
37
|
+
* This is the single source of truth for all tools in the plugin
|
|
38
|
+
*/
|
|
39
|
+
private static createToolInstances(): ArgoCDBaseTool[] {
|
|
40
|
+
return [
|
|
41
|
+
new ArgoCDAppListTool(),
|
|
42
|
+
new ArgoCDAppGetTool(),
|
|
43
|
+
new ArgoCDAppHistoryTool(),
|
|
44
|
+
new ArgoCDAppLogsTool(),
|
|
45
|
+
new ArgoCDAppResourcesTool(),
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Get all command names from the tool instances
|
|
51
|
+
*/
|
|
52
|
+
static getCommandNames(): string[] {
|
|
53
|
+
return this.createToolInstances().map((tool) => tool.tool.name);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Create a Winston logger for CLI usage only if LOG_LEVEL is set
|
|
58
|
+
*/
|
|
59
|
+
private static createLogger(): winston.Logger | undefined {
|
|
60
|
+
if (!process.env.LOG_LEVEL) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
return winston.createLogger({
|
|
64
|
+
level: process.env.LOG_LEVEL,
|
|
65
|
+
format: winston.format.combine(winston.format.timestamp(), winston.format.json()),
|
|
66
|
+
transports: [
|
|
67
|
+
new winston.transports.Console({
|
|
68
|
+
stderrLevels: ['error', 'warn', 'info', 'verbose', 'debug', 'silly'],
|
|
69
|
+
format: winston.format.combine(winston.format.colorize(), winston.format.simple()),
|
|
70
|
+
}),
|
|
71
|
+
],
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Static method to directly execute a command from CLI without starting the MCP server
|
|
77
|
+
* @param commandName The name of the command to execute
|
|
78
|
+
* @param params Parameters for the command
|
|
79
|
+
* @returns The result of the command execution
|
|
80
|
+
*/
|
|
81
|
+
static async executeCommand(commandName: string, params: Record<string, any>): Promise<any> {
|
|
82
|
+
const plugin = new ArgoCDToolsPlugin();
|
|
83
|
+
|
|
84
|
+
// Initialize commands using the centralized method
|
|
85
|
+
plugin.commands = this.createToolInstances();
|
|
86
|
+
|
|
87
|
+
// Create map of commands
|
|
88
|
+
for (const command of plugin.commands) {
|
|
89
|
+
plugin.commandMap.set(command.tool.name, command);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const command = plugin.commandMap.get(commandName);
|
|
93
|
+
if (!command) {
|
|
94
|
+
throw new Error(`Unknown tool: ${commandName}`);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const logger = this.createLogger();
|
|
98
|
+
if (logger) {
|
|
99
|
+
logger.info(`Executing ArgoCD command: ${commandName}`, { params });
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
try {
|
|
103
|
+
// Execute the command
|
|
104
|
+
const result = await command.execute(params);
|
|
105
|
+
if (logger) {
|
|
106
|
+
logger.debug(`Command ${commandName} completed successfully`);
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
} catch (error) {
|
|
110
|
+
if (logger) {
|
|
111
|
+
logger.error(`Command ${commandName} failed`, { error });
|
|
112
|
+
}
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async initialize(server: MCPServer): Promise<void> {
|
|
118
|
+
this.logger = server.getLogger();
|
|
119
|
+
|
|
120
|
+
try {
|
|
121
|
+
// Check if plugin is disabled
|
|
122
|
+
if (ArgoCDToolsPlugin.isDisabled()) {
|
|
123
|
+
this.logger.info('ArgoCDToolsPlugin is disabled via environment variable');
|
|
124
|
+
this.commands = [];
|
|
125
|
+
this.commandMap.clear();
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Validate ArgoCD CLI - only register tools if validation succeeds
|
|
130
|
+
try {
|
|
131
|
+
await validateArgoCDCLI();
|
|
132
|
+
this.logger.info('ArgoCD CLI validation successful');
|
|
133
|
+
|
|
134
|
+
// Initialize commands using the centralized method
|
|
135
|
+
this.commands = ArgoCDToolsPlugin.createToolInstances();
|
|
136
|
+
|
|
137
|
+
// Create a map of command names to command instances
|
|
138
|
+
for (const command of this.commands) {
|
|
139
|
+
this.commandMap.set(command.tool.name, command);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Register each command with the server
|
|
143
|
+
for (const command of this.commands) {
|
|
144
|
+
server.registerTool(command.tool, async (params: any) => {
|
|
145
|
+
return command.execute(params);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
this.logger.info(
|
|
150
|
+
`ArgoCDToolsPlugin initialized with ${this.commands.length} tools. ArgoCD CLI ready.`,
|
|
151
|
+
);
|
|
152
|
+
} catch (error) {
|
|
153
|
+
this.logger.warn('ArgoCD CLI not found. ArgoCD tools will not be registered.', {
|
|
154
|
+
error: error instanceof Error ? error.message : String(error),
|
|
155
|
+
});
|
|
156
|
+
// Don't register any tools if argocd CLI is not available
|
|
157
|
+
this.commands = [];
|
|
158
|
+
this.commandMap.clear();
|
|
159
|
+
|
|
160
|
+
this.logger.info('ArgoCDToolsPlugin initialized with 0 tools (ArgoCD CLI not available).');
|
|
161
|
+
}
|
|
162
|
+
} catch (error) {
|
|
163
|
+
this.logger.error('Failed to initialize ArgoCDToolsPlugin', error);
|
|
164
|
+
throw error; // Rethrow to allow MCPServer to catch it if needed
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Get a function that executes a specific tool by name
|
|
170
|
+
* @param toolName The name of the tool to execute
|
|
171
|
+
* @returns A function that takes parameters and executes the tool, or undefined if the tool doesn't exist
|
|
172
|
+
*/
|
|
173
|
+
getToolFunction(toolName: string): ((params: any) => Promise<any>) | undefined {
|
|
174
|
+
const command = this.commandMap.get(toolName);
|
|
175
|
+
|
|
176
|
+
if (!command) {
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return async (params: any) => {
|
|
181
|
+
return command.execute(params);
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
async shutdown(): Promise<void> {
|
|
186
|
+
// No specific cleanup needed for ArgoCD CLI operations
|
|
187
|
+
this.logger?.info('ArgoCDToolsPlugin shutting down...');
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { MCPPlugin, MCPServer } from '../server/MCPServer.js';
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import {
|
|
4
|
+
type ArgoBaseTool,
|
|
5
|
+
validateArgoCLI,
|
|
6
|
+
ArgoListTool,
|
|
7
|
+
ArgoLogsTool,
|
|
8
|
+
ArgoCronListTool,
|
|
9
|
+
ArgoGetTool,
|
|
10
|
+
} from '../tools/argo/index.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Plugin that registers Argo tools with the MCP server
|
|
14
|
+
*/
|
|
15
|
+
export class ArgoToolsPlugin implements MCPPlugin {
|
|
16
|
+
name = 'argo-tools';
|
|
17
|
+
version = '0.1.0';
|
|
18
|
+
|
|
19
|
+
private commands: ArgoBaseTool[] = [];
|
|
20
|
+
private logger?: MCPServer['logger'];
|
|
21
|
+
private commandMap: Map<string, ArgoBaseTool> = new Map();
|
|
22
|
+
|
|
23
|
+
constructor() {}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Check if plugin is disabled via environment variable
|
|
27
|
+
*/
|
|
28
|
+
private static isDisabled(): boolean {
|
|
29
|
+
return process.env.DISABLE_ARGO_PLUGIN === 'true' || process.env.DISABLE_ARGO_PLUGIN === '1';
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Create the list of all available tool instances
|
|
34
|
+
* This is the single source of truth for all tools in the plugin
|
|
35
|
+
*/
|
|
36
|
+
private static createToolInstances(): ArgoBaseTool[] {
|
|
37
|
+
return [new ArgoListTool(), new ArgoLogsTool(), new ArgoCronListTool(), new ArgoGetTool()];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Get all command names from the tool instances
|
|
42
|
+
*/
|
|
43
|
+
static getCommandNames(): string[] {
|
|
44
|
+
return this.createToolInstances().map((tool) => tool.tool.name);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Create a Winston logger for CLI usage only if LOG_LEVEL is set
|
|
49
|
+
*/
|
|
50
|
+
private static createLogger(): winston.Logger | undefined {
|
|
51
|
+
if (!process.env.LOG_LEVEL) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
return winston.createLogger({
|
|
55
|
+
level: process.env.LOG_LEVEL,
|
|
56
|
+
format: winston.format.combine(winston.format.timestamp(), winston.format.json()),
|
|
57
|
+
transports: [
|
|
58
|
+
new winston.transports.Console({
|
|
59
|
+
stderrLevels: ['error', 'warn', 'info', 'verbose', 'debug', 'silly'],
|
|
60
|
+
format: winston.format.combine(winston.format.colorize(), winston.format.simple()),
|
|
61
|
+
}),
|
|
62
|
+
],
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Static method to directly execute a command from CLI without starting the MCP server
|
|
68
|
+
* @param commandName The name of the command to execute
|
|
69
|
+
* @param params Parameters for the command
|
|
70
|
+
* @returns The result of the command execution
|
|
71
|
+
*/
|
|
72
|
+
static async executeCommand(commandName: string, params: Record<string, any>): Promise<any> {
|
|
73
|
+
const plugin = new ArgoToolsPlugin();
|
|
74
|
+
|
|
75
|
+
// Initialize commands using the centralized method
|
|
76
|
+
plugin.commands = this.createToolInstances();
|
|
77
|
+
|
|
78
|
+
// Create map of commands
|
|
79
|
+
for (const command of plugin.commands) {
|
|
80
|
+
plugin.commandMap.set(command.tool.name, command);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const command = plugin.commandMap.get(commandName);
|
|
84
|
+
if (!command) {
|
|
85
|
+
throw new Error(`Unknown tool: ${commandName}`);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const logger = this.createLogger();
|
|
89
|
+
if (logger) {
|
|
90
|
+
logger.info(`Executing Argo command: ${commandName}`, { params });
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
try {
|
|
94
|
+
// Execute the command
|
|
95
|
+
const result = await command.execute(params);
|
|
96
|
+
if (logger) {
|
|
97
|
+
logger.debug(`Command ${commandName} completed successfully`);
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
} catch (error) {
|
|
101
|
+
if (logger) {
|
|
102
|
+
logger.error(`Command ${commandName} failed`, { error });
|
|
103
|
+
}
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async initialize(server: MCPServer): Promise<void> {
|
|
109
|
+
this.logger = server.getLogger();
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
// Check if plugin is disabled
|
|
113
|
+
if (ArgoToolsPlugin.isDisabled()) {
|
|
114
|
+
this.logger.info('ArgoToolsPlugin is disabled via environment variable');
|
|
115
|
+
this.commands = [];
|
|
116
|
+
this.commandMap.clear();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Validate Argo CLI - only register tools if validation succeeds
|
|
121
|
+
try {
|
|
122
|
+
await validateArgoCLI();
|
|
123
|
+
this.logger.info('Argo CLI validation successful');
|
|
124
|
+
|
|
125
|
+
// Initialize commands using the centralized method
|
|
126
|
+
this.commands = ArgoToolsPlugin.createToolInstances();
|
|
127
|
+
|
|
128
|
+
// Create a map of command names to command instances
|
|
129
|
+
for (const command of this.commands) {
|
|
130
|
+
this.commandMap.set(command.tool.name, command);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Register each command with the server
|
|
134
|
+
for (const command of this.commands) {
|
|
135
|
+
server.registerTool(command.tool, async (params: any) => {
|
|
136
|
+
return command.execute(params);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
this.logger.info(
|
|
141
|
+
`ArgoToolsPlugin initialized with ${this.commands.length} tools. Argo CLI ready.`,
|
|
142
|
+
);
|
|
143
|
+
} catch (error) {
|
|
144
|
+
this.logger.warn('Argo CLI not found. Argo tools will not be registered.', {
|
|
145
|
+
error: error instanceof Error ? error.message : String(error),
|
|
146
|
+
});
|
|
147
|
+
// Don't register any tools if argo CLI is not available
|
|
148
|
+
this.commands = [];
|
|
149
|
+
this.commandMap.clear();
|
|
150
|
+
|
|
151
|
+
this.logger.info('ArgoToolsPlugin initialized with 0 tools (Argo CLI not available).');
|
|
152
|
+
}
|
|
153
|
+
} catch (error) {
|
|
154
|
+
this.logger.error('Failed to initialize ArgoToolsPlugin', error);
|
|
155
|
+
throw error; // Rethrow to allow MCPServer to catch it if needed
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Get a function that executes a specific tool by name
|
|
161
|
+
* @param toolName The name of the tool to execute
|
|
162
|
+
* @returns A function that takes parameters and executes the tool, or undefined if the tool doesn't exist
|
|
163
|
+
*/
|
|
164
|
+
getToolFunction(toolName: string): ((params: any) => Promise<any>) | undefined {
|
|
165
|
+
const command = this.commandMap.get(toolName);
|
|
166
|
+
|
|
167
|
+
if (!command) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return async (params: any) => {
|
|
172
|
+
return command.execute(params);
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async shutdown(): Promise<void> {
|
|
177
|
+
// No specific cleanup needed for Argo CLI operations
|
|
178
|
+
this.logger?.info('ArgoToolsPlugin shutting down...');
|
|
179
|
+
}
|
|
180
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { MCPPlugin, MCPServer } from '../server/MCPServer.js';
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import {
|
|
4
|
+
type HelmBaseTool,
|
|
5
|
+
validateHelmCLI,
|
|
6
|
+
HelmListTool,
|
|
7
|
+
HelmGetValuesTool,
|
|
8
|
+
HelmGetManifestTool,
|
|
9
|
+
HelmGetNotesTool,
|
|
10
|
+
HelmGetHooksTool,
|
|
11
|
+
HelmStatusTool,
|
|
12
|
+
HelmHistoryTool,
|
|
13
|
+
HelmGetResourcesTool,
|
|
14
|
+
HelmListWithResourcesTool,
|
|
15
|
+
} from '../tools/helm/index.js';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Plugin that registers Helm tools with the MCP server
|
|
19
|
+
*/
|
|
20
|
+
export class HelmToolsPlugin implements MCPPlugin {
|
|
21
|
+
name = 'helm-tools';
|
|
22
|
+
version = '0.1.0';
|
|
23
|
+
|
|
24
|
+
private commands: HelmBaseTool[] = [];
|
|
25
|
+
private logger?: MCPServer['logger'];
|
|
26
|
+
private commandMap: Map<string, HelmBaseTool> = new Map();
|
|
27
|
+
|
|
28
|
+
constructor() {}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Create the list of all available tool instances
|
|
32
|
+
* This is the single source of truth for all tools in the plugin
|
|
33
|
+
*/
|
|
34
|
+
private static createToolInstances(): HelmBaseTool[] {
|
|
35
|
+
return [
|
|
36
|
+
new HelmListTool(),
|
|
37
|
+
new HelmGetValuesTool(),
|
|
38
|
+
new HelmGetManifestTool(),
|
|
39
|
+
new HelmGetNotesTool(),
|
|
40
|
+
new HelmGetHooksTool(),
|
|
41
|
+
new HelmStatusTool(),
|
|
42
|
+
new HelmHistoryTool(),
|
|
43
|
+
new HelmGetResourcesTool(),
|
|
44
|
+
new HelmListWithResourcesTool(),
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Get all command names from the tool instances
|
|
50
|
+
*/
|
|
51
|
+
static getCommandNames(): string[] {
|
|
52
|
+
return this.createToolInstances().map((tool) => tool.tool.name);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Create a Winston logger for CLI usage only if LOG_LEVEL is set
|
|
57
|
+
*/
|
|
58
|
+
private static createLogger(): winston.Logger | undefined {
|
|
59
|
+
if (!process.env.LOG_LEVEL) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
return winston.createLogger({
|
|
63
|
+
level: process.env.LOG_LEVEL,
|
|
64
|
+
format: winston.format.combine(winston.format.timestamp(), winston.format.json()),
|
|
65
|
+
transports: [
|
|
66
|
+
new winston.transports.Console({
|
|
67
|
+
stderrLevels: ['error', 'warn', 'info', 'verbose', 'debug', 'silly'],
|
|
68
|
+
format: winston.format.combine(winston.format.colorize(), winston.format.simple()),
|
|
69
|
+
}),
|
|
70
|
+
],
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Static method to directly execute a command from CLI without starting the MCP server
|
|
76
|
+
* @param commandName The name of the command to execute
|
|
77
|
+
* @param params Parameters for the command
|
|
78
|
+
* @returns The result of the command execution
|
|
79
|
+
*/
|
|
80
|
+
static async executeCommand(commandName: string, params: Record<string, any>): Promise<any> {
|
|
81
|
+
const plugin = new HelmToolsPlugin();
|
|
82
|
+
|
|
83
|
+
// Initialize commands using the centralized method
|
|
84
|
+
plugin.commands = this.createToolInstances();
|
|
85
|
+
|
|
86
|
+
// Create map of commands
|
|
87
|
+
for (const command of plugin.commands) {
|
|
88
|
+
plugin.commandMap.set(command.tool.name, command);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const command = plugin.commandMap.get(commandName);
|
|
92
|
+
if (!command) {
|
|
93
|
+
throw new Error(`Unknown tool: ${commandName}`);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const logger = this.createLogger();
|
|
97
|
+
if (logger) {
|
|
98
|
+
logger.info(`Executing Helm command: ${commandName}`, { params });
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
try {
|
|
102
|
+
// Execute the command
|
|
103
|
+
const result = await command.execute(params);
|
|
104
|
+
if (logger) {
|
|
105
|
+
logger.debug(`Command ${commandName} completed successfully`);
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
} catch (error) {
|
|
109
|
+
if (logger) {
|
|
110
|
+
logger.error(`Command ${commandName} failed`, { error });
|
|
111
|
+
}
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async initialize(server: MCPServer): Promise<void> {
|
|
117
|
+
this.logger = server.getLogger();
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
// Validate Helm CLI - only register tools if validation succeeds
|
|
121
|
+
try {
|
|
122
|
+
await validateHelmCLI();
|
|
123
|
+
this.logger.info('Helm CLI validation successful');
|
|
124
|
+
|
|
125
|
+
// Initialize commands using the centralized method
|
|
126
|
+
this.commands = HelmToolsPlugin.createToolInstances();
|
|
127
|
+
|
|
128
|
+
// Create a map of command names to command instances
|
|
129
|
+
for (const command of this.commands) {
|
|
130
|
+
this.commandMap.set(command.tool.name, command);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Register each command with the server
|
|
134
|
+
for (const command of this.commands) {
|
|
135
|
+
server.registerTool(command.tool, async (params: any) => {
|
|
136
|
+
return command.execute(params);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
this.logger.info(
|
|
141
|
+
`HelmToolsPlugin initialized with ${this.commands.length} tools. Helm CLI ready.`,
|
|
142
|
+
);
|
|
143
|
+
} catch (error) {
|
|
144
|
+
this.logger.warn('Helm CLI not found. Helm tools will not be registered.', {
|
|
145
|
+
error: error instanceof Error ? error.message : String(error),
|
|
146
|
+
});
|
|
147
|
+
// Don't register any tools if helm CLI is not available
|
|
148
|
+
this.commands = [];
|
|
149
|
+
this.commandMap.clear();
|
|
150
|
+
|
|
151
|
+
this.logger.info('HelmToolsPlugin initialized with 0 tools (Helm CLI not available).');
|
|
152
|
+
}
|
|
153
|
+
} catch (error) {
|
|
154
|
+
this.logger.error('Failed to initialize HelmToolsPlugin', error);
|
|
155
|
+
throw error; // Rethrow to allow MCPServer to catch it if needed
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Get a function that executes a specific tool by name
|
|
161
|
+
* @param toolName The name of the tool to execute
|
|
162
|
+
* @returns A function that takes parameters and executes the tool, or undefined if the tool doesn't exist
|
|
163
|
+
*/
|
|
164
|
+
getToolFunction(toolName: string): ((params: any) => Promise<any>) | undefined {
|
|
165
|
+
const command = this.commandMap.get(toolName);
|
|
166
|
+
|
|
167
|
+
if (!command) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return async (params: any) => {
|
|
172
|
+
return command.execute(params);
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async shutdown(): Promise<void> {
|
|
177
|
+
// No specific cleanup needed for Helm CLI operations
|
|
178
|
+
this.logger?.info('HelmToolsPlugin shutting down...');
|
|
179
|
+
}
|
|
180
|
+
}
|