kubeview-mcp 1.0.0 → 1.1.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.
Files changed (229) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +147 -149
  3. package/TODO.md +2 -0
  4. package/bin/kubeview-mcp.js +1 -1
  5. package/bin/setup.js +35 -1
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +12 -16
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/kubernetes/KubernetesClient.d.ts +16 -0
  10. package/dist/src/kubernetes/KubernetesClient.d.ts.map +1 -1
  11. package/dist/src/kubernetes/KubernetesClient.js +163 -21
  12. package/dist/src/kubernetes/KubernetesClient.js.map +1 -1
  13. package/dist/src/kubernetes/RetryStrategy.d.ts.map +1 -1
  14. package/dist/src/kubernetes/RetryStrategy.js +5 -0
  15. package/dist/src/kubernetes/RetryStrategy.js.map +1 -1
  16. package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts.map +1 -1
  17. package/dist/src/kubernetes/resources/ConfigMapOperations.js +5 -4
  18. package/dist/src/kubernetes/resources/ConfigMapOperations.js.map +1 -1
  19. package/dist/src/kubernetes/resources/MetricOperations.d.ts +33 -0
  20. package/dist/src/kubernetes/resources/MetricOperations.d.ts.map +1 -1
  21. package/dist/src/kubernetes/resources/MetricOperations.js +526 -42
  22. package/dist/src/kubernetes/resources/MetricOperations.js.map +1 -1
  23. package/dist/src/kubernetes/resources/SecretOperations.d.ts.map +1 -1
  24. package/dist/src/kubernetes/resources/SecretOperations.js +13 -6
  25. package/dist/src/kubernetes/resources/SecretOperations.js.map +1 -1
  26. package/dist/src/plugins/ArgoCDToolsPlugin.d.ts +8 -34
  27. package/dist/src/plugins/ArgoCDToolsPlugin.d.ts.map +1 -1
  28. package/dist/src/plugins/ArgoCDToolsPlugin.js +21 -105
  29. package/dist/src/plugins/ArgoCDToolsPlugin.js.map +1 -1
  30. package/dist/src/plugins/ArgoToolsPlugin.d.ts +8 -34
  31. package/dist/src/plugins/ArgoToolsPlugin.d.ts.map +1 -1
  32. package/dist/src/plugins/ArgoToolsPlugin.js +21 -99
  33. package/dist/src/plugins/ArgoToolsPlugin.js.map +1 -1
  34. package/dist/src/plugins/BaseToolsPlugin.d.ts +37 -0
  35. package/dist/src/plugins/BaseToolsPlugin.d.ts.map +1 -0
  36. package/dist/src/plugins/BaseToolsPlugin.js +112 -0
  37. package/dist/src/plugins/BaseToolsPlugin.js.map +1 -0
  38. package/dist/src/plugins/HelmToolsPlugin.d.ts +8 -30
  39. package/dist/src/plugins/HelmToolsPlugin.d.ts.map +1 -1
  40. package/dist/src/plugins/HelmToolsPlugin.js +21 -96
  41. package/dist/src/plugins/HelmToolsPlugin.js.map +1 -1
  42. package/dist/src/plugins/KubernetesToolsPlugin.d.ts +18 -8
  43. package/dist/src/plugins/KubernetesToolsPlugin.d.ts.map +1 -1
  44. package/dist/src/plugins/KubernetesToolsPlugin.js +83 -49
  45. package/dist/src/plugins/KubernetesToolsPlugin.js.map +1 -1
  46. package/dist/src/server/MCPServer.d.ts +6 -0
  47. package/dist/src/server/MCPServer.d.ts.map +1 -1
  48. package/dist/src/server/MCPServer.js +22 -2
  49. package/dist/src/server/MCPServer.js.map +1 -1
  50. package/dist/src/tools/argo/ArgoListTool.d.ts.map +1 -1
  51. package/dist/src/tools/argo/ArgoListTool.js +1 -1
  52. package/dist/src/tools/argo/ArgoListTool.js.map +1 -1
  53. package/dist/src/tools/argo/index.d.ts +0 -1
  54. package/dist/src/tools/argo/index.d.ts.map +1 -1
  55. package/dist/src/tools/argo/index.js +0 -1
  56. package/dist/src/tools/argo/index.js.map +1 -1
  57. package/dist/src/tools/argocd/ArgoCDAppTool.d.ts +10 -0
  58. package/dist/src/tools/argocd/ArgoCDAppTool.d.ts.map +1 -0
  59. package/dist/src/tools/argocd/ArgoCDAppTool.js +179 -0
  60. package/dist/src/tools/argocd/ArgoCDAppTool.js.map +1 -0
  61. package/dist/src/tools/argocd/index.d.ts +1 -5
  62. package/dist/src/tools/argocd/index.d.ts.map +1 -1
  63. package/dist/src/tools/argocd/index.js +1 -5
  64. package/dist/src/tools/argocd/index.js.map +1 -1
  65. package/dist/src/tools/helm/HelmGetTool.d.ts +11 -0
  66. package/dist/src/tools/helm/HelmGetTool.d.ts.map +1 -0
  67. package/dist/src/tools/helm/HelmGetTool.js +145 -0
  68. package/dist/src/tools/helm/HelmGetTool.js.map +1 -0
  69. package/dist/src/tools/helm/HelmGetValuesTool.d.ts.map +1 -1
  70. package/dist/src/tools/helm/HelmGetValuesTool.js +8 -0
  71. package/dist/src/tools/helm/HelmGetValuesTool.js.map +1 -1
  72. package/dist/src/tools/helm/HelmListTool.js +1 -1
  73. package/dist/src/tools/helm/HelmListTool.js.map +1 -1
  74. package/dist/src/tools/helm/HelmReleaseTool.d.ts +10 -0
  75. package/dist/src/tools/helm/HelmReleaseTool.d.ts.map +1 -0
  76. package/dist/src/tools/helm/HelmReleaseTool.js +44 -0
  77. package/dist/src/tools/helm/HelmReleaseTool.js.map +1 -0
  78. package/dist/src/tools/helm/index.d.ts +1 -8
  79. package/dist/src/tools/helm/index.d.ts.map +1 -1
  80. package/dist/src/tools/helm/index.js +1 -8
  81. package/dist/src/tools/helm/index.js.map +1 -1
  82. package/dist/src/tools/kubernetes/ExecTool.d.ts +11 -0
  83. package/dist/src/tools/kubernetes/ExecTool.d.ts.map +1 -0
  84. package/dist/src/tools/kubernetes/ExecTool.js +275 -0
  85. package/dist/src/tools/kubernetes/ExecTool.js.map +1 -0
  86. package/dist/src/tools/kubernetes/GetContainerLogsTool.js +2 -2
  87. package/dist/src/tools/kubernetes/GetContainerLogsTool.js.map +1 -1
  88. package/dist/src/tools/kubernetes/GetCronJobsTool.d.ts +8 -0
  89. package/dist/src/tools/kubernetes/GetCronJobsTool.d.ts.map +1 -0
  90. package/dist/src/tools/kubernetes/GetCronJobsTool.js +45 -0
  91. package/dist/src/tools/kubernetes/GetCronJobsTool.js.map +1 -0
  92. package/dist/src/tools/kubernetes/GetDaemonSetsTool.d.ts +8 -0
  93. package/dist/src/tools/kubernetes/GetDaemonSetsTool.d.ts.map +1 -0
  94. package/dist/src/tools/kubernetes/GetDaemonSetsTool.js +53 -0
  95. package/dist/src/tools/kubernetes/GetDaemonSetsTool.js.map +1 -0
  96. package/dist/src/tools/kubernetes/GetEndpointSlicesTool.d.ts +8 -0
  97. package/dist/src/tools/kubernetes/GetEndpointSlicesTool.d.ts.map +1 -0
  98. package/dist/src/tools/kubernetes/GetEndpointSlicesTool.js +57 -0
  99. package/dist/src/tools/kubernetes/GetEndpointSlicesTool.js.map +1 -0
  100. package/dist/src/tools/kubernetes/GetEndpointsTool.d.ts +8 -0
  101. package/dist/src/tools/kubernetes/GetEndpointsTool.d.ts.map +1 -0
  102. package/dist/src/tools/kubernetes/GetEndpointsTool.js +53 -0
  103. package/dist/src/tools/kubernetes/GetEndpointsTool.js.map +1 -0
  104. package/dist/src/tools/kubernetes/GetHPATool.d.ts +8 -0
  105. package/dist/src/tools/kubernetes/GetHPATool.d.ts.map +1 -0
  106. package/dist/src/tools/kubernetes/GetHPATool.js +45 -0
  107. package/dist/src/tools/kubernetes/GetHPATool.js.map +1 -0
  108. package/dist/src/tools/kubernetes/GetJobsTool.d.ts +8 -0
  109. package/dist/src/tools/kubernetes/GetJobsTool.d.ts.map +1 -0
  110. package/dist/src/tools/kubernetes/GetJobsTool.js +52 -0
  111. package/dist/src/tools/kubernetes/GetJobsTool.js.map +1 -0
  112. package/dist/src/tools/kubernetes/GetLimitRangesTool.d.ts +8 -0
  113. package/dist/src/tools/kubernetes/GetLimitRangesTool.d.ts.map +1 -0
  114. package/dist/src/tools/kubernetes/GetLimitRangesTool.js +38 -0
  115. package/dist/src/tools/kubernetes/GetLimitRangesTool.js.map +1 -0
  116. package/dist/src/tools/kubernetes/GetMetricsTool.d.ts.map +1 -1
  117. package/dist/src/tools/kubernetes/GetMetricsTool.js +4 -1
  118. package/dist/src/tools/kubernetes/GetMetricsTool.js.map +1 -1
  119. package/dist/src/tools/kubernetes/GetNodesTool.d.ts +8 -0
  120. package/dist/src/tools/kubernetes/GetNodesTool.d.ts.map +1 -0
  121. package/dist/src/tools/kubernetes/GetNodesTool.js +53 -0
  122. package/dist/src/tools/kubernetes/GetNodesTool.js.map +1 -0
  123. package/dist/src/tools/kubernetes/GetPDBTool.d.ts +8 -0
  124. package/dist/src/tools/kubernetes/GetPDBTool.d.ts.map +1 -0
  125. package/dist/src/tools/kubernetes/GetPDBTool.js +46 -0
  126. package/dist/src/tools/kubernetes/GetPDBTool.js.map +1 -0
  127. package/dist/src/tools/kubernetes/GetReplicaSetsTool.d.ts +8 -0
  128. package/dist/src/tools/kubernetes/GetReplicaSetsTool.d.ts.map +1 -0
  129. package/dist/src/tools/kubernetes/GetReplicaSetsTool.js +49 -0
  130. package/dist/src/tools/kubernetes/GetReplicaSetsTool.js.map +1 -0
  131. package/dist/src/tools/kubernetes/GetResourceQuotaTool.d.ts +8 -0
  132. package/dist/src/tools/kubernetes/GetResourceQuotaTool.d.ts.map +1 -0
  133. package/dist/src/tools/kubernetes/GetResourceQuotaTool.js +53 -0
  134. package/dist/src/tools/kubernetes/GetResourceQuotaTool.js.map +1 -0
  135. package/dist/src/tools/kubernetes/GetResourceTool.d.ts +18 -1
  136. package/dist/src/tools/kubernetes/GetResourceTool.d.ts.map +1 -1
  137. package/dist/src/tools/kubernetes/GetResourceTool.js +1000 -26
  138. package/dist/src/tools/kubernetes/GetResourceTool.js.map +1 -1
  139. package/dist/src/tools/kubernetes/GetStatefulSetsTool.d.ts +8 -0
  140. package/dist/src/tools/kubernetes/GetStatefulSetsTool.d.ts.map +1 -0
  141. package/dist/src/tools/kubernetes/GetStatefulSetsTool.js +53 -0
  142. package/dist/src/tools/kubernetes/GetStatefulSetsTool.js.map +1 -0
  143. package/dist/src/tools/kubernetes/KubeListTool.d.ts +54 -0
  144. package/dist/src/tools/kubernetes/KubeListTool.d.ts.map +1 -0
  145. package/dist/src/tools/kubernetes/KubeListTool.js +1370 -0
  146. package/dist/src/tools/kubernetes/KubeListTool.js.map +1 -0
  147. package/dist/src/tools/kubernetes/KubeLogTool.d.ts +18 -0
  148. package/dist/src/tools/kubernetes/KubeLogTool.d.ts.map +1 -0
  149. package/dist/src/tools/kubernetes/KubeLogTool.js +804 -0
  150. package/dist/src/tools/kubernetes/KubeLogTool.js.map +1 -0
  151. package/dist/src/tools/kubernetes/KubeMetricsTool.d.ts +11 -0
  152. package/dist/src/tools/kubernetes/KubeMetricsTool.d.ts.map +1 -0
  153. package/dist/src/tools/kubernetes/KubeMetricsTool.js +174 -0
  154. package/dist/src/tools/kubernetes/KubeMetricsTool.js.map +1 -0
  155. package/dist/src/tools/kubernetes/KubeNetTool.d.ts +27 -0
  156. package/dist/src/tools/kubernetes/KubeNetTool.d.ts.map +1 -0
  157. package/dist/src/tools/kubernetes/KubeNetTool.js +420 -0
  158. package/dist/src/tools/kubernetes/KubeNetTool.js.map +1 -0
  159. package/dist/src/tools/kubernetes/PortForwardTool.d.ts +14 -0
  160. package/dist/src/tools/kubernetes/PortForwardTool.d.ts.map +1 -0
  161. package/dist/src/tools/kubernetes/PortForwardTool.js +278 -0
  162. package/dist/src/tools/kubernetes/PortForwardTool.js.map +1 -0
  163. package/dist/src/tools/kubernetes/index.d.ts +6 -12
  164. package/dist/src/tools/kubernetes/index.d.ts.map +1 -1
  165. package/dist/src/tools/kubernetes/index.js +6 -12
  166. package/dist/src/tools/kubernetes/index.js.map +1 -1
  167. package/dist/src/utils/CliUtils.d.ts.map +1 -1
  168. package/dist/src/utils/CliUtils.js +6 -1
  169. package/dist/src/utils/CliUtils.js.map +1 -1
  170. package/dist/src/utils/SensitiveData.d.ts +31 -0
  171. package/dist/src/utils/SensitiveData.d.ts.map +1 -0
  172. package/dist/src/utils/SensitiveData.js +136 -0
  173. package/dist/src/utils/SensitiveData.js.map +1 -0
  174. package/dist/tests/__mocks__/@kubernetes/client-node.d.ts +18 -0
  175. package/dist/tests/__mocks__/@kubernetes/client-node.d.ts.map +1 -1
  176. package/dist/tests/__mocks__/@kubernetes/client-node.js +18 -0
  177. package/dist/tests/__mocks__/@kubernetes/client-node.js.map +1 -1
  178. package/dist/tests/kubernetes/GetPodMetricsTool.test.js +57 -60
  179. package/dist/tests/kubernetes/GetPodMetricsTool.test.js.map +1 -1
  180. package/dist/tests/kubernetes/RetryStrategy.test.js +6 -0
  181. package/dist/tests/kubernetes/RetryStrategy.test.js.map +1 -1
  182. package/dist/tests/plugins/KubernetesToolsPlugin.test.js +29 -37
  183. package/dist/tests/plugins/KubernetesToolsPlugin.test.js.map +1 -1
  184. package/package.json +2 -2
  185. package/src/cli/run-command.js +2 -2
  186. package/src/index.ts +12 -11
  187. package/src/kubernetes/KubernetesClient.ts +180 -27
  188. package/src/kubernetes/RetryStrategy.ts +7 -0
  189. package/src/kubernetes/resources/ConfigMapOperations.ts +5 -4
  190. package/src/kubernetes/resources/MetricOperations.ts +631 -56
  191. package/src/kubernetes/resources/SecretOperations.ts +16 -6
  192. package/src/plugins/ArgoCDToolsPlugin.ts +30 -130
  193. package/src/plugins/ArgoToolsPlugin.ts +27 -114
  194. package/src/plugins/BaseToolsPlugin.ts +147 -0
  195. package/src/plugins/HelmToolsPlugin.ts +28 -116
  196. package/src/plugins/KubernetesToolsPlugin.ts +99 -68
  197. package/src/server/MCPServer.ts +27 -2
  198. package/src/tools/argo/ArgoListTool.ts +2 -1
  199. package/src/tools/argo/index.ts +0 -1
  200. package/src/tools/argocd/ArgoCDAppTool.ts +171 -0
  201. package/src/tools/argocd/index.ts +1 -5
  202. package/src/tools/helm/HelmGetTool.ts +140 -0
  203. package/src/tools/helm/HelmGetValuesTool.ts +8 -0
  204. package/src/tools/helm/HelmListTool.ts +1 -1
  205. package/src/tools/helm/index.ts +1 -8
  206. package/src/tools/kubernetes/ExecTool.ts +308 -0
  207. package/src/tools/kubernetes/GetContainerLogsTool.ts +2 -2
  208. package/src/tools/kubernetes/GetCronJobsTool.ts +47 -0
  209. package/src/tools/kubernetes/GetDaemonSetsTool.ts +55 -0
  210. package/src/tools/kubernetes/GetEndpointSlicesTool.ts +57 -0
  211. package/src/tools/kubernetes/GetEndpointsTool.ts +53 -0
  212. package/src/tools/kubernetes/GetHPATool.ts +48 -0
  213. package/src/tools/kubernetes/GetJobsTool.ts +54 -0
  214. package/src/tools/kubernetes/GetLimitRangesTool.ts +40 -0
  215. package/src/tools/kubernetes/GetMetricsTool.ts +9 -1
  216. package/src/tools/kubernetes/GetNodesTool.ts +55 -0
  217. package/src/tools/kubernetes/GetPDBTool.ts +48 -0
  218. package/src/tools/kubernetes/GetReplicaSetsTool.ts +51 -0
  219. package/src/tools/kubernetes/GetResourceQuotaTool.ts +55 -0
  220. package/src/tools/kubernetes/GetResourceTool.ts +1233 -27
  221. package/src/tools/kubernetes/GetStatefulSetsTool.ts +55 -0
  222. package/src/tools/kubernetes/KubeListTool.ts +1684 -0
  223. package/src/tools/kubernetes/KubeLogTool.ts +935 -0
  224. package/src/tools/kubernetes/KubeMetricsTool.ts +220 -0
  225. package/src/tools/kubernetes/KubeNetTool.ts +481 -0
  226. package/src/tools/kubernetes/PortForwardTool.ts +307 -0
  227. package/src/tools/kubernetes/index.ts +6 -12
  228. package/src/utils/CliUtils.ts +12 -1
  229. package/src/utils/SensitiveData.ts +148 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.0] - 2025-08-09
