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,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common parameter schemas used across multiple commands
|
|
3
|
+
*/
|
|
4
|
+
export const CommonSchemas = {
|
|
5
|
+
namespace: {
|
|
6
|
+
type: 'string',
|
|
7
|
+
description: 'Kubernetes namespace (defaults to all namespaces if not specified)',
|
|
8
|
+
optional: true,
|
|
9
|
+
},
|
|
10
|
+
labelSelector: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
description: 'Label selector to filter resources (e.g., "app=nginx")',
|
|
13
|
+
optional: true,
|
|
14
|
+
},
|
|
15
|
+
fieldSelector: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
description: 'Field selector to filter resources (e.g., "status.phase=Running")',
|
|
18
|
+
optional: true,
|
|
19
|
+
},
|
|
20
|
+
name: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Name of the resource',
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Format resource metadata for consistent output
|
|
27
|
+
*/
|
|
28
|
+
export function formatResourceMetadata(resource) {
|
|
29
|
+
return {
|
|
30
|
+
name: resource.metadata?.name,
|
|
31
|
+
namespace: resource.metadata?.namespace,
|
|
32
|
+
uid: resource.metadata?.uid,
|
|
33
|
+
creationTimestamp: resource.metadata?.creationTimestamp,
|
|
34
|
+
labels: resource.metadata?.labels || {},
|
|
35
|
+
annotations: resource.metadata?.annotations || {},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Format resource status with common fields
|
|
40
|
+
*/
|
|
41
|
+
export function formatResourceStatus(resource) {
|
|
42
|
+
const status = {
|
|
43
|
+
phase: resource.status?.phase,
|
|
44
|
+
conditions: resource.status?.conditions || [],
|
|
45
|
+
};
|
|
46
|
+
// Add resource-specific status fields if they exist
|
|
47
|
+
if (resource.status?.readyReplicas !== undefined) {
|
|
48
|
+
status.readyReplicas = resource.status.readyReplicas;
|
|
49
|
+
}
|
|
50
|
+
if (resource.status?.replicas !== undefined) {
|
|
51
|
+
status.replicas = resource.status.replicas;
|
|
52
|
+
}
|
|
53
|
+
return status;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=BaseTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTool.js","sourceRoot":"","sources":["../../../../src/tools/kubernetes/BaseTool.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oEAAoE;QACjF,QAAQ,EAAE,IAAI;KACf;IACD,aAAa,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,IAAI;KACf;IACD,aAAa,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mEAAmE;QAChF,QAAQ,EAAE,IAAI;KACf;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sBAAsB;KACpC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAa;IAClD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI;QAC7B,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS;QACvC,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG;QAC3B,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;QACvD,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;QACvC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAa;IAChD,MAAM,MAAM,GAAQ;QAClB,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK;QAC7B,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE;KAC9C,CAAC;IAEF,oDAAoD;IACpD,IAAI,QAAQ,CAAC,MAAM,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;QACjD,MAAM,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { BaseTool } from './BaseTool.js';
|
|
3
|
+
import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
|
|
4
|
+
/**
|
|
5
|
+
* List ConfigMaps in a Kubernetes cluster with optional data sanitization
|
|
6
|
+
*/
|
|
7
|
+
export declare class GetConfigMapsTool implements BaseTool {
|
|
8
|
+
tool: Tool;
|
|
9
|
+
execute(params: any, client: KubernetesClient): Promise<any>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GetConfigMapTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetConfigMapTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetConfigMapTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE;;GAEG;AACH,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,IAAI,EAAE,IAAI,CAkBR;IAEI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;CAGnE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CommonSchemas } from './BaseTool.js';
|
|
2
|
+
import { ConfigMapOperations } from '../../kubernetes/resources/ConfigMapOperations.js';
|
|
3
|
+
/**
|
|
4
|
+
* List ConfigMaps in a Kubernetes cluster with optional data sanitization
|
|
5
|
+
*/
|
|
6
|
+
export class GetConfigMapsTool {
|
|
7
|
+
tool = {
|
|
8
|
+
name: 'get_configmaps',
|
|
9
|
+
description: 'List all ConfigMap resources in the current Kubernetes cluster (similar to `kubectl get configmap`)',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
namespace: CommonSchemas.namespace,
|
|
14
|
+
labelSelector: CommonSchemas.labelSelector,
|
|
15
|
+
fieldSelector: CommonSchemas.fieldSelector,
|
|
16
|
+
skipSanitize: {
|
|
17
|
+
type: 'boolean',
|
|
18
|
+
description: 'Skip sanitizing sensitive data in ConfigMap values (default: false, meaning sanitization is enabled by default)',
|
|
19
|
+
optional: true,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
async execute(params, client) {
|
|
25
|
+
return await new ConfigMapOperations(client).list(params);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=GetConfigMapTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetConfigMapTool.js","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetConfigMapTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAExF;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAC5B,IAAI,GAAS;QACX,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,qGAAqG;QACvG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,aAAa,EAAE,aAAa,CAAC,aAAa;gBAC1C,aAAa,EAAE,aAAa,CAAC,aAAa;gBAC1C,YAAY,EAAE;oBACZ,IAAI,EAAE,SAAS;oBACf,WAAW,EACT,iHAAiH;oBACnH,QAAQ,EAAE,IAAI;iBACf;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAW,EAAE,MAAwB;QACjD,OAAO,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { BaseTool } from './BaseTool.js';
|
|
3
|
+
import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
|
|
4
|
+
/**
|
|
5
|
+
* Fetch logs from a container in a Kubernetes pod
|
|
6
|
+
*/
|
|
7
|
+
export declare class GetContainerLogsTool implements BaseTool {
|
|
8
|
+
tool: Tool;
|
|
9
|
+
execute(params: any, client: KubernetesClient): Promise<any>;
|
|
10
|
+
/**
|
|
11
|
+
* Parse duration string (e.g., "5m", "1h", "30s") to seconds
|
|
12
|
+
*/
|
|
13
|
+
private parseDuration;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=GetContainerLogsTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetContainerLogsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetContainerLogsTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE;;GAEG;AACH,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,IAAI,EAAE,IAAI,CA2CR;IAEI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IA6DlE;;OAEG;IACH,OAAO,CAAC,aAAa;CAsBtB"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { CommonSchemas } from './BaseTool.js';
|
|
2
|
+
/**
|
|
3
|
+
* Fetch logs from a container in a Kubernetes pod
|
|
4
|
+
*/
|
|
5
|
+
export class GetContainerLogsTool {
|
|
6
|
+
tool = {
|
|
7
|
+
name: 'pod_logs',
|
|
8
|
+
description: 'Return stdout / stderr logs for a specified container in a pod in the current cluster (similar to `kubectl logs`)',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
podName: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'Name of the pod',
|
|
15
|
+
},
|
|
16
|
+
namespace: {
|
|
17
|
+
...CommonSchemas.namespace,
|
|
18
|
+
description: 'Kubernetes namespace (defaults to "default")',
|
|
19
|
+
},
|
|
20
|
+
container: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Container name (optional, defaults to first container)',
|
|
23
|
+
optional: true,
|
|
24
|
+
},
|
|
25
|
+
tailLines: {
|
|
26
|
+
type: 'number',
|
|
27
|
+
description: 'Number of lines from the end of the logs to show (optional)',
|
|
28
|
+
optional: true,
|
|
29
|
+
},
|
|
30
|
+
since: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Show logs since this duration (e.g., "5m", "1h") (optional)',
|
|
33
|
+
optional: true,
|
|
34
|
+
},
|
|
35
|
+
previous: {
|
|
36
|
+
type: 'boolean',
|
|
37
|
+
description: 'Return logs from previous instance of the container (optional)',
|
|
38
|
+
optional: true,
|
|
39
|
+
},
|
|
40
|
+
timestamps: {
|
|
41
|
+
type: 'boolean',
|
|
42
|
+
description: 'Include timestamps in log output (optional)',
|
|
43
|
+
optional: true,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
required: ['podName'],
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
async execute(params, client) {
|
|
50
|
+
try {
|
|
51
|
+
const { podName, namespace = 'default', container, tailLines, since, previous = false, timestamps = false, } = params;
|
|
52
|
+
// Convert duration string to seconds if provided
|
|
53
|
+
let sinceSeconds;
|
|
54
|
+
if (since) {
|
|
55
|
+
sinceSeconds = this.parseDuration(since);
|
|
56
|
+
}
|
|
57
|
+
// Fetch the logs
|
|
58
|
+
const logs = await client.core.readNamespacedPodLog({
|
|
59
|
+
name: podName,
|
|
60
|
+
namespace,
|
|
61
|
+
container,
|
|
62
|
+
tailLines,
|
|
63
|
+
sinceSeconds,
|
|
64
|
+
previous,
|
|
65
|
+
timestamps,
|
|
66
|
+
});
|
|
67
|
+
// logs is returned as a string, split into lines for better formatting
|
|
68
|
+
const logLines = logs.split('\n').filter((line) => line.trim());
|
|
69
|
+
return {
|
|
70
|
+
podName,
|
|
71
|
+
namespace,
|
|
72
|
+
container: container || 'default',
|
|
73
|
+
lineCount: logLines.length,
|
|
74
|
+
logs: logLines,
|
|
75
|
+
options: {
|
|
76
|
+
tailLines,
|
|
77
|
+
since,
|
|
78
|
+
previous,
|
|
79
|
+
timestamps,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
|
|
85
|
+
// Provide more helpful error messages for common cases
|
|
86
|
+
if (errorMessage.includes('container') && errorMessage.includes('not found')) {
|
|
87
|
+
throw new Error(`Container '${params.container}' not found in pod '${params.podName}'`);
|
|
88
|
+
}
|
|
89
|
+
else if (errorMessage.includes('not found')) {
|
|
90
|
+
throw new Error(`Pod '${params.podName}' not found in namespace '${params.namespace || 'default'}'`);
|
|
91
|
+
}
|
|
92
|
+
throw new Error(`Failed to fetch container logs: ${errorMessage}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Parse duration string (e.g., "5m", "1h", "30s") to seconds
|
|
97
|
+
*/
|
|
98
|
+
parseDuration(duration) {
|
|
99
|
+
const match = duration.match(/^(\d+)([smhd])$/);
|
|
100
|
+
if (!match) {
|
|
101
|
+
throw new Error(`Invalid duration format: ${duration}. Use format like "5m", "1h", "30s"`);
|
|
102
|
+
}
|
|
103
|
+
const value = parseInt(match[1], 10);
|
|
104
|
+
const unit = match[2];
|
|
105
|
+
switch (unit) {
|
|
106
|
+
case 's':
|
|
107
|
+
return value;
|
|
108
|
+
case 'm':
|
|
109
|
+
return value * 60;
|
|
110
|
+
case 'h':
|
|
111
|
+
return value * 3600;
|
|
112
|
+
case 'd':
|
|
113
|
+
return value * 86400;
|
|
114
|
+
default:
|
|
115
|
+
throw new Error(`Unknown duration unit: ${unit}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=GetContainerLogsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetContainerLogsTool.js","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetContainerLogsTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxD;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B,IAAI,GAAS;QACX,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,mHAAmH;QACrH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iBAAiB;iBAC/B;gBACD,SAAS,EAAE;oBACT,GAAG,aAAa,CAAC,SAAS;oBAC1B,WAAW,EAAE,8CAA8C;iBAC5D;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wDAAwD;oBACrE,QAAQ,EAAE,IAAI;iBACf;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6DAA6D;oBAC1E,QAAQ,EAAE,IAAI;iBACf;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6DAA6D;oBAC1E,QAAQ,EAAE,IAAI;iBACf;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,gEAAgE;oBAC7E,QAAQ,EAAE,IAAI;iBACf;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,6CAA6C;oBAC1D,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAW,EAAE,MAAwB;QACjD,IAAI,CAAC;YACH,MAAM,EACJ,OAAO,EACP,SAAS,GAAG,SAAS,EACrB,SAAS,EACT,SAAS,EACT,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,KAAK,GACnB,GAAG,MAAM,CAAC;YAEX,iDAAiD;YACjD,IAAI,YAAgC,CAAC;YACrC,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;YAED,iBAAiB;YACjB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;gBAClD,IAAI,EAAE,OAAO;gBACb,SAAS;gBACT,SAAS;gBACT,SAAS;gBACT,YAAY;gBACZ,QAAQ;gBACR,UAAU;aACX,CAAC,CAAC;YAEH,uEAAuE;YACvE,MAAM,QAAQ,GAAI,IAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEvF,OAAO;gBACL,OAAO;gBACP,SAAS;gBACT,SAAS,EAAE,SAAS,IAAI,SAAS;gBACjC,SAAS,EAAE,QAAQ,CAAC,MAAM;gBAC1B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,SAAS;oBACT,KAAK;oBACL,QAAQ;oBACR,UAAU;iBACX;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;YAEvF,uDAAuD;YACvD,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,SAAS,uBAAuB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;YAC1F,CAAC;iBAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACb,QAAQ,MAAM,CAAC,OAAO,6BAA6B,MAAM,CAAC,SAAS,IAAI,SAAS,GAAG,CACpF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,QAAgB;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,qCAAqC,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,GAAG;gBACN,OAAO,KAAK,CAAC;YACf,KAAK,GAAG;gBACN,OAAO,KAAK,GAAG,EAAE,CAAC;YACpB,KAAK,GAAG;gBACN,OAAO,KAAK,GAAG,IAAI,CAAC;YACtB,KAAK,GAAG;gBACN,OAAO,KAAK,GAAG,KAAK,CAAC;YACvB;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { BaseTool } from './BaseTool.js';
|
|
3
|
+
import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
|
|
4
|
+
/**
|
|
5
|
+
* List deployments in a Kubernetes cluster
|
|
6
|
+
*/
|
|
7
|
+
export declare class GetDeploymentsTool implements BaseTool {
|
|
8
|
+
tool: Tool;
|
|
9
|
+
execute(params: any, client: KubernetesClient): Promise<any>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GetDeploymentsTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetDeploymentsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetDeploymentsTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE;;GAEG;AACH,qBAAa,kBAAmB,YAAW,QAAQ;IACjD,IAAI,EAAE,IAAI,CAYR;IAEI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;CASnE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CommonSchemas } from './BaseTool.js';
|
|
2
|
+
import { DeploymentOperations } from '../../kubernetes/resources/DeploymentOperations.js';
|
|
3
|
+
/**
|
|
4
|
+
* List deployments in a Kubernetes cluster
|
|
5
|
+
*/
|
|
6
|
+
export class GetDeploymentsTool {
|
|
7
|
+
tool = {
|
|
8
|
+
name: 'get_deployments',
|
|
9
|
+
description: 'List all Deployment resources in the current Kubernetes cluster (similar to `kubectl get deployments`)',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
namespace: CommonSchemas.namespace,
|
|
14
|
+
labelSelector: CommonSchemas.labelSelector,
|
|
15
|
+
fieldSelector: CommonSchemas.fieldSelector,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
async execute(params, client) {
|
|
20
|
+
const deploymentOperations = new DeploymentOperations(client);
|
|
21
|
+
try {
|
|
22
|
+
const deployments = await deploymentOperations.list(params);
|
|
23
|
+
return deployments;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
throw new Error(`Failed to get deployments: ${error.message}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=GetDeploymentsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetDeploymentsTool.js","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetDeploymentsTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE1F;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAC7B,IAAI,GAAS;QACX,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,wGAAwG;QAC1G,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,aAAa,EAAE,aAAa,CAAC,aAAa;gBAC1C,aAAa,EAAE,aAAa,CAAC,aAAa;aAC3C;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAW,EAAE,MAAwB;QACjD,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { BaseTool } from './BaseTool.js';
|
|
3
|
+
import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
|
|
4
|
+
/**
|
|
5
|
+
* Show events in a Kubernetes cluster
|
|
6
|
+
*/
|
|
7
|
+
export declare class GetEventsTool implements BaseTool {
|
|
8
|
+
tool: Tool;
|
|
9
|
+
execute(params: any, client: KubernetesClient): Promise<any>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GetEventsTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetEventsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetEventsTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC5C,IAAI,EAAE,IAAI,CA8BR;IAEI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;CA4FnE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { CommonSchemas } from './BaseTool.js';
|
|
2
|
+
/**
|
|
3
|
+
* Show events in a Kubernetes cluster
|
|
4
|
+
*/
|
|
5
|
+
export class GetEventsTool {
|
|
6
|
+
tool = {
|
|
7
|
+
name: 'get_events',
|
|
8
|
+
description: 'Show events in the Kubernetes cluster (similar to `kubectl get events`)',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
namespace: CommonSchemas.namespace,
|
|
13
|
+
resourceType: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: 'Filter events by resource type (e.g., pod, service, deployment)',
|
|
16
|
+
optional: true,
|
|
17
|
+
},
|
|
18
|
+
resourceName: {
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'Filter events by specific resource name',
|
|
21
|
+
optional: true,
|
|
22
|
+
},
|
|
23
|
+
type: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'Filter by event type (Normal or Warning)',
|
|
26
|
+
enum: ['Normal', 'Warning'],
|
|
27
|
+
optional: true,
|
|
28
|
+
},
|
|
29
|
+
limit: {
|
|
30
|
+
type: 'number',
|
|
31
|
+
description: 'Maximum number of events to return',
|
|
32
|
+
optional: true,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
async execute(params, client) {
|
|
38
|
+
try {
|
|
39
|
+
const { namespace, resourceType, resourceName, type: eventType, limit = 100 } = params || {};
|
|
40
|
+
// Build field selector for filtering
|
|
41
|
+
const fieldSelectors = [];
|
|
42
|
+
if (resourceName) {
|
|
43
|
+
fieldSelectors.push(`involvedObject.name=${resourceName}`);
|
|
44
|
+
}
|
|
45
|
+
if (resourceType) {
|
|
46
|
+
// Capitalize the resource type for Kubernetes API
|
|
47
|
+
const capitalizedType = resourceType.charAt(0).toUpperCase() + resourceType.slice(1);
|
|
48
|
+
fieldSelectors.push(`involvedObject.kind=${capitalizedType}`);
|
|
49
|
+
}
|
|
50
|
+
if (eventType) {
|
|
51
|
+
fieldSelectors.push(`type=${eventType}`);
|
|
52
|
+
}
|
|
53
|
+
const fieldSelector = fieldSelectors.length > 0 ? fieldSelectors.join(',') : undefined;
|
|
54
|
+
let result;
|
|
55
|
+
if (namespace) {
|
|
56
|
+
// List events in specific namespace
|
|
57
|
+
result = await client.core.listNamespacedEvent({
|
|
58
|
+
namespace,
|
|
59
|
+
fieldSelector,
|
|
60
|
+
limit,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// List events in all namespaces
|
|
65
|
+
result = await client.core.listEventForAllNamespaces({
|
|
66
|
+
fieldSelector,
|
|
67
|
+
limit,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// Sort events by timestamp (most recent first)
|
|
71
|
+
const events = result.items
|
|
72
|
+
.sort((a, b) => {
|
|
73
|
+
const timeA = new Date(a.lastTimestamp || a.firstTimestamp || 0).getTime();
|
|
74
|
+
const timeB = new Date(b.lastTimestamp || b.firstTimestamp || 0).getTime();
|
|
75
|
+
return timeB - timeA;
|
|
76
|
+
})
|
|
77
|
+
.map((event) => ({
|
|
78
|
+
namespace: event.metadata?.namespace,
|
|
79
|
+
timestamp: event.lastTimestamp || event.firstTimestamp,
|
|
80
|
+
type: event.type,
|
|
81
|
+
reason: event.reason,
|
|
82
|
+
message: event.message,
|
|
83
|
+
count: event.count,
|
|
84
|
+
source: {
|
|
85
|
+
component: event.source?.component,
|
|
86
|
+
host: event.source?.host,
|
|
87
|
+
},
|
|
88
|
+
involvedObject: {
|
|
89
|
+
kind: event.involvedObject?.kind,
|
|
90
|
+
name: event.involvedObject?.name,
|
|
91
|
+
namespace: event.involvedObject?.namespace,
|
|
92
|
+
uid: event.involvedObject?.uid,
|
|
93
|
+
apiVersion: event.involvedObject?.apiVersion,
|
|
94
|
+
resourceVersion: event.involvedObject?.resourceVersion,
|
|
95
|
+
fieldPath: event.involvedObject?.fieldPath,
|
|
96
|
+
},
|
|
97
|
+
firstSeen: event.firstTimestamp,
|
|
98
|
+
lastSeen: event.lastTimestamp,
|
|
99
|
+
}));
|
|
100
|
+
// Group events by type for summary
|
|
101
|
+
const summary = {
|
|
102
|
+
total: events.length,
|
|
103
|
+
normal: events.filter((e) => e.type === 'Normal').length,
|
|
104
|
+
warning: events.filter((e) => e.type === 'Warning').length,
|
|
105
|
+
};
|
|
106
|
+
return {
|
|
107
|
+
summary,
|
|
108
|
+
filters: {
|
|
109
|
+
namespace: namespace || 'all',
|
|
110
|
+
resourceType,
|
|
111
|
+
resourceName,
|
|
112
|
+
eventType,
|
|
113
|
+
},
|
|
114
|
+
events,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
|
|
119
|
+
throw new Error(`Failed to fetch events: ${errorMessage}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=GetEventsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetEventsTool.js","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetEventsTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { BaseTool } from './BaseTool.js';
|
|
3
|
+
import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
|
|
4
|
+
/**
|
|
5
|
+
* List ingresses in a Kubernetes cluster
|
|
6
|
+
*/
|
|
7
|
+
export declare class GetIngressTool implements BaseTool {
|
|
8
|
+
tool: Tool;
|
|
9
|
+
execute(params: any, client: KubernetesClient): Promise<any>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GetIngressTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetIngressTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetIngressTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,IAAI,EAAE,IAAI,CAYR;IAEI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;CAenE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CommonSchemas } from './BaseTool.js';
|
|
2
|
+
import { IngressOperations } from '../../kubernetes/resources/IngressOperations.js';
|
|
3
|
+
/**
|
|
4
|
+
* List ingresses in a Kubernetes cluster
|
|
5
|
+
*/
|
|
6
|
+
export class GetIngressTool {
|
|
7
|
+
tool = {
|
|
8
|
+
name: 'get_ingresses',
|
|
9
|
+
description: 'List Ingress resources in the current Kubernetes cluster (similar to `kubectl get ingress`)',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
namespace: CommonSchemas.namespace,
|
|
14
|
+
labelSelector: CommonSchemas.labelSelector,
|
|
15
|
+
fieldSelector: CommonSchemas.fieldSelector,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
async execute(params, client) {
|
|
20
|
+
try {
|
|
21
|
+
const { namespace, labelSelector, fieldSelector } = params || {};
|
|
22
|
+
const ingressOperations = new IngressOperations(client);
|
|
23
|
+
return await ingressOperations.listFormatted({
|
|
24
|
+
namespace,
|
|
25
|
+
labelSelector,
|
|
26
|
+
fieldSelector,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
|
|
31
|
+
throw new Error(`Failed to list ingresses: ${errorMessage}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=GetIngressTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetIngressTool.js","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetIngressTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAEpF;;GAEG;AACH,MAAM,OAAO,cAAc;IACzB,IAAI,GAAS;QACX,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,6FAA6F;QAC/F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,aAAa,EAAE,aAAa,CAAC,aAAa;gBAC1C,aAAa,EAAE,aAAa,CAAC,aAAa;aAC3C;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAW,EAAE,MAAwB;QACjD,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YACjE,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAExD,OAAO,MAAM,iBAAiB,CAAC,aAAa,CAAC;gBAC3C,SAAS;gBACT,aAAa;gBACb,aAAa;aACd,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { BaseTool } from './BaseTool.js';
|
|
3
|
+
import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
|
|
4
|
+
/**
|
|
5
|
+
* Get various metrics for Kubernetes resources, optionally enriched with Prometheus data.
|
|
6
|
+
*/
|
|
7
|
+
export declare class GetMetricsTool implements BaseTool {
|
|
8
|
+
tool: Tool;
|
|
9
|
+
execute(params: any, client: KubernetesClient): Promise<any>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GetMetricsTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetMetricsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetMetricsTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,IAAI,EAAE,IAAI,CA2BR;IAEI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;CAcnE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { CommonSchemas } from './BaseTool.js';
|
|
2
|
+
import { MetricOperations } from '../../kubernetes/resources/MetricOperations.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get various metrics for Kubernetes resources, optionally enriched with Prometheus data.
|
|
5
|
+
*/
|
|
6
|
+
export class GetMetricsTool {
|
|
7
|
+
tool = {
|
|
8
|
+
name: 'get_metrics',
|
|
9
|
+
description: 'Fetch live CPU / memory metrics for all nodes and pods in the current cluster (similar to `kubectl top`), with optional enrichment from Prometheus data.',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
prometheusQueries: {
|
|
14
|
+
type: 'array',
|
|
15
|
+
items: { type: 'string' },
|
|
16
|
+
description: 'An array of PromQL queries to execute against discovered Prometheus targets.',
|
|
17
|
+
default: [],
|
|
18
|
+
},
|
|
19
|
+
fetchPodSpecs: {
|
|
20
|
+
type: 'boolean',
|
|
21
|
+
description: 'If true, fetches all pod specifications to enrich normalized pod metrics (e.g., with nodeName). Defaults to true.',
|
|
22
|
+
default: true,
|
|
23
|
+
},
|
|
24
|
+
namespace: {
|
|
25
|
+
...CommonSchemas.namespace,
|
|
26
|
+
description: 'Optional namespace to restrict Prometheus discovery, pod metrics, and pod spec fetching. If not provided, operates cluster-wide where applicable.',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
async execute(params, client) {
|
|
32
|
+
const metricOperations = new MetricOperations(client);
|
|
33
|
+
// Use explicit defaults from the tool schema
|
|
34
|
+
const namespace = params.namespace;
|
|
35
|
+
const prometheusQueries = params.prometheusQueries ?? [];
|
|
36
|
+
const fetchPodSpecs = params.fetchPodSpecs ?? true;
|
|
37
|
+
return await metricOperations.getMetricsWithOptions(prometheusQueries, fetchPodSpecs, namespace);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=GetMetricsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetMetricsTool.js","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetMetricsTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,aAAa,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAElF;;GAEG;AACH,MAAM,OAAO,cAAc;IACzB,IAAI,GAAS;QACX,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,0JAA0J;QAC5J,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,iBAAiB,EAAE;oBACjB,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EACT,8EAA8E;oBAChF,OAAO,EAAE,EAAE;iBACZ;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,SAAS;oBACf,WAAW,EACT,mHAAmH;oBACrH,OAAO,EAAE,IAAI;iBACd;gBACD,SAAS,EAAE;oBACT,GAAG,aAAa,CAAC,SAAS;oBAC1B,WAAW,EACT,mJAAmJ;iBACtJ;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAW,EAAE,MAAwB;QACjD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEtD,6CAA6C;QAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;QAEnD,OAAO,MAAM,gBAAgB,CAAC,qBAAqB,CACjD,iBAAiB,EACjB,aAAa,EACb,SAAS,CACV,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { BaseTool } from './BaseTool.js';
|
|
3
|
+
import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
|
|
4
|
+
/**
|
|
5
|
+
* List namespaces in a Kubernetes cluster
|
|
6
|
+
*/
|
|
7
|
+
export declare class GetNamespacesTool implements BaseTool {
|
|
8
|
+
tool: Tool;
|
|
9
|
+
execute(_params: any, client: KubernetesClient): Promise<any>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GetNamespacesTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetNamespacesTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetNamespacesTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAgD,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE;;GAEG;AACH,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,IAAI,EAAE,IAAI,CAQR;IAEI,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;CAiBpE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { formatResourceMetadata, formatResourceStatus } from './BaseTool.js';
|
|
2
|
+
/**
|
|
3
|
+
* List namespaces in a Kubernetes cluster
|
|
4
|
+
*/
|
|
5
|
+
export class GetNamespacesTool {
|
|
6
|
+
tool = {
|
|
7
|
+
name: 'get_namespaces',
|
|
8
|
+
description: 'List all Namespace resources in the current Kubernetes cluster (similar to `kubectl get namespaces`)',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {},
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
async execute(_params, client) {
|
|
15
|
+
try {
|
|
16
|
+
const result = await client.resources.namespace.list();
|
|
17
|
+
const namespaces = result.items.map((ns) => ({
|
|
18
|
+
metadata: formatResourceMetadata(ns),
|
|
19
|
+
status: formatResourceStatus(ns),
|
|
20
|
+
}));
|
|
21
|
+
return {
|
|
22
|
+
total: namespaces.length,
|
|
23
|
+
namespaces,
|
|
24
|
+
cluster: client.getCurrentCluster ? client.getCurrentCluster() : undefined,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
|
|
29
|
+
throw new Error(`Failed to list namespaces: ${errorMessage}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=GetNamespacesTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetNamespacesTool.js","sourceRoot":"","sources":["../../../../src/tools/kubernetes/GetNamespacesTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGvF;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAC5B,IAAI,GAAS;QACX,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,sGAAsG;QACxG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAY,EAAE,MAAwB;QAClD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;gBAChD,QAAQ,EAAE,sBAAsB,CAAC,EAAE,CAAC;gBACpC,MAAM,EAAE,oBAAoB,CAAC,EAAE,CAAC;aACjC,CAAC,CAAC,CAAC;YACJ,OAAO;gBACL,KAAK,EAAE,UAAU,CAAC,MAAM;gBACxB,UAAU;gBACV,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS;aAC3E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}
|