kubeview-mcp 1.0.0 → 1.2.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 (231) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +149 -149
  3. package/TODO.md +2 -0
  4. package/bin/kubeview-mcp.js +1 -1
  5. package/bin/setup.js +37 -3
  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 +25 -107
  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 +24 -101
  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 +114 -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 +24 -98
  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 +85 -51
  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 +39 -13
  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 +8 -3
  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/helm/BaseTool.test.js +4 -4
  179. package/dist/tests/helm/BaseTool.test.js.map +1 -1
  180. package/dist/tests/kubernetes/GetPodMetricsTool.test.js +57 -60
  181. package/dist/tests/kubernetes/GetPodMetricsTool.test.js.map +1 -1
  182. package/dist/tests/kubernetes/RetryStrategy.test.js +6 -0
  183. package/dist/tests/kubernetes/RetryStrategy.test.js.map +1 -1
  184. package/dist/tests/plugins/KubernetesToolsPlugin.test.js +29 -37
  185. package/dist/tests/plugins/KubernetesToolsPlugin.test.js.map +1 -1
  186. package/package.json +2 -2
  187. package/src/cli/run-command.js +2 -2
  188. package/src/index.ts +12 -11
  189. package/src/kubernetes/KubernetesClient.ts +180 -27
  190. package/src/kubernetes/RetryStrategy.ts +7 -0
  191. package/src/kubernetes/resources/ConfigMapOperations.ts +5 -4
  192. package/src/kubernetes/resources/MetricOperations.ts +631 -56
  193. package/src/kubernetes/resources/SecretOperations.ts +16 -6
  194. package/src/plugins/ArgoCDToolsPlugin.ts +36 -132
  195. package/src/plugins/ArgoToolsPlugin.ts +34 -116
  196. package/src/plugins/BaseToolsPlugin.ts +149 -0
  197. package/src/plugins/HelmToolsPlugin.ts +35 -118
  198. package/src/plugins/KubernetesToolsPlugin.ts +101 -70
  199. package/src/server/MCPServer.ts +48 -12
  200. package/src/tools/argo/ArgoListTool.ts +2 -1
  201. package/src/tools/argo/index.ts +0 -1
  202. package/src/tools/argocd/ArgoCDAppTool.ts +171 -0
  203. package/src/tools/argocd/index.ts +1 -5
  204. package/src/tools/helm/HelmGetTool.ts +140 -0
  205. package/src/tools/helm/HelmGetValuesTool.ts +8 -0
  206. package/src/tools/helm/HelmListTool.ts +1 -1
  207. package/src/tools/helm/index.ts +1 -8
  208. package/src/tools/kubernetes/ExecTool.ts +308 -0
  209. package/src/tools/kubernetes/GetContainerLogsTool.ts +2 -2
  210. package/src/tools/kubernetes/GetCronJobsTool.ts +47 -0
  211. package/src/tools/kubernetes/GetDaemonSetsTool.ts +55 -0
  212. package/src/tools/kubernetes/GetEndpointSlicesTool.ts +57 -0
  213. package/src/tools/kubernetes/GetEndpointsTool.ts +53 -0
  214. package/src/tools/kubernetes/GetHPATool.ts +48 -0
  215. package/src/tools/kubernetes/GetJobsTool.ts +54 -0
  216. package/src/tools/kubernetes/GetLimitRangesTool.ts +40 -0
  217. package/src/tools/kubernetes/GetMetricsTool.ts +9 -1
  218. package/src/tools/kubernetes/GetNodesTool.ts +55 -0
  219. package/src/tools/kubernetes/GetPDBTool.ts +48 -0
  220. package/src/tools/kubernetes/GetReplicaSetsTool.ts +51 -0
  221. package/src/tools/kubernetes/GetResourceQuotaTool.ts +55 -0
  222. package/src/tools/kubernetes/GetResourceTool.ts +1233 -27
  223. package/src/tools/kubernetes/GetStatefulSetsTool.ts +55 -0
  224. package/src/tools/kubernetes/KubeListTool.ts +1684 -0
  225. package/src/tools/kubernetes/KubeLogTool.ts +935 -0
  226. package/src/tools/kubernetes/KubeMetricsTool.ts +220 -0
  227. package/src/tools/kubernetes/KubeNetTool.ts +481 -0
  228. package/src/tools/kubernetes/PortForwardTool.ts +307 -0
  229. package/src/tools/kubernetes/index.ts +6 -12
  230. package/src/utils/CliUtils.ts +14 -3
  231. 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 Code/Desktop, and other MCP clients to let you inspect, diagnose, and debug clusters via natural language and without any change 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,182 @@ _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