9
+
10
+ ### Added
11
+ - **CLI Support Detection**: Added optional CLI support detection and improve plugin loading.
12
+ - **Multi-pod Log Streaming**: Added `KubeLogTool` for multi-pod log streaming with event merging.
13
+ - **Storage Diagnostics**: Enhanced `KubernetesClient` and `KubeListTool` with storage diagnostics.
14
+ - **RBAC Support**: Enhanced `KubernetesClient` and tools with RBAC support.
15
+ - **Network Diagnostics**: Added `KubeNetTool` for network diagnostics.
16
+ - **Sensitive Data Masking**: Implement sensitive data masking across outputs.
17
+ - **Exec Tool**: Added `ExecTool` for executing commands in Kubernetes pods.
18
+ - **Port Forward Tool**: Added `PortForwardTool` to Kubernetes tools.
19
+ - **Prometheus Target Discovery**: Enhanced Prometheus target discovery and metrics handling.
20
+ - **onNewConversation Hook**: Implemented `onNewConversation` hook for Kubernetes tools.
21
+
22
+ ### Changed
23
+ - **URL and Timeout Parsing**: Updated `kubeview-mcp` URL and refactor timeout parsing.
24
+ - **Resource Tool Renaming**: Renamed `GetResourceTool` and `KubeListTool` for clarity.
25
+ - **Resource Tool Enhancement**: Enhanced `GetResourceTool` for broader resource support and improved diagnostics.
26
+ - **Helm Tool Streamlining**: Streamlined Helm tools and update CLI commands.
27
+ - **BaseToolsPlugin**: Refactored to introduce `BaseToolsPlugin` to reduce duplication across tool plugins.
28
+
29
+ ### Fixed
30
+ - **Metric Retrieval**: Enhanced metric retrieval with improved proxy handling and fallback mechanisms.
31
+ - **API Call Signatures**: Corrected `CustomObjectsApi` call signatures and return `response.body` from raw metrics requests; improve kubelet summary fallback logging.
32
+ - **ESLint Rules**: Satisfied ESLint rules in `PortForwardTool` (no-empty/no-unused-vars).
33
+ - **Global Timeout Handling**: Implemented global timeout handling for tool commands.
34
+ - **Delay Handling**: Optimized delay handling in `RetryStrategy` for test environments.
35
+
8
36
  ## [1.0.0] - 2024-12-19
9
37
 
10
38
  ### Added
@@ -52,4 +80,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
52
80
  - Integration guides for Cursor IDE
53
81
  - API documentation for developers
54
82
 
55
- [1.0.0]: https://github.com/mikhae1/kubeview-mcp/releases/tag/v1.0.0
83
+ [1.0.0]: https://github.com/mikhae1/kubeview-mcp/releases/tag/v1.0.0
package/README.md CHANGED
@@ -4,47 +4,19 @@
4
4
  [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.8+-blue)](https://www.typescriptlang.org/)
6
6
 
7
- **KubeView MCP** is a **read-only Model Context Protocol (MCP) server** that exposes rich, AI-ready operations for Kubernetes clusters. Paired with tools like **Cursor IDE** or Chat-based assistants, it lets you inspect, analyse and debug your cluster through natural-language commands while guaranteeing zero write access.
8
-
9
- ---
10
-
11
- ## Table of Contents
12
-
13
- - [KubeView MCP – Kubernetes Model Context Protocol Server](#kubeview-mcp--kubernetes-model-context-protocol-server)
14
- - [Table of Contents](#table-of-contents)
15
- - [✨ Features](#-features)
16
- - [🚀 Quick Start](#-quick-start)
17
- - [Prerequisites](#prerequisites)
18
- - [Installation](#installation)
19
- - [Build & Run](#build--run)
20
- - [📟 CLI Reference](#-cli-reference)
21
- - [Resource Management](#resource-management)
22
- - [Storage & Persistence](#storage--persistence)
23
- - [Monitoring & Observability](#monitoring--observability)
24
- - [Generic Resource Tool](#generic-resource-tool)
25
- - [🪄 Helm Integration](#-helm-integration)
26
- - [Core Operations](#core-operations)
27
- - [Configuration & Values](#configuration--values)
28
- - [Helm ↔ Kubernetes Bridge](#helm--kubernetes-bridge)
29
- - [Example – list all Helm releases](#example--list-all-helm-releases)
30
- - [Argo Integration](#argo-integration)
31
- - [ArgoCD Integration](#argocd-integration)
32
- - [💡 Usage Examples](#-usage-examples)
33
- - [🤝 Contributing](#-contributing)
34
- - [📄 License](#-license)
35
- - [🙏 Acknowledgments](#-acknowledgments)
7
+ KubeView MCP is a read-only Model Context Protocol (MCP) server that exposes AI-friendly tools for safe Kubernetes, Helm, Argo Workflows, and Argo CD introspection. It pairs with Cursor IDE, Claude Desktop, and other MCP clients to let you inspect, diagnose, and debug clusters via natural language—without any write operations.
36
8
 
37
9
  ---
38
10
 
39
11
  ## ✨ Features
40
12
 
41
- - **Kubernetes Resources** – Read-only access to Pods, Services, Deployments, Namespaces, ConfigMaps, Secrets, PVCs and more.
42
- - **Helm Support** Deep inspection of Helm releases including manifests, values, hooks and history.
43
- - **Argo & ArgoCD Integration** Seamlessly interact with Argo Workflows and ArgoCD applications.
44
- - **Advanced Storage Analysis** – Diagnose PV/PVC issues with smart binding & reclaim-policy checks.
45
- - **Robust Monitoring** CPU / memory metrics out-of-the-box, optionally enriched with Prometheus data.
46
- - **Log Streaming** Tail or grep container logs directly from your AI assistant.
47
- - **Cluster Events** Filter and analyse live Kubernetes events.
13
+ - **Kubernetes tools (read-only)**: list, get/describe, metrics, single-pod logs, multi-pod streaming logs with event merge, exec (read-only), port-forward, and in-cluster network diagnostics
14
+ - **Cluster overview**: one-shot, LLM-optimized diagnostics across nodes, workloads, storage, events, and security posture
15
+ - **Helm integration**: list releases; fetch values, manifest, notes, hooks, history, status, and parsed resources
16
+ - **Argo Workflows**: list/get workflows and fetch workflow logs
17
+ - **Argo CD**: list/get app details, resources, history, logs, and status via a single multi-operation tool
18
+ - **Sensitive data masking**: global redaction for secrets/tokens in ConfigMaps, Secrets, and Helm values
19
+ - **Zero write access**: designed to be safe in production from day one
48
20
 
49
21
  ---
50
22
 
@@ -53,17 +25,17 @@
53
25
  ### Zero-install via npx
54
26
 
55
27
  ```bash
56
- npx https://github.com/mikhae1/kubeview-mcp
28
+ npx -y https://github.com/mikhae1/kubeview-mcp
57
29
  ```
58
30
 
59
- _For Cursor IDE or any other MCP-compatible client, add the following entry to your_ `mcp.json` _file (usually located in `~/.cursor/mcp.json`):_
31
+ Add to your MCP client config (for Cursor, `~/.cursor/mcp.json`):
60
32
 
61
33
  ```json
62
34
  {
63
35
  "mcpServers": {
64
36
  "kubeview-mcp": {
65
37
  "command": "npx",
66
- "args": ["https://github.com/mikhae1/kubeview-mcp"],
38
+ "args": ["-y", "https://github.com/mikhae1/kubeview-mcp"],
67
39
  "env": {
68
40
  "KUBECONFIG": "$HOME/.kube/config"
69
41
  }
@@ -74,154 +46,180 @@ _For Cursor IDE or any other MCP-compatible client, add the following entry to y
74
46
 
75
47
  ### Prerequisites
76
48
 
77
- - **Node.js ≥ 18**
78
- - **npm** (or **yarn/pnpm**) for dependency management
79
- - Access to a **Kubernetes cluster** with a valid *kubeconfig*
80
- - **Cursor IDE** (or another MCP-compatible client) for interactive use
49
+ - Node.js ≥ 18
50
+ - Access to a Kubernetes cluster (kubeconfig)
51
+ - Optional CLIs on PATH when using those plugins: `helm`, `argo`, `argocd`
81
52
 
82
- ### Installation
53
+ ### Local install
83
54
 
84
55
  ```bash
85
- # Clone the repository
86
- $ git clone https://github.com/mikhae1/kubeview-mcp.git
87
- $ cd kubeview-mcp
88
-
89
- # Install dependencies
90
- $ npm install
56
+ git clone https://github.com/mikhae1/kubeview-mcp.git
57
+ cd kubeview-mcp
58
+ npm install
91
59
 
92
- # Generate local configuration for Cursor IDE & Claude
93
- $ npm run setup
60
+ # Generate local MCP config entries for Cursor and/or Claude Desktop
61
+ npm run setup
94
62
  ```
95
63
 
96
- ### Build & Run
64
+ ### Run
97
65
 
98
66
  ```bash
99
- # Compile TypeScript → JavaScript
100
- $ npm run build
67
+ # Build and start
68
+ npm run build
69
+ npm start
101
70
 
102
- # Start the MCP server
103
- $ npm start
71
+ # Or use the bundled binary wrapper
72
+ kubeview-mcp serve
104
73
  ```
105
74
 
106
- The server will automatically locate your *kubeconfig* and use the current k8s context for all operations.
107
-
108
75
  ---
109
76
 
110
- ## 📟 CLI Reference
77
+ ## 📟 Tool Index (CLI)
111
78
 
112
- All commands are invoked through the project-local helper:
79
+ Invoke tools with the helper:
113
80
 
114
81
  ```bash
115
- npm run command -- <tool_name> [tool options]
82
+ npm run command -- <tool_name> [--param=value ...]
116
83
  ```
117
84
 
118
- ### Resource Management
119
-
120
- | Tool | Description |
121
- | ---------------- | --------------------------------------------------------- |
122
- | `get_pods` | List / filter pods with detailed phase & container state |
123
- | `get_services` | Discover services and their exposed endpoints |
124
- | `get_deployments`| Inspect deployment rollout status & spec |
125
- | `get_ingresses` | View ingresses and their routing rules |
126
- | `get_configmaps` | View ConfigMaps (with sensitive data automatically redacted) |
127
- | `get_secrets` | Read-only secret inspector with built-in sanitisation |
128
- | `get_namespaces` | Enumerate namespaces in the cluster |
85
+ ### Kubernetes
86
+
87
+ - **kube_list**: List resources or, when no `resourceType` is provided, return a cluster diagnostics overview
88
+ - Params: `resourceType`, `namespace`, `labelSelector`, `fieldSelector`
89
+ - Supported `resourceType` for listing: `pod`, `service`, `deployment`, `node`, `namespace`, `persistentvolume`, `persistentvolumeclaim`, `secret`, `configmap`, `role`, `clusterrole`, `rolebinding`, `clusterrolebinding`
90
+ - **kube_get**: Describe a single resource or list a type using plural, kind, shortname, or fully-qualified `group/version/resource`
91
+ - Params: `resourceType` (required), `name`, `namespace`, `includeEvents`, `includeDiagnostics`, `eventsLimit`, `restartThreshold`, `skipSanitize` (for ConfigMaps)
92
+ - **kube_metrics**: Node and pod CPU/memory metrics, optional Prometheus enrichment and diagnostics
93
+ - Params: `scope` (`all|nodes|pods`), `namespace`, `podName`, `includeSummary`, `diagnostics`, `prometheusQueries[]`, `fetchPodSpecs`, thresholds (`topN`, `cpuSaturationThreshold`, `memorySaturationThreshold`, `podRestartThreshold`, `podLimitPressureThreshold`)
94
+ - **kube_logs**: Pod/container logs (like `kubectl logs`)
95
+ - Params: `podName` (required), `namespace`, `container`, `tailLines`, `since`, `previous`, `timestamps`
96
+ - **kube_log**: Multi-pod & multi-container log tail with dynamic discovery and merged Events
97
+ - Selectors: `namespace`, `labelSelector`, `ownerKind` (`Deployment|DaemonSet|Job`), `ownerName`
98
+ - Filters: `podRegex`, `containerRegex`, `messageRegex`, `excludeRegex`, `jsonPaths` (e.g., `[{"path":"level","equals":"error"}]`)
99
+ - Time/tail: `tailLines`, `since` (e.g., `15m`), `sinceTime` (RFC3339), `timestamps`, `previous`
100
+ - Session bounds: `durationSeconds` (default 30), `maxLines`
101
+ - Events: `includeEvents` (default true), `eventType` (`Normal|Warning|All`)
102
+ - Output: `structure` (`object|text`). In object mode each line has `type: 'log'|'event'`. In text mode events are prefixed with `[event]`.
103
+ - **kube_exec**: Execute a command in a container via Kubernetes API only; returns stdout/stderr
104
+ - Params: `podName` (required), `namespace`, `container`, `args[]` | `argv` | `command`, `stdin`, `tty`, `timeoutSeconds`, `shell`
105
+ - **kube_port**: Temporary port-forward to a pod or service (auto-terminates)
106
+ - Params: `namespace`, `podName` | `serviceName`, `remotePort` (required), `localPort`, `address`, `timeoutSeconds`, `readinessTimeoutSeconds`
107
+ - **kube_net**: In-pod network diagnostics (DNS resolution, internet egress, pod/service connectivity)
108
+ - Params: `sourcePod` (required), `namespace`, `container`, `targetPod`, `targetPodNamespace`, `targetService`, `targetServiceNamespace`, `targetPort`, `externalHost`, `externalPort`, `dnsNames[]`, toggles: `runDnsTest`, `runInternetTest`, `runPodConnectivityTest`, `runServiceConnectivityTest`, `timeoutSeconds`
109
+
110
+ ### Helm
111
+
112
+ - **helm_list**: List Helm releases
113
+ - Params: `namespace`, `allNamespaces`, `outputFormat`, `selector`, `maxReleases`, `deployed`, `failed`, `pending`, `superseded`, `uninstalled`, `uninstalling`
114
+ - **helm_get**: Get release data
115
+ - Params: `what` (`values|manifest|notes|hooks|resources|status|history`), `releaseName` (required), `namespace`, `revision`, `outputFormat`, `allValues`, `resourceType`, `showResources`
116
+
117
+ ### Argo Workflows
118
+
119
+ - **argo_list**: List workflows with rich filters
120
+ - Params: `namespace`, `allNamespaces`, `outputFormat`, `selector`, status flags (`running|succeeded|failed|pending|completed|status`), `since`, `chunked`, `maxWorkflows`
121
+ - **argo_get**: Get workflow details
122
+ - Params: `workflowName` (required), `namespace`, `outputFormat`, `showParameters`, `showArtifacts`, `showEvents`, `nodeFieldSelector`
123
+ - **argo_logs**: Get workflow logs
124
+ - Params: `workflowName` (required), `namespace`, `container`, `follow`, `previous`, `since`, `sinceTime`, `tail`, `timestamps`, `grep`, `noColor`
125
+
126
+ ### Argo CD
127
+
128
+ - **argocd_app**: Multi-operation tool for Argo CD apps
129
+ - Params: `operation` (`list|get|resources|logs|history|status`) plus operation-specific flags (`appName`, `outputFormat`, `selector`, `project`, `cluster`, `namespace`, `repo`, `health`, `sync`, `server`, `grpcWeb`, `plaintext`, `insecure`, `refresh`, `hardRefresh`, `group`, `kind`, `name`, `container`, `follow`, `previous`, `since`, `sinceTime`, `tail`, `timestamps`)
129
130
 
130
- ### Storage & Persistence
131
+ ---
131
132
 
132
- | Tool | Description |
133
- | ------------------------------ | ------------------------------------------------------------ |
134
- | `get_persistent_volumes` | Analyse PVs and detect reclaim / capacity issues |
135
- | `get_persistent_volume_claims` | Inspect PVC binding, access modes & storage-class details |
133
+ ## ⚙️ Configuration
136
134
 
137
- ### Monitoring & Observability
135
+ Provide env vars via your MCP client config or shell.
138
136
 
139
- | Tool | Description |
140
- | --------------- | ------------------------------------------------------------- |
141
- | `get_metrics` | Cluster-wide CPU & memory metrics (Prometheus optional) |
142
- | `get_pod_metrics` | Fine-grained metrics for individual pods |
143
- | `get_events` | Stream or filter recent cluster events |
144
- | `pod_logs` | Tail container logs with regex / since-time filters |
137
+ - **KUBECONFIG**: Path to kubeconfig (default: `$HOME/.kube/config`)
138
+ - **LOG_LEVEL**: `error|warn|info|debug` (server logs also write to `kubeview-mcp.log`)
139
+ - **TIMEOUT**: Global per-tool timeout in ms (applies to all tools)
140
+ - CLI timeouts: **HELM_TIMEOUT**, **ARGO_TIMEOUT**, **ARGOCD_TIMEOUT** (ms)
141
+ - CLI executable overrides: **HELM_PATH**, **ARGO_PATH**, **ARGOCD_PATH**
142
+ - Plugin toggles: **DISABLE_KUBERNETES_PLUGIN**, **DISABLE_HELM_PLUGIN**, **DISABLE_ARGO_PLUGIN**, **DISABLE_ARGOCD_PLUGIN** (`true|1` to disable)
143
+ - Kubernetes options: **KUBE_CONTEXT**, **K8S_SKIP_TLS_VERIFY** (`true|1`)
145
144
 
146
- ### Generic Resource Tool
145
+ Example (Cursor `mcp.json`):
147
146
 
148
- | Tool | Description |
149
- | -------------- | ----------------------------------------- |
150
- | `get_resource` | Inspect any Kubernetes resource by GVR |
147
+ ```json
148
+ {
149
+ "mcpServers": {
150
+ "kubeview-mcp": {
151
+ "command": "npx",
152
+ "args": ["-y", "https://github.com/mikhae1/kubeview-mcp"],
153
+ "env": {
154
+ "KUBECONFIG": "$HOME/.kube/config",
155
+ "LOG_LEVEL": "info",
156
+ "HELM_TIMEOUT": "45000",
157
+ "DISABLE_ARGO_PLUGIN": "1"
158
+ }
159
+ }
160
+ }
161
+ }
162
+ ```
151
163
 
152
164
  ---
153
165
 
154
- ## 🪄 Helm Integration
155
-
156
- KubeView MCP ships with a dedicated **HelmToolsPlugin** bringing first-class Helm introspection.
157
-
158
- ### Core Operations
166
+ ## 🔒 Sensitive Data Masking
159
167
 
160
- | Tool | Description |
161
- | ------------ | ---------------------------------------------------------- |
162
- | `helm_list` | List releases across all namespaces with status & revision |
163
- | `helm_status`| Full release status (history, manifest, values) |
164
- | `helm_history`| Complete upgrade / rollback history |
168
+ Global masking prevents accidental disclosure of secrets (enabled when any of the flags below are set):
165
169
 
166
- ### Configuration & Values
170
+ - Enable: `MCP_HIDE_SENSITIVE` or `HIDE_SENSITIVE_DATA` or `MASK_SENSITIVE_DATA` → `true|1|yes|on`
171
+ - Mask text override: `SENSITIVE_MASK` (default: `*** FILTERED ***`)
167
172
 
168
- | Tool | Description |
169
- | ------------------ | --------------------------------------------- |
170
- | `helm_get_values` | Rendered values.yaml for a release |
171
- | `helm_get_manifest`| Complete aggregated Kubernetes manifest |
172
- | `helm_get_notes` | Chart installation notes & post-deploy hints |
173
- | `helm_get_hooks` | Pre / post hooks configured by the chart |
173
+ Effects:
174
174
 
175
- ### Helm Kubernetes Bridge
175
+ - ConfigMaps: values redacted by key/value heuristics; forcing `skipSanitize=true` on `kube_get` will still be overridden by global masking
176
+ - Secrets: list/describe returns only key names; values are masked
177
+ - Helm: `helm_get` with `what=values` applies masking on returned text
176
178
 
177
- | Tool | Description |
178
- | -------------------------- | ------------------------------------------------------------------- |
179
- | `helm_get_resources` | Discover / categorise all resources created by a release |
180
- | `helm_list_with_resources` | Enhanced `helm_list` that bundles the above analysis for each release |
179
+ ---
181
180
 
182
- #### Example – list all Helm releases
181
+ ## 💡 Examples
183
182
 
184
183
  ```bash
185
- npm run command -- helm_list
186
- ```
187
-
188
- ---
189
- ## Argo Integration
184
+ # Cluster diagnostics overview (no resourceType)
185
+ npm run command -- kube_list
190
186
 
191
- The **ArgoToolsPlugin** provides tools for interacting with Argo Workflows.
187
+ # Pods in a namespace
188
+ npm run command -- kube_list --resourceType=pod --namespace=default
192
189
 
193
- | Tool | Description |
194
- | --- | --- |
195
- | `argo_get` | Get details about a workflow
196
- | `argo_list` | List all Argo Workflows |
197
- | `argo_logs` | Get logs from an Argo Workflow |
198
- | `argo_cron_list` | List all Argo Cron Workflows |
190
+ # Describe a deployment with events and diagnostics
191
+ npm run command -- kube_get --resourceType=deployment --name=web --namespace=prod
199
192
 
200
- ## ArgoCD Integration
193
+ # Metrics summary with diagnostics
194
+ npm run command -- kube_metrics --includeSummary=true --diagnostics=true
201
195
 
202
- The **ArgoCDToolsPlugin** provides tools for interacting with ArgoCD.
196
+ # Logs from a pod (last 200 lines)
197
+ npm run command -- kube_logs --podName=nginx-123 --namespace=default --tailLines=200
203
198
 
204
- | Tool | Description |
205
- | --- | --- |
206
- | `argocd_app_list` | List all ArgoCD applications |
207
- | `argocd_app_get` | Get a specific ArgoCD application |
208
- | `argocd_app_history` | Get the history of an ArgoCD application |
209
- | `argocd_app_logs` | Get the logs of an ArgoCD application |
210
- | `argocd_app_resources` | Get the resources of an ArgoCD application |
199
+ # Stream logs across pods by owner with events (10 minutes back)
200
+ npm run command -- kube_log --namespace=prod --ownerKind=Deployment --ownerName=api --since=10m --includeEvents=true --durationSeconds=20
211
201
 
212
- ---
202
+ # Filter by labels and container name, text output
203
+ npm run command -- kube_log --namespace=default --labelSelector='app=db,tier=api' --containerRegex='^(main|sidecar)$' --structure=text --durationSeconds=15
213
204
 
214
- ## 💡 Usage Examples
205
+ # Only errors from JSON logs
206
+ npm run command -- kube_log --namespace=prod --labelSelector='app=my-api' --jsonPaths='[{"path":"level","equals":"error"}]' --messageRegex='timeout|exception' --since=30m --durationSeconds=20
215
207
 
216
- Ask your assistant:
208
+ # Only events (text mode)
209
+ npm run command -- kube_log --namespace=default --includeEvents=true --structure=text --messageRegex='^\\[event\\]' --durationSeconds=10
217
210
 
218
- > *“Show me the details of the **nginx** deployment in the **web** namespace.”*
211
+ # Port-forward service 80 -> local 8080 for 90s
212
+ npm run command -- kube_port --serviceName=my-svc --namespace=default --remotePort=80 --localPort=8080 --timeoutSeconds=90
219
213
 
220
- KubeView MCP will execute `get_resource` under the hood and return a structured JSON response that your assistant converts into a readable answer.
214
+ # Network diagnostics from a pod
215
+ npm run command -- kube_net --sourcePod=api-0 --namespace=prod --targetService=db --runServiceConnectivityTest=true
221
216
 
222
- > *“List all pods in the **default** namespace and show their CPU and memory usage.”*
217
+ # Helm release values (masked)
218
+ npm run command -- helm_get --what=values --releaseName=my-release --namespace=default --allValues=true
223
219
 
224
- This will trigger the `get_pods` and `get_pod_metrics` tools, combining their output to provide a comprehensive view of your pods' resource consumption.
220
+ # Argo CD app resources
221
+ npm run command -- argocd_app --operation=resources --appName=my-app --outputFormat=json
222
+ ```
225
223
 
226
224
  ---
227
225
 
@@ -229,23 +227,23 @@ This will trigger the `get_pods` and `get_pod_metrics` tools, combining their ou
229
227
 
230
228
  1. Fork the repo
231
229
  2. Create a feature branch: `git checkout -b feat/my-awesome-feature`
232
- 3. Commit your changes: `git commit -m "feat: add my awesome feature"`
233
- 4. Push to GitHub: `git push origin feat/my-awesome-feature`
234
- 5. Open a Pull Request – thank you!
230
+ 3. Commit: `git commit -m "feat: add my awesome feature"`
231
+ 4. Push: `git push origin feat/my-awesome-feature`
232
+ 5. Open a Pull Request
235
233
 
236
- > 💡 Run `npm run lint` and `npm run test` before opening a PR.
234
+ Tip: run `npm run lint` and `npm run test` locally before submitting.
237
235
 
238
236
  ---
239
237
 
240
238
  ## 📄 License
241
239
 
242
- This project is released under the MIT License – see [LICENSE](LICENSE).
240
+ MIT – see `LICENSE`.
243
241
 
244
242
  ---
245
243
 
246
244
  ## 🙏 Acknowledgments
247
245
 
248
- - [Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk)
249
- - [Kubernetes JavaScript Client](https://github.com/kubernetes-client/javascript)
250
- - [Winston](https://github.com/winstonjs/winston)
251
- - [TypeScript](https://www.typescriptlang.org/)
246
+ - Model Context Protocol SDK
247
+ - Kubernetes JavaScript Client
248
+ - Winston
249
+ - TypeScript
package/TODO.md CHANGED
@@ -0,0 +1,2 @@
1
+ - kube_logs (multiple log streams + events, selectors support)
2
+ -
@@ -97,7 +97,7 @@ class KubeMCPCLI {
97
97
  console.log(' kubeview-mcp test # Run tests');
98
98
  console.log(' kubeview-mcp lint # Run linter');
99
99
  console.log('');
100
- console.log('For more information, visit: https://github.com/your-org/kubeview-mcp');
100
+ console.log('For more information, visit: https://github.com/mikhae1/kubeview-mcp');
101
101
  }
102
102
 
103
103
  // Display version information
package/bin/setup.js CHANGED
@@ -3,6 +3,7 @@
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
5
  import { fileURLToPath } from 'url';
6
+ import { spawnSync } from 'child_process';
6
7
  import os from 'os';
7
8
 
8
9
  const __filename = fileURLToPath(import.meta.url);
@@ -28,6 +29,25 @@ class SetupManager {
28
29
  console.log(`${color}${message}${colors.reset}`);
29
30
  }
30
31
 
32
+ // Detect whether a CLI command is available by attempting a lightweight version call
33
+ isCliAvailable(cmd, args = ['version']) {
34
+ try {
35
+ const result = spawnSync(cmd, args, { stdio: 'ignore' });
36
+ return result.status === 0;
37
+ } catch {
38
+ return false;
39
+ }
40
+ }
41
+
42
+ // Detect support for optional plugins
43
+ detectOptionalCliSupport() {
44
+ const helmAvailable = this.isCliAvailable('helm', ['version', '--short']);
45
+ const argoAvailable = this.isCliAvailable('argo', ['version']);
46
+ const argocdAvailable = this.isCliAvailable('argocd', ['version', '--client']);
47
+
48
+ return { helmAvailable, argoAvailable, argocdAvailable };
49
+ }
50
+
31
51
  error(message, error = null) {
32
52
  console.error(`${colors.red}${message}${colors.reset}`, error || '');
33
53
  }
@@ -146,11 +166,16 @@ class SetupManager {
146
166
 
147
167
  // Create MCP server configuration
148
168
  createMcpServerConfig() {
169
+ const { helmAvailable, argoAvailable, argocdAvailable } = this.detectOptionalCliSupport();
149
170
  return {
150
171
  command: 'npx',
151
172
  args: ['-y', 'https://github.com/mikhae1/kubeview-mcp'],
152
173
  env: {
153
- KUBECONFIG: process.env.KUBECONFIG || this.defaultKubeconfig
174
+ KUBECONFIG: process.env.KUBECONFIG || this.defaultKubeconfig,
175
+ // Disable optional plugins if their CLIs are not present to prevent startup failures in hosts like Claude
176
+ ...(helmAvailable ? {} : { DISABLE_HELM_PLUGIN: '1' }),
177
+ ...(argoAvailable ? {} : { DISABLE_ARGO_PLUGIN: '1' }),
178
+ ...(argocdAvailable ? {} : { DISABLE_ARGOCD_PLUGIN: '1' }),
154
179
  }
155
180
  };
156
181
  }
@@ -206,6 +231,15 @@ class SetupManager {
206
231
  console.log(` Log level: ${serverConfig.env.LOG_LEVEL}`);
207
232
  }
208
233
 
234
+ // Show optional plugin status
235
+ const helmDisabled = serverConfig.env.DISABLE_HELM_PLUGIN === '1' || serverConfig.env.DISABLE_HELM_PLUGIN === 'true';
236
+ const argoDisabled = serverConfig.env.DISABLE_ARGO_PLUGIN === '1' || serverConfig.env.DISABLE_ARGO_PLUGIN === 'true';
237
+ const argocdDisabled = serverConfig.env.DISABLE_ARGOCD_PLUGIN === '1' || serverConfig.env.DISABLE_ARGOCD_PLUGIN === 'true';
238
+ console.log(' Optional plugins:');
239
+ console.log(` Helm: ${helmDisabled ? 'disabled (helm CLI not found)' : 'enabled'}`);
240
+ console.log(` Argo: ${argoDisabled ? 'disabled (argo CLI not found)' : 'enabled'}`);
241
+ console.log(` ArgoCD: ${argocdDisabled ? 'disabled (argocd CLI not found)' : 'enabled'}`);
242
+
209
243
  this.validateKubeconfig(serverConfig.env.KUBECONFIG);
210
244
 
211
245
  const appName = ideName.split(' ')[0]; // Extract first word for app name
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAQH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAQH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgC1C"}
package/dist/src/index.js CHANGED
@@ -17,15 +17,18 @@ export async function main() {
17
17
  // Load the Kubernetes tools plugin
18
18
  const kubernetesPlugin = new KubernetesToolsPlugin();
19
19
  await server.loadPlugin(kubernetesPlugin);
20
- // Load the Helm tools plugin
21
- const helmPlugin = new HelmToolsPlugin();
22
- await server.loadPlugin(helmPlugin);
23
- // Load the Argo tools plugin
24
- const argoPlugin = new ArgoToolsPlugin();
25
- await server.loadPlugin(argoPlugin);
26
- // Load the ArgoCD tools plugin
27
- const argoCDPlugin = new ArgoCDToolsPlugin();
28
- await server.loadPlugin(argoCDPlugin);
20
+ // Load optional plugins (do not fail server startup if they are unavailable)
21
+ const optionalPlugins = [new HelmToolsPlugin(), new ArgoToolsPlugin(), new ArgoCDToolsPlugin()];
22
+ for (const plugin of optionalPlugins) {
23
+ try {
24
+ await server.loadPlugin(plugin);
25
+ }
26
+ catch (err) {
27
+ const message = err instanceof Error ? err.message : String(err);
28
+ // Log to stderr so hosts like Claude surface it, but continue startup
29
+ console.error(`Optional plugin '${plugin.name}' failed to load: ${message}`);
30
+ }
31
+ }
29
32
  // Start the server
30
33
  await server.start();
31
34
  console.error('MCP Server is running. Waiting for connections...');
@@ -35,11 +38,4 @@ export async function main() {
35
38
  process.exit(1);
36
39
  }
37
40
  }
38
- // If this file is being run directly (not imported), start the server
39
- if (import.meta.url === `file://${process.argv[1]}`) {
40
- main().catch((error) => {
41
- console.error('Failed to start server:', error);
42
- process.exit(1);
43
- });
44
- }
45
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,gBAAgB,CAAC,CAAC;IAEjE,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACrD,MAAM,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAE1C,6BAA6B;QAC7B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,6BAA6B;QAC7B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpC,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEtC,mBAAmB;QACnB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,gBAAgB,CAAC,CAAC;IAEjE,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAE/B,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACrD,MAAM,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAE1C,6EAA6E;QAC7E,MAAM,eAAe,GAAG,CAAC,IAAI,eAAe,EAAE,EAAE,IAAI,eAAe,EAAE,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAEhG,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,sEAAsE;gBACtE,OAAO,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,qBAAqB,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -53,6 +53,12 @@ export declare class KubernetesClient {
53
53
  private appsV1Api;
54
54
  private batchV1Api;
55
55
  private networkingV1Api;
56
+ private storageV1Api;
57
+ private autoscalingV2Api;
58
+ private policyV1Api;
59
+ private discoveryV1Api;
60
+ private rbacAuthorizationV1Api;
61
+ private authorizationV1Api;
56
62
  private authMethod;
57
63
  private logger?;
58
64
  private _resources;
@@ -94,6 +100,10 @@ export declare class KubernetesClient {
94
100
  * Get the current context name
95
101
  */
96
102
  getCurrentContext(): string;
103
+ /**
104
+ * Get the current namespace from the active context, falling back to 'default' if undefined
105
+ */
106
+ getCurrentNamespace(): string | undefined;
97
107
  /**
98
108
  * Get all available contexts
99
109
  */
@@ -131,7 +141,13 @@ export declare class KubernetesClient {
131
141
  get apps(): k8s.AppsV1Api;
132
142
  get batch(): k8s.BatchV1Api;
133
143
  get networking(): k8s.NetworkingV1Api;
144
+ get storage(): k8s.StorageV1Api;
134
145
  get kubeConfig(): k8s.KubeConfig;
146
+ get autoscaling(): k8s.AutoscalingV2Api;
147
+ get policy(): k8s.PolicyV1Api;
148
+ get discovery(): k8s.DiscoveryV1Api;
149
+ get rbac(): k8s.RbacAuthorizationV1Api;
150
+ get authorization(): k8s.AuthorizationV1Api;
135
151
  /**
136
152
  * Get resource operations for working with Kubernetes resources
137
153
  */
@@ -1 +1 @@
1
- {"version":3,"file":"KubernetesClient.d.ts","sourceRoot":"","sources":["../../../src/kubernetes/KubernetesClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KubernetesClient.d.ts","sourceRoot":"","sources":["../../../src/kubernetes/KubernetesClient.ts"],"names":[],"mappings":"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"}