+ - **MCP_LOG_LEVEL**: `error|warn|info|debug`
139
+ - **MCP_LOG_ENABLE**: `true|1` to enable server file logging (default: disabled)
140
+ - **MCP_LOG_FILE**: Path to server log file (default when enabled: `kubeview-mcp.log`)
141
+ - **MCP_TIMEOUT**: Global per-tool timeout in ms (applies to all tools)
142
+ - CLI timeouts: **MCP_HELM_TIMEOUT**, **MCP_ARGO_TIMEOUT**, **MCP_ARGOCD_TIMEOUT** (ms)
143
+ - CLI executable overrides: **MCP_HELM_PATH**, **MCP_ARGO_PATH**, **MCP_ARGOCD_PATH**
144
+ - Plugin toggles: **MCP_DISABLE_KUBERNETES_PLUGIN**, **MCP_DISABLE_HELM_PLUGIN**, **MCP_DISABLE_ARGO_PLUGIN**, **MCP_DISABLE_ARGOCD_PLUGIN** (`true|1` to disable)
145
+ - Kubernetes options: **MCP_KUBE_CONTEXT**, **MCP_K8S_SKIP_TLS_VERIFY** (`true|1`)
145
146
 
146
- ### Generic Resource Tool
147
+ Example (Cursor `mcp.json`):
147
148
 
148
- | Tool | Description |
149
- | -------------- | ----------------------------------------- |
150
- | `get_resource` | Inspect any Kubernetes resource by GVR |
149
+ ```json
150
+ {
151
+ "mcpServers": {
152
+ "kubeview-mcp": {
153
+ "command": "npx",
154
+ "args": ["-y", "https://github.com/mikhae1/kubeview-mcp"],
155
+ "env": {
156
+ "KUBECONFIG": "$HOME/.kube/config",
157
+ "MCP_LOG_LEVEL": "info",
158
+ "MCP_HELM_TIMEOUT": "45000",
159
+ "MCP_DISABLE_ARGO_PLUGIN": "1"
160
+ }
161
+ }
162
+ }
163
+ }
164
+ ```
151
165
 
152
166
  ---
153
167
 
154
- ## 🪄 Helm Integration
155
-
156
- KubeView MCP ships with a dedicated **HelmToolsPlugin** bringing first-class Helm introspection.
157
-
158
- ### Core Operations
168
+ ## 🔒 Sensitive Data Masking
159
169
 
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 |
170
+ Global masking prevents accidental disclosure of secrets (enabled when any of the flags below are set):
165
171
 
166
- ### Configuration & Values
172
+ - Enable: `MCP_HIDE_SENSITIVE` or `MCP_HIDE_SENSITIVE_DATA` or `MCP_MASK_SENSITIVE_DATA` → `true|1|yes|on`
173
+ - Mask text override: `MCP_SENSITIVE_MASK` (default: `*** FILTERED ***`)
167
174
 
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 |
175
+ Effects:
174
176
 
175
- ### Helm Kubernetes Bridge
177
+ - ConfigMaps: values redacted by key/value heuristics; forcing `skipSanitize=true` on `kube_get` will still be overridden by global masking
178
+ - Secrets: list/describe returns only key names; values are masked
179
+ - Helm: `helm_get` with `what=values` applies masking on returned text
176
180
 
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 |
181
+ ---
181
182
 
182
- #### Example – list all Helm releases
183
+ ## 💡 Examples
183
184
 
184
185
  ```bash
185
- npm run command -- helm_list
186
- ```
187
-
188
- ---
189
- ## Argo Integration
186
+ # Cluster diagnostics overview (no resourceType)
187
+ npm run command -- kube_list
190
188
 
191
- The **ArgoToolsPlugin** provides tools for interacting with Argo Workflows.
189
+ # Pods in a namespace
190
+ npm run command -- kube_list --resourceType=pod --namespace=default
192
191
 
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 |
192
+ # Describe a deployment with events and diagnostics
193
+ npm run command -- kube_get --resourceType=deployment --name=web --namespace=prod
199
194
 
200
- ## ArgoCD Integration
195
+ # Metrics summary with diagnostics
196
+ npm run command -- kube_metrics --includeSummary=true --diagnostics=true
201
197
 
202
- The **ArgoCDToolsPlugin** provides tools for interacting with ArgoCD.
198
+ # Logs from a pod (last 200 lines)
199
+ npm run command -- kube_logs --podName=nginx-123 --namespace=default --tailLines=200
203
200
 
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 |
201
+ # Stream logs across pods by owner with events (10 minutes back)
202
+ npm run command -- kube_log --namespace=prod --ownerKind=Deployment --ownerName=api --since=10m --includeEvents=true --durationSeconds=20
211
203
 
212
- ---
204
+ # Filter by labels and container name, text output
205
+ npm run command -- kube_log --namespace=default --labelSelector='app=db,tier=api' --containerRegex='^(main|sidecar)$' --structure=text --durationSeconds=15
213
206
 
214
- ## 💡 Usage Examples
207
+ # Only errors from JSON logs
208
+ npm run command -- kube_log --namespace=prod --labelSelector='app=my-api' --jsonPaths='[{"path":"level","equals":"error"}]' --messageRegex='timeout|exception' --since=30m --durationSeconds=20
215
209
 
216
- Ask your assistant:
210
+ # Only events (text mode)
211
+ npm run command -- kube_log --namespace=default --includeEvents=true --structure=text --messageRegex='^\\[event\\]' --durationSeconds=10
217
212
 
218
- > *“Show me the details of the **nginx** deployment in the **web** namespace.”*
213
+ # Port-forward service 80 -> local 8080 for 90s
214
+ npm run command -- kube_port --serviceName=my-svc --namespace=default --remotePort=80 --localPort=8080 --timeoutSeconds=90
219
215
 
220
- KubeView MCP will execute `get_resource` under the hood and return a structured JSON response that your assistant converts into a readable answer.
216
+ # Network diagnostics from a pod
217
+ npm run command -- kube_net --sourcePod=api-0 --namespace=prod --targetService=db --runServiceConnectivityTest=true
221
218
 
222
- > *“List all pods in the **default** namespace and show their CPU and memory usage.”*
219
+ # Helm release values (masked)
220
+ npm run command -- helm_get --what=values --releaseName=my-release --namespace=default --allValues=true
223
221
 
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.
222
+ # Argo CD app resources
223
+ npm run command -- argocd_app --operation=resources --appName=my-app --outputFormat=json
224
+ ```
225
225
 
226
226
  ---
227
227
 
@@ -229,23 +229,23 @@ This will trigger the `get_pods` and `get_pod_metrics` tools, combining their ou
229
229
 
230
230
  1. Fork the repo
231
231
  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!
232
+ 3. Commit: `git commit -m "feat: add my awesome feature"`
233
+ 4. Push: `git push origin feat/my-awesome-feature`
234
+ 5. Open a Pull Request
235
235
 
236
- > 💡 Run `npm run lint` and `npm run test` before opening a PR.
236
+ Tip: run `npm run lint` and `npm run test` locally before submitting.
237
237
 
238
238
  ---
239
239
 
240
240
  ## 📄 License
241
241
 
242
- This project is released under the MIT License – see [LICENSE](LICENSE).
242
+ MIT – see `LICENSE`.
243
243
 
244
244
  ---
245
245
 
246
246
  ## 🙏 Acknowledgments
247
247
 
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/)
248
+ - Model Context Protocol SDK
249
+ - Kubernetes JavaScript Client
250
+ - Winston
251
+ - 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 ? {} : { MCP_DISABLE_HELM_PLUGIN: '1' }),
177
+ ...(argoAvailable ? {} : { MCP_DISABLE_ARGO_PLUGIN: '1' }),
178
+ ...(argocdAvailable ? {} : { MCP_DISABLE_ARGOCD_PLUGIN: '1' }),
154
179
  }
155
180
  };
156
181
  }
@@ -202,10 +227,19 @@ class SetupManager {
202
227
  console.log(` Entry point: ${serverConfig.args[0]}`);
203
228
  console.log(` Kubeconfig: ${serverConfig.env.KUBECONFIG}`);
204
229
 
205
- if (serverConfig.env.LOG_LEVEL) {
206
- console.log(` Log level: ${serverConfig.env.LOG_LEVEL}`);
230
+ if (serverConfig.env.MCP_LOG_LEVEL) {
231
+ console.log(` Log level: ${serverConfig.env.MCP_LOG_LEVEL}`);
207
232
  }
208
233
 
234
+ // Show optional plugin status
235
+ const helmDisabled = serverConfig.env.MCP_DISABLE_HELM_PLUGIN === '1' || serverConfig.env.MCP_DISABLE_HELM_PLUGIN === 'true';
236
+ const argoDisabled = serverConfig.env.MCP_DISABLE_ARGO_PLUGIN === '1' || serverConfig.env.MCP_DISABLE_ARGO_PLUGIN === 'true';
237
+ const argocdDisabled = serverConfig.env.MCP_DISABLE_ARGOCD_PLUGIN === '1' || serverConfig.env.MCP_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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"}