kubeview-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/.prettierrc.json +11 -0
  2. package/CHANGELOG.md +55 -0
  3. package/LICENSE +21 -0
  4. package/README.md +251 -0
  5. package/RELEASE.md +154 -0
  6. package/TODO.md +0 -0
  7. package/bin/kubeview-mcp.js +274 -0
  8. package/bin/setup.js +368 -0
  9. package/dist/src/cli/cli.d.ts +3 -0
  10. package/dist/src/cli/cli.d.ts.map +1 -0
  11. package/dist/src/cli/cli.js +23 -0
  12. package/dist/src/cli/cli.js.map +1 -0
  13. package/dist/src/index.d.ts +8 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +45 -0
  16. package/dist/src/index.js.map +1 -0
  17. package/dist/src/kubernetes/BaseResourceOperations.d.ts +155 -0
  18. package/dist/src/kubernetes/BaseResourceOperations.d.ts.map +1 -0
  19. package/dist/src/kubernetes/BaseResourceOperations.js +136 -0
  20. package/dist/src/kubernetes/BaseResourceOperations.js.map +1 -0
  21. package/dist/src/kubernetes/CircuitBreaker.d.ts +182 -0
  22. package/dist/src/kubernetes/CircuitBreaker.d.ts.map +1 -0
  23. package/dist/src/kubernetes/CircuitBreaker.js +369 -0
  24. package/dist/src/kubernetes/CircuitBreaker.js.map +1 -0
  25. package/dist/src/kubernetes/ConnectionManager.d.ts +60 -0
  26. package/dist/src/kubernetes/ConnectionManager.d.ts.map +1 -0
  27. package/dist/src/kubernetes/ConnectionManager.js +77 -0
  28. package/dist/src/kubernetes/ConnectionManager.js.map +1 -0
  29. package/dist/src/kubernetes/ConnectionPool.d.ts +183 -0
  30. package/dist/src/kubernetes/ConnectionPool.d.ts.map +1 -0
  31. package/dist/src/kubernetes/ConnectionPool.js +437 -0
  32. package/dist/src/kubernetes/ConnectionPool.js.map +1 -0
  33. package/dist/src/kubernetes/ErrorHandler.d.ts +172 -0
  34. package/dist/src/kubernetes/ErrorHandler.d.ts.map +1 -0
  35. package/dist/src/kubernetes/ErrorHandler.js +328 -0
  36. package/dist/src/kubernetes/ErrorHandler.js.map +1 -0
  37. package/dist/src/kubernetes/ErrorHandling.d.ts +148 -0
  38. package/dist/src/kubernetes/ErrorHandling.d.ts.map +1 -0
  39. package/dist/src/kubernetes/ErrorHandling.js +304 -0
  40. package/dist/src/kubernetes/ErrorHandling.js.map +1 -0
  41. package/dist/src/kubernetes/KubernetesClient.d.ts +162 -0
  42. package/dist/src/kubernetes/KubernetesClient.d.ts.map +1 -0
  43. package/dist/src/kubernetes/KubernetesClient.js +382 -0
  44. package/dist/src/kubernetes/KubernetesClient.js.map +1 -0
  45. package/dist/src/kubernetes/ResourceOperations.d.ts +69 -0
  46. package/dist/src/kubernetes/ResourceOperations.d.ts.map +1 -0
  47. package/dist/src/kubernetes/ResourceOperations.js +99 -0
  48. package/dist/src/kubernetes/ResourceOperations.js.map +1 -0
  49. package/dist/src/kubernetes/RetryStrategy.d.ts +137 -0
  50. package/dist/src/kubernetes/RetryStrategy.d.ts.map +1 -0
  51. package/dist/src/kubernetes/RetryStrategy.js +277 -0
  52. package/dist/src/kubernetes/RetryStrategy.js.map +1 -0
  53. package/dist/src/kubernetes/RetryableOperation.d.ts +118 -0
  54. package/dist/src/kubernetes/RetryableOperation.d.ts.map +1 -0
  55. package/dist/src/kubernetes/RetryableOperation.js +233 -0
  56. package/dist/src/kubernetes/RetryableOperation.js.map +1 -0
  57. package/dist/src/kubernetes/index.d.ts +18 -0
  58. package/dist/src/kubernetes/index.d.ts.map +1 -0
  59. package/dist/src/kubernetes/index.js +28 -0
  60. package/dist/src/kubernetes/index.js.map +1 -0
  61. package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts +60 -0
  62. package/dist/src/kubernetes/resources/ConfigMapOperations.d.ts.map +1 -0
  63. package/dist/src/kubernetes/resources/ConfigMapOperations.js +306 -0
  64. package/dist/src/kubernetes/resources/ConfigMapOperations.js.map +1 -0
  65. package/dist/src/kubernetes/resources/CustomResourceOperations.d.ts +55 -0
  66. package/dist/src/kubernetes/resources/CustomResourceOperations.d.ts.map +1 -0
  67. package/dist/src/kubernetes/resources/CustomResourceOperations.js +363 -0
  68. package/dist/src/kubernetes/resources/CustomResourceOperations.js.map +1 -0
  69. package/dist/src/kubernetes/resources/DeploymentOperations.d.ts +66 -0
  70. package/dist/src/kubernetes/resources/DeploymentOperations.d.ts.map +1 -0
  71. package/dist/src/kubernetes/resources/DeploymentOperations.js +234 -0
  72. package/dist/src/kubernetes/resources/DeploymentOperations.js.map +1 -0
  73. package/dist/src/kubernetes/resources/IngressOperations.d.ts +60 -0
  74. package/dist/src/kubernetes/resources/IngressOperations.d.ts.map +1 -0
  75. package/dist/src/kubernetes/resources/IngressOperations.js +224 -0
  76. package/dist/src/kubernetes/resources/IngressOperations.js.map +1 -0
  77. package/dist/src/kubernetes/resources/MetricOperations.d.ts +218 -0
  78. package/dist/src/kubernetes/resources/MetricOperations.d.ts.map +1 -0
  79. package/dist/src/kubernetes/resources/MetricOperations.js +893 -0
  80. package/dist/src/kubernetes/resources/MetricOperations.js.map +1 -0
  81. package/dist/src/kubernetes/resources/NamespaceOperations.d.ts +38 -0
  82. package/dist/src/kubernetes/resources/NamespaceOperations.d.ts.map +1 -0
  83. package/dist/src/kubernetes/resources/NamespaceOperations.js +101 -0
  84. package/dist/src/kubernetes/resources/NamespaceOperations.js.map +1 -0
  85. package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.d.ts +109 -0
  86. package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.d.ts.map +1 -0
  87. package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.js +383 -0
  88. package/dist/src/kubernetes/resources/PersistentVolumeClaimOperations.js.map +1 -0
  89. package/dist/src/kubernetes/resources/PersistentVolumeOperations.d.ts +97 -0
  90. package/dist/src/kubernetes/resources/PersistentVolumeOperations.d.ts.map +1 -0
  91. package/dist/src/kubernetes/resources/PersistentVolumeOperations.js +321 -0
  92. package/dist/src/kubernetes/resources/PersistentVolumeOperations.js.map +1 -0
  93. package/dist/src/kubernetes/resources/PodOperations.d.ts +99 -0
  94. package/dist/src/kubernetes/resources/PodOperations.d.ts.map +1 -0
  95. package/dist/src/kubernetes/resources/PodOperations.js +333 -0
  96. package/dist/src/kubernetes/resources/PodOperations.js.map +1 -0
  97. package/dist/src/kubernetes/resources/SecretOperations.d.ts +71 -0
  98. package/dist/src/kubernetes/resources/SecretOperations.d.ts.map +1 -0
  99. package/dist/src/kubernetes/resources/SecretOperations.js +254 -0
  100. package/dist/src/kubernetes/resources/SecretOperations.js.map +1 -0
  101. package/dist/src/kubernetes/resources/ServiceOperations.d.ts +64 -0
  102. package/dist/src/kubernetes/resources/ServiceOperations.d.ts.map +1 -0
  103. package/dist/src/kubernetes/resources/ServiceOperations.js +232 -0
  104. package/dist/src/kubernetes/resources/ServiceOperations.js.map +1 -0
  105. package/dist/src/kubernetes/utils/ResourceUtils.d.ts +238 -0
  106. package/dist/src/kubernetes/utils/ResourceUtils.d.ts.map +1 -0
  107. package/dist/src/kubernetes/utils/ResourceUtils.js +439 -0
  108. package/dist/src/kubernetes/utils/ResourceUtils.js.map +1 -0
  109. package/dist/src/plugins/ArgoCDToolsPlugin.d.ts +45 -0
  110. package/dist/src/plugins/ArgoCDToolsPlugin.d.ts.map +1 -0
  111. package/dist/src/plugins/ArgoCDToolsPlugin.js +155 -0
  112. package/dist/src/plugins/ArgoCDToolsPlugin.js.map +1 -0
  113. package/dist/src/plugins/ArgoToolsPlugin.d.ts +45 -0
  114. package/dist/src/plugins/ArgoToolsPlugin.d.ts.map +1 -0
  115. package/dist/src/plugins/ArgoToolsPlugin.js +149 -0
  116. package/dist/src/plugins/ArgoToolsPlugin.js.map +1 -0
  117. package/dist/src/plugins/HelmToolsPlugin.d.ts +41 -0
  118. package/dist/src/plugins/HelmToolsPlugin.d.ts.map +1 -0
  119. package/dist/src/plugins/HelmToolsPlugin.js +146 -0
  120. package/dist/src/plugins/HelmToolsPlugin.js.map +1 -0
  121. package/dist/src/plugins/KubernetesToolsPlugin.d.ts +44 -0
  122. package/dist/src/plugins/KubernetesToolsPlugin.d.ts.map +1 -0
  123. package/dist/src/plugins/KubernetesToolsPlugin.js +159 -0
  124. package/dist/src/plugins/KubernetesToolsPlugin.js.map +1 -0
  125. package/dist/src/plugins/SamplePlugin.d.ts +12 -0
  126. package/dist/src/plugins/SamplePlugin.d.ts.map +1 -0
  127. package/dist/src/plugins/SamplePlugin.js +51 -0
  128. package/dist/src/plugins/SamplePlugin.js.map +1 -0
  129. package/dist/src/plugins/index.d.ts +5 -0
  130. package/dist/src/plugins/index.d.ts.map +1 -0
  131. package/dist/src/plugins/index.js +5 -0
  132. package/dist/src/plugins/index.js.map +1 -0
  133. package/dist/src/server/MCPServer.d.ts +93 -0
  134. package/dist/src/server/MCPServer.d.ts.map +1 -0
  135. package/dist/src/server/MCPServer.js +398 -0
  136. package/dist/src/server/MCPServer.js.map +1 -0
  137. package/dist/src/tools/argo/ArgoCronListTool.d.ts +10 -0
  138. package/dist/src/tools/argo/ArgoCronListTool.d.ts.map +1 -0
  139. package/dist/src/tools/argo/ArgoCronListTool.js +70 -0
  140. package/dist/src/tools/argo/ArgoCronListTool.js.map +1 -0
  141. package/dist/src/tools/argo/ArgoGetTool.d.ts +10 -0
  142. package/dist/src/tools/argo/ArgoGetTool.d.ts.map +1 -0
  143. package/dist/src/tools/argo/ArgoGetTool.js +80 -0
  144. package/dist/src/tools/argo/ArgoGetTool.js.map +1 -0
  145. package/dist/src/tools/argo/ArgoListTool.d.ts +10 -0
  146. package/dist/src/tools/argo/ArgoListTool.d.ts.map +1 -0
  147. package/dist/src/tools/argo/ArgoListTool.js +133 -0
  148. package/dist/src/tools/argo/ArgoListTool.js.map +1 -0
  149. package/dist/src/tools/argo/ArgoLogsTool.d.ts +10 -0
  150. package/dist/src/tools/argo/ArgoLogsTool.d.ts.map +1 -0
  151. package/dist/src/tools/argo/ArgoLogsTool.js +117 -0
  152. package/dist/src/tools/argo/ArgoLogsTool.js.map +1 -0
  153. package/dist/src/tools/argo/BaseTool.d.ts +60 -0
  154. package/dist/src/tools/argo/BaseTool.d.ts.map +1 -0
  155. package/dist/src/tools/argo/BaseTool.js +51 -0
  156. package/dist/src/tools/argo/BaseTool.js.map +1 -0
  157. package/dist/src/tools/argo/index.d.ts +7 -0
  158. package/dist/src/tools/argo/index.d.ts.map +1 -0
  159. package/dist/src/tools/argo/index.js +6 -0
  160. package/dist/src/tools/argo/index.js.map +1 -0
  161. package/dist/src/tools/argocd/ArgoCDAppGetTool.d.ts +10 -0
  162. package/dist/src/tools/argocd/ArgoCDAppGetTool.d.ts.map +1 -0
  163. package/dist/src/tools/argocd/ArgoCDAppGetTool.js +97 -0
  164. package/dist/src/tools/argocd/ArgoCDAppGetTool.js.map +1 -0
  165. package/dist/src/tools/argocd/ArgoCDAppHistoryTool.d.ts +10 -0
  166. package/dist/src/tools/argocd/ArgoCDAppHistoryTool.d.ts.map +1 -0
  167. package/dist/src/tools/argocd/ArgoCDAppHistoryTool.js +80 -0
  168. package/dist/src/tools/argocd/ArgoCDAppHistoryTool.js.map +1 -0
  169. package/dist/src/tools/argocd/ArgoCDAppListTool.d.ts +10 -0
  170. package/dist/src/tools/argocd/ArgoCDAppListTool.d.ts.map +1 -0
  171. package/dist/src/tools/argocd/ArgoCDAppListTool.js +128 -0
  172. package/dist/src/tools/argocd/ArgoCDAppListTool.js.map +1 -0
  173. package/dist/src/tools/argocd/ArgoCDAppLogsTool.d.ts +10 -0
  174. package/dist/src/tools/argocd/ArgoCDAppLogsTool.d.ts.map +1 -0
  175. package/dist/src/tools/argocd/ArgoCDAppLogsTool.js +143 -0
  176. package/dist/src/tools/argocd/ArgoCDAppLogsTool.js.map +1 -0
  177. package/dist/src/tools/argocd/ArgoCDAppResourcesTool.d.ts +10 -0
  178. package/dist/src/tools/argocd/ArgoCDAppResourcesTool.d.ts.map +1 -0
  179. package/dist/src/tools/argocd/ArgoCDAppResourcesTool.js +123 -0
  180. package/dist/src/tools/argocd/ArgoCDAppResourcesTool.js.map +1 -0
  181. package/dist/src/tools/argocd/BaseTool.d.ts +71 -0
  182. package/dist/src/tools/argocd/BaseTool.d.ts.map +1 -0
  183. package/dist/src/tools/argocd/BaseTool.js +62 -0
  184. package/dist/src/tools/argocd/BaseTool.js.map +1 -0
  185. package/dist/src/tools/argocd/index.d.ts +8 -0
  186. package/dist/src/tools/argocd/index.d.ts.map +1 -0
  187. package/dist/src/tools/argocd/index.js +7 -0
  188. package/dist/src/tools/argocd/index.js.map +1 -0
  189. package/dist/src/tools/helm/BaseTool.d.ts +51 -0
  190. package/dist/src/tools/helm/BaseTool.d.ts.map +1 -0
  191. package/dist/src/tools/helm/BaseTool.js +42 -0
  192. package/dist/src/tools/helm/BaseTool.js.map +1 -0
  193. package/dist/src/tools/helm/HelmGetHooksTool.d.ts +10 -0
  194. package/dist/src/tools/helm/HelmGetHooksTool.d.ts.map +1 -0
  195. package/dist/src/tools/helm/HelmGetHooksTool.js +38 -0
  196. package/dist/src/tools/helm/HelmGetHooksTool.js.map +1 -0
  197. package/dist/src/tools/helm/HelmGetManifestTool.d.ts +10 -0
  198. package/dist/src/tools/helm/HelmGetManifestTool.d.ts.map +1 -0
  199. package/dist/src/tools/helm/HelmGetManifestTool.js +38 -0
  200. package/dist/src/tools/helm/HelmGetManifestTool.js.map +1 -0
  201. package/dist/src/tools/helm/HelmGetNotesTool.d.ts +10 -0
  202. package/dist/src/tools/helm/HelmGetNotesTool.d.ts.map +1 -0
  203. package/dist/src/tools/helm/HelmGetNotesTool.js +38 -0
  204. package/dist/src/tools/helm/HelmGetNotesTool.js.map +1 -0
  205. package/dist/src/tools/helm/HelmGetResourcesTool.d.ts +13 -0
  206. package/dist/src/tools/helm/HelmGetResourcesTool.d.ts.map +1 -0
  207. package/dist/src/tools/helm/HelmGetResourcesTool.js +124 -0
  208. package/dist/src/tools/helm/HelmGetResourcesTool.js.map +1 -0
  209. package/dist/src/tools/helm/HelmGetValuesTool.d.ts +10 -0
  210. package/dist/src/tools/helm/HelmGetValuesTool.d.ts.map +1 -0
  211. package/dist/src/tools/helm/HelmGetValuesTool.js +54 -0
  212. package/dist/src/tools/helm/HelmGetValuesTool.js.map +1 -0
  213. package/dist/src/tools/helm/HelmHistoryTool.d.ts +10 -0
  214. package/dist/src/tools/helm/HelmHistoryTool.d.ts.map +1 -0
  215. package/dist/src/tools/helm/HelmHistoryTool.js +49 -0
  216. package/dist/src/tools/helm/HelmHistoryTool.js.map +1 -0
  217. package/dist/src/tools/helm/HelmListTool.d.ts +10 -0
  218. package/dist/src/tools/helm/HelmListTool.d.ts.map +1 -0
  219. package/dist/src/tools/helm/HelmListTool.js +107 -0
  220. package/dist/src/tools/helm/HelmListTool.js.map +1 -0
  221. package/dist/src/tools/helm/HelmListWithResourcesTool.d.ts +14 -0
  222. package/dist/src/tools/helm/HelmListWithResourcesTool.d.ts.map +1 -0
  223. package/dist/src/tools/helm/HelmListWithResourcesTool.js +175 -0
  224. package/dist/src/tools/helm/HelmListWithResourcesTool.js.map +1 -0
  225. package/dist/src/tools/helm/HelmStatusTool.d.ts +10 -0
  226. package/dist/src/tools/helm/HelmStatusTool.d.ts.map +1 -0
  227. package/dist/src/tools/helm/HelmStatusTool.js +54 -0
  228. package/dist/src/tools/helm/HelmStatusTool.js.map +1 -0
  229. package/dist/src/tools/helm/index.d.ts +12 -0
  230. package/dist/src/tools/helm/index.d.ts.map +1 -0
  231. package/dist/src/tools/helm/index.js +11 -0
  232. package/dist/src/tools/helm/index.js.map +1 -0
  233. package/dist/src/tools/kubernetes/BaseTool.d.ts +48 -0
  234. package/dist/src/tools/kubernetes/BaseTool.d.ts.map +1 -0
  235. package/dist/src/tools/kubernetes/BaseTool.js +55 -0
  236. package/dist/src/tools/kubernetes/BaseTool.js.map +1 -0
  237. package/dist/src/tools/kubernetes/GetConfigMapTool.d.ts +11 -0
  238. package/dist/src/tools/kubernetes/GetConfigMapTool.d.ts.map +1 -0
  239. package/dist/src/tools/kubernetes/GetConfigMapTool.js +28 -0
  240. package/dist/src/tools/kubernetes/GetConfigMapTool.js.map +1 -0
  241. package/dist/src/tools/kubernetes/GetContainerLogsTool.d.ts +15 -0
  242. package/dist/src/tools/kubernetes/GetContainerLogsTool.d.ts.map +1 -0
  243. package/dist/src/tools/kubernetes/GetContainerLogsTool.js +119 -0
  244. package/dist/src/tools/kubernetes/GetContainerLogsTool.js.map +1 -0
  245. package/dist/src/tools/kubernetes/GetDeploymentsTool.d.ts +11 -0
  246. package/dist/src/tools/kubernetes/GetDeploymentsTool.d.ts.map +1 -0
  247. package/dist/src/tools/kubernetes/GetDeploymentsTool.js +30 -0
  248. package/dist/src/tools/kubernetes/GetDeploymentsTool.js.map +1 -0
  249. package/dist/src/tools/kubernetes/GetEventsTool.d.ts +11 -0
  250. package/dist/src/tools/kubernetes/GetEventsTool.d.ts.map +1 -0
  251. package/dist/src/tools/kubernetes/GetEventsTool.js +123 -0
  252. package/dist/src/tools/kubernetes/GetEventsTool.js.map +1 -0
  253. package/dist/src/tools/kubernetes/GetIngressTool.d.ts +11 -0
  254. package/dist/src/tools/kubernetes/GetIngressTool.d.ts.map +1 -0
  255. package/dist/src/tools/kubernetes/GetIngressTool.js +35 -0
  256. package/dist/src/tools/kubernetes/GetIngressTool.js.map +1 -0
  257. package/dist/src/tools/kubernetes/GetMetricsTool.d.ts +11 -0
  258. package/dist/src/tools/kubernetes/GetMetricsTool.d.ts.map +1 -0
  259. package/dist/src/tools/kubernetes/GetMetricsTool.js +40 -0
  260. package/dist/src/tools/kubernetes/GetMetricsTool.js.map +1 -0
  261. package/dist/src/tools/kubernetes/GetNamespacesTool.d.ts +11 -0
  262. package/dist/src/tools/kubernetes/GetNamespacesTool.d.ts.map +1 -0
  263. package/dist/src/tools/kubernetes/GetNamespacesTool.js +33 -0
  264. package/dist/src/tools/kubernetes/GetNamespacesTool.js.map +1 -0
  265. package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.d.ts +11 -0
  266. package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.d.ts.map +1 -0
  267. package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.js +92 -0
  268. package/dist/src/tools/kubernetes/GetPersistentVolumeClaimsTool.js.map +1 -0
  269. package/dist/src/tools/kubernetes/GetPersistentVolumesTool.d.ts +11 -0
  270. package/dist/src/tools/kubernetes/GetPersistentVolumesTool.d.ts.map +1 -0
  271. package/dist/src/tools/kubernetes/GetPersistentVolumesTool.js +88 -0
  272. package/dist/src/tools/kubernetes/GetPersistentVolumesTool.js.map +1 -0
  273. package/dist/src/tools/kubernetes/GetPodMetricsTool.d.ts +11 -0
  274. package/dist/src/tools/kubernetes/GetPodMetricsTool.d.ts.map +1 -0
  275. package/dist/src/tools/kubernetes/GetPodMetricsTool.js +100 -0
  276. package/dist/src/tools/kubernetes/GetPodMetricsTool.js.map +1 -0
  277. package/dist/src/tools/kubernetes/GetPodsTool.d.ts +11 -0
  278. package/dist/src/tools/kubernetes/GetPodsTool.d.ts.map +1 -0
  279. package/dist/src/tools/kubernetes/GetPodsTool.js +35 -0
  280. package/dist/src/tools/kubernetes/GetPodsTool.js.map +1 -0
  281. package/dist/src/tools/kubernetes/GetResourceTool.d.ts +12 -0
  282. package/dist/src/tools/kubernetes/GetResourceTool.d.ts.map +1 -0
  283. package/dist/src/tools/kubernetes/GetResourceTool.js +79 -0
  284. package/dist/src/tools/kubernetes/GetResourceTool.js.map +1 -0
  285. package/dist/src/tools/kubernetes/GetSecretsTool.d.ts +11 -0
  286. package/dist/src/tools/kubernetes/GetSecretsTool.d.ts.map +1 -0
  287. package/dist/src/tools/kubernetes/GetSecretsTool.js +49 -0
  288. package/dist/src/tools/kubernetes/GetSecretsTool.js.map +1 -0
  289. package/dist/src/tools/kubernetes/GetServicesTool.d.ts +11 -0
  290. package/dist/src/tools/kubernetes/GetServicesTool.d.ts.map +1 -0
  291. package/dist/src/tools/kubernetes/GetServicesTool.js +35 -0
  292. package/dist/src/tools/kubernetes/GetServicesTool.js.map +1 -0
  293. package/dist/src/tools/kubernetes/index.d.ts +17 -0
  294. package/dist/src/tools/kubernetes/index.d.ts.map +1 -0
  295. package/dist/src/tools/kubernetes/index.js +16 -0
  296. package/dist/src/tools/kubernetes/index.js.map +1 -0
  297. package/dist/src/utils/CliUtils.d.ts +24 -0
  298. package/dist/src/utils/CliUtils.d.ts.map +1 -0
  299. package/dist/src/utils/CliUtils.js +159 -0
  300. package/dist/src/utils/CliUtils.js.map +1 -0
  301. package/dist/tests/__mocks__/@kubernetes/client-node.d.ts +34 -0
  302. package/dist/tests/__mocks__/@kubernetes/client-node.d.ts.map +1 -0
  303. package/dist/tests/__mocks__/@kubernetes/client-node.js +20 -0
  304. package/dist/tests/__mocks__/@kubernetes/client-node.js.map +1 -0
  305. package/dist/tests/argo/ArgoGetTool.test.d.ts +2 -0
  306. package/dist/tests/argo/ArgoGetTool.test.d.ts.map +1 -0
  307. package/dist/tests/argo/ArgoGetTool.test.js +141 -0
  308. package/dist/tests/argo/ArgoGetTool.test.js.map +1 -0
  309. package/dist/tests/helm/BaseTool.test.d.ts +2 -0
  310. package/dist/tests/helm/BaseTool.test.d.ts.map +1 -0
  311. package/dist/tests/helm/BaseTool.test.js +241 -0
  312. package/dist/tests/helm/BaseTool.test.js.map +1 -0
  313. package/dist/tests/index.test.d.ts +2 -0
  314. package/dist/tests/index.test.d.ts.map +1 -0
  315. package/dist/tests/index.test.js +7 -0
  316. package/dist/tests/index.test.js.map +1 -0
  317. package/dist/tests/kubernetes/ConfigMapOperations.test.d.ts +2 -0
  318. package/dist/tests/kubernetes/ConfigMapOperations.test.d.ts.map +1 -0
  319. package/dist/tests/kubernetes/ConfigMapOperations.test.js +460 -0
  320. package/dist/tests/kubernetes/ConfigMapOperations.test.js.map +1 -0
  321. package/dist/tests/kubernetes/ConnectionManager.test.d.ts +2 -0
  322. package/dist/tests/kubernetes/ConnectionManager.test.d.ts.map +1 -0
  323. package/dist/tests/kubernetes/ConnectionManager.test.js +97 -0
  324. package/dist/tests/kubernetes/ConnectionManager.test.js.map +1 -0
  325. package/dist/tests/kubernetes/ConnectionPool.test.d.ts +2 -0
  326. package/dist/tests/kubernetes/ConnectionPool.test.d.ts.map +1 -0
  327. package/dist/tests/kubernetes/ConnectionPool.test.js +328 -0
  328. package/dist/tests/kubernetes/ConnectionPool.test.js.map +1 -0
  329. package/dist/tests/kubernetes/DeploymentOperations.test.d.ts +2 -0
  330. package/dist/tests/kubernetes/DeploymentOperations.test.d.ts.map +1 -0
  331. package/dist/tests/kubernetes/DeploymentOperations.test.js +196 -0
  332. package/dist/tests/kubernetes/DeploymentOperations.test.js.map +1 -0
  333. package/dist/tests/kubernetes/ErrorHandling.test.d.ts +2 -0
  334. package/dist/tests/kubernetes/ErrorHandling.test.d.ts.map +1 -0
  335. package/dist/tests/kubernetes/ErrorHandling.test.js +329 -0
  336. package/dist/tests/kubernetes/ErrorHandling.test.js.map +1 -0
  337. package/dist/tests/kubernetes/GetPodMetricsTool.test.d.ts +2 -0
  338. package/dist/tests/kubernetes/GetPodMetricsTool.test.d.ts.map +1 -0
  339. package/dist/tests/kubernetes/GetPodMetricsTool.test.js +150 -0
  340. package/dist/tests/kubernetes/GetPodMetricsTool.test.js.map +1 -0
  341. package/dist/tests/kubernetes/KubernetesClient.test.d.ts +2 -0
  342. package/dist/tests/kubernetes/KubernetesClient.test.d.ts.map +1 -0
  343. package/dist/tests/kubernetes/KubernetesClient.test.js +371 -0
  344. package/dist/tests/kubernetes/KubernetesClient.test.js.map +1 -0
  345. package/dist/tests/kubernetes/MetricOperations.parsing.test.d.ts +2 -0
  346. package/dist/tests/kubernetes/MetricOperations.parsing.test.d.ts.map +1 -0
  347. package/dist/tests/kubernetes/MetricOperations.parsing.test.js +49 -0
  348. package/dist/tests/kubernetes/MetricOperations.parsing.test.js.map +1 -0
  349. package/dist/tests/kubernetes/NamespaceOperations.test.d.ts +2 -0
  350. package/dist/tests/kubernetes/NamespaceOperations.test.d.ts.map +1 -0
  351. package/dist/tests/kubernetes/NamespaceOperations.test.js +115 -0
  352. package/dist/tests/kubernetes/NamespaceOperations.test.js.map +1 -0
  353. package/dist/tests/kubernetes/PodOperations.test.d.ts +2 -0
  354. package/dist/tests/kubernetes/PodOperations.test.d.ts.map +1 -0
  355. package/dist/tests/kubernetes/PodOperations.test.js +209 -0
  356. package/dist/tests/kubernetes/PodOperations.test.js.map +1 -0
  357. package/dist/tests/kubernetes/RetryStrategy.test.d.ts +2 -0
  358. package/dist/tests/kubernetes/RetryStrategy.test.d.ts.map +1 -0
  359. package/dist/tests/kubernetes/RetryStrategy.test.js +419 -0
  360. package/dist/tests/kubernetes/RetryStrategy.test.js.map +1 -0
  361. package/dist/tests/kubernetes/ServiceOperations.test.d.ts +2 -0
  362. package/dist/tests/kubernetes/ServiceOperations.test.d.ts.map +1 -0
  363. package/dist/tests/kubernetes/ServiceOperations.test.js +159 -0
  364. package/dist/tests/kubernetes/ServiceOperations.test.js.map +1 -0
  365. package/dist/tests/plugins/KubernetesToolsPlugin.test.d.ts +2 -0
  366. package/dist/tests/plugins/KubernetesToolsPlugin.test.d.ts.map +1 -0
  367. package/dist/tests/plugins/KubernetesToolsPlugin.test.js +153 -0
  368. package/dist/tests/plugins/KubernetesToolsPlugin.test.js.map +1 -0
  369. package/dist/tests/server/MCPServer.integration.test.d.ts +2 -0
  370. package/dist/tests/server/MCPServer.integration.test.d.ts.map +1 -0
  371. package/dist/tests/server/MCPServer.integration.test.js +244 -0
  372. package/dist/tests/server/MCPServer.integration.test.js.map +1 -0
  373. package/dist/tests/server/MCPServer.test.d.ts +2 -0
  374. package/dist/tests/server/MCPServer.test.d.ts.map +1 -0
  375. package/dist/tests/server/MCPServer.test.js +257 -0
  376. package/dist/tests/server/MCPServer.test.js.map +1 -0
  377. package/package.json +85 -0
  378. package/src/cli/cli.ts +25 -0
  379. package/src/cli/run-command.js +391 -0
  380. package/src/index.ts +46 -0
  381. package/src/kubernetes/BaseResourceOperations.ts +286 -0
  382. package/src/kubernetes/CircuitBreaker.ts +485 -0
  383. package/src/kubernetes/ConnectionManager.ts +114 -0
  384. package/src/kubernetes/ConnectionPool.ts +551 -0
  385. package/src/kubernetes/ErrorHandler.ts +436 -0
  386. package/src/kubernetes/ErrorHandling.ts +401 -0
  387. package/src/kubernetes/KubernetesClient.ts +500 -0
  388. package/src/kubernetes/README.md +349 -0
  389. package/src/kubernetes/ResourceOperations.ts +116 -0
  390. package/src/kubernetes/RetryStrategy.ts +365 -0
  391. package/src/kubernetes/RetryableOperation.ts +313 -0
  392. package/src/kubernetes/docs/ResourceOperations.md +606 -0
  393. package/src/kubernetes/index.ts +116 -0
  394. package/src/kubernetes/resources/ConfigMapOperations.ts +367 -0
  395. package/src/kubernetes/resources/CustomResourceOperations.ts +392 -0
  396. package/src/kubernetes/resources/DeploymentOperations.ts +294 -0
  397. package/src/kubernetes/resources/IngressOperations.ts +277 -0
  398. package/src/kubernetes/resources/MetricOperations.ts +1159 -0
  399. package/src/kubernetes/resources/NamespaceOperations.ts +129 -0
  400. package/src/kubernetes/resources/PersistentVolumeClaimOperations.ts +516 -0
  401. package/src/kubernetes/resources/PersistentVolumeOperations.ts +438 -0
  402. package/src/kubernetes/resources/PodOperations.ts +417 -0
  403. package/src/kubernetes/resources/SecretOperations.ts +304 -0
  404. package/src/kubernetes/resources/ServiceOperations.ts +283 -0
  405. package/src/kubernetes/utils/ResourceUtils.ts +553 -0
  406. package/src/plugins/ArgoCDToolsPlugin.ts +189 -0
  407. package/src/plugins/ArgoToolsPlugin.ts +180 -0
  408. package/src/plugins/HelmToolsPlugin.ts +180 -0
  409. package/src/plugins/KubernetesToolsPlugin.ts +198 -0
  410. package/src/plugins/SamplePlugin.ts +60 -0
  411. package/src/plugins/index.ts +4 -0
  412. package/src/server/MCPServer.ts +500 -0
  413. package/src/tools/argo/ArgoCronListTool.ts +78 -0
  414. package/src/tools/argo/ArgoGetTool.ts +91 -0
  415. package/src/tools/argo/ArgoListTool.ts +143 -0
  416. package/src/tools/argo/ArgoLogsTool.ts +131 -0
  417. package/src/tools/argo/BaseTool.ts +69 -0
  418. package/src/tools/argo/index.ts +6 -0
  419. package/src/tools/argocd/ArgoCDAppGetTool.ts +109 -0
  420. package/src/tools/argocd/ArgoCDAppHistoryTool.ts +91 -0
  421. package/src/tools/argocd/ArgoCDAppListTool.ts +144 -0
  422. package/src/tools/argocd/ArgoCDAppLogsTool.ts +162 -0
  423. package/src/tools/argocd/ArgoCDAppResourcesTool.ts +139 -0
  424. package/src/tools/argocd/BaseTool.ts +83 -0
  425. package/src/tools/argocd/index.ts +7 -0
  426. package/src/tools/helm/BaseTool.ts +60 -0
  427. package/src/tools/helm/HelmGetHooksTool.ts +44 -0
  428. package/src/tools/helm/HelmGetManifestTool.ts +44 -0
  429. package/src/tools/helm/HelmGetNotesTool.ts +44 -0
  430. package/src/tools/helm/HelmGetResourcesTool.ts +140 -0
  431. package/src/tools/helm/HelmGetValuesTool.ts +62 -0
  432. package/src/tools/helm/HelmHistoryTool.ts +56 -0
  433. package/src/tools/helm/HelmListTool.ts +107 -0
  434. package/src/tools/helm/HelmListWithResourcesTool.ts +194 -0
  435. package/src/tools/helm/HelmStatusTool.ts +62 -0
  436. package/src/tools/helm/index.ts +11 -0
  437. package/src/tools/kubernetes/BaseTool.ts +76 -0
  438. package/src/tools/kubernetes/GetConfigMapTool.ts +33 -0
  439. package/src/tools/kubernetes/GetContainerLogsTool.ts +140 -0
  440. package/src/tools/kubernetes/GetDeploymentsTool.ts +33 -0
  441. package/src/tools/kubernetes/GetEventsTool.ts +133 -0
  442. package/src/tools/kubernetes/GetIngressTool.ts +39 -0
  443. package/src/tools/kubernetes/GetMetricsTool.ts +53 -0
  444. package/src/tools/kubernetes/GetNamespacesTool.ts +36 -0
  445. package/src/tools/kubernetes/GetPersistentVolumeClaimsTool.ts +113 -0
  446. package/src/tools/kubernetes/GetPersistentVolumesTool.ts +107 -0
  447. package/src/tools/kubernetes/GetPodMetricsTool.ts +113 -0
  448. package/src/tools/kubernetes/GetPodsTool.ts +39 -0
  449. package/src/tools/kubernetes/GetResourceTool.ts +90 -0
  450. package/src/tools/kubernetes/GetSecretsTool.ts +55 -0
  451. package/src/tools/kubernetes/GetServicesTool.ts +39 -0
  452. package/src/tools/kubernetes/index.ts +16 -0
  453. package/src/utils/CliUtils.ts +207 -0
  454. package/tsconfig.json +36 -0
@@ -0,0 +1,140 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { HelmBaseTool, HelmCommonSchemas, executeHelmCommand } from './BaseTool.js';
3
+
4
+ /**
5
+ * Get Kubernetes resources for a Helm release using helm get manifest and parse them
6
+ */
7
+ export class HelmGetResourcesTool implements HelmBaseTool {
8
+ tool: Tool = {
9
+ name: 'helm_get_resources',
10
+ description: 'Get Kubernetes resources created by a Helm release with resource analysis',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ releaseName: HelmCommonSchemas.releaseName,
15
+ namespace: HelmCommonSchemas.namespace,
16
+ revision: HelmCommonSchemas.revision,
17
+ resourceType: {
18
+ type: 'string',
19
+ description:
20
+ 'Filter by specific Kubernetes resource type (e.g., Pod, Service, Deployment)',
21
+ optional: true,
22
+ },
23
+ },
24
+ required: ['releaseName'],
25
+ },
26
+ };
27
+
28
+ async execute(params: any): Promise<any> {
29
+ try {
30
+ const args = ['get', 'manifest', params.releaseName];
31
+
32
+ // Add namespace parameter
33
+ if (params.namespace) {
34
+ args.push('--namespace', params.namespace);
35
+ }
36
+
37
+ // Add revision parameter
38
+ if (params.revision) {
39
+ args.push('--revision', params.revision.toString());
40
+ }
41
+
42
+ const result = await executeHelmCommand(args);
43
+
44
+ // Parse the YAML manifest to extract resource information
45
+ const manifestText = result.output || result;
46
+ const resources = this.parseKubernetesManifest(manifestText, params.resourceType);
47
+
48
+ return {
49
+ releaseName: params.releaseName,
50
+ namespace: params.namespace,
51
+ revision: params.revision,
52
+ totalResources: resources.length,
53
+ resourceTypes: this.getResourceTypeSummary(resources),
54
+ resources,
55
+ };
56
+ } catch (error: any) {
57
+ throw new Error(
58
+ `Failed to get resources for Helm release '${params.releaseName}': ${error.message}`,
59
+ );
60
+ }
61
+ }
62
+
63
+ private parseKubernetesManifest(manifestText: string, filterType?: string): any[] {
64
+ const resources: any[] = [];
65
+
66
+ if (!manifestText || typeof manifestText !== 'string') {
67
+ return resources;
68
+ }
69
+
70
+ // Split by YAML document separator
71
+ const documents = manifestText.split('---').filter((doc) => doc.trim());
72
+
73
+ for (const doc of documents) {
74
+ try {
75
+ // Simple YAML parsing for basic resource information
76
+ const resource = this.parseYamlDocument(doc);
77
+ if (resource && resource.kind && resource.metadata) {
78
+ // Filter by resource type if specified
79
+ if (!filterType || resource.kind.toLowerCase() === filterType.toLowerCase()) {
80
+ resources.push({
81
+ kind: resource.kind,
82
+ apiVersion: resource.apiVersion,
83
+ name: resource.metadata.name,
84
+ namespace: resource.metadata.namespace,
85
+ labels: resource.metadata.labels || {},
86
+ annotations: resource.metadata.annotations || {},
87
+ });
88
+ }
89
+ }
90
+ } catch {
91
+ // Skip invalid YAML documents
92
+ continue;
93
+ }
94
+ }
95
+
96
+ return resources;
97
+ }
98
+
99
+ private parseYamlDocument(yamlText: string): any {
100
+ // Simple YAML parser for basic fields - this is a basic implementation
101
+ // In a production environment, you'd want to use a proper YAML library
102
+ const lines = yamlText.trim().split('\n');
103
+ const resource: any = { metadata: {} };
104
+
105
+ for (const line of lines) {
106
+ const trimmed = line.trim();
107
+ if (!trimmed || trimmed.startsWith('#')) continue;
108
+
109
+ if (trimmed.startsWith('kind:')) {
110
+ resource.kind = trimmed.split(':')[1].trim();
111
+ } else if (trimmed.startsWith('apiVersion:')) {
112
+ resource.apiVersion = trimmed.split(':')[1].trim();
113
+ } else if (trimmed.includes('name:') && !trimmed.includes('namespace:')) {
114
+ // Try to capture metadata.name
115
+ const match = trimmed.match(/name:\s*(.+)/);
116
+ if (match) {
117
+ resource.metadata.name = match[1].trim();
118
+ }
119
+ } else if (trimmed.includes('namespace:')) {
120
+ const match = trimmed.match(/namespace:\s*(.+)/);
121
+ if (match) {
122
+ resource.metadata.namespace = match[1].trim();
123
+ }
124
+ }
125
+ }
126
+
127
+ return resource.kind ? resource : null;
128
+ }
129
+
130
+ private getResourceTypeSummary(resources: any[]): Record<string, number> {
131
+ const summary: Record<string, number> = {};
132
+
133
+ for (const resource of resources) {
134
+ const kind = resource.kind;
135
+ summary[kind] = (summary[kind] || 0) + 1;
136
+ }
137
+
138
+ return summary;
139
+ }
140
+ }
@@ -0,0 +1,62 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { HelmBaseTool, HelmCommonSchemas, executeHelmCommand } from './BaseTool.js';
3
+
4
+ /**
5
+ * Get values for a Helm release
6
+ */
7
+ export class HelmGetValuesTool implements HelmBaseTool {
8
+ tool: Tool = {
9
+ name: 'helm_get_values',
10
+ description: 'Get the values file for a named release (similar to `helm get values`)',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ releaseName: HelmCommonSchemas.releaseName,
15
+ namespace: HelmCommonSchemas.namespace,
16
+ revision: HelmCommonSchemas.revision,
17
+ outputFormat: {
18
+ ...HelmCommonSchemas.outputFormat,
19
+ default: 'yaml',
20
+ },
21
+ allValues: {
22
+ type: 'boolean',
23
+ description: 'Dump all (computed) values, not just the values provided to the chart',
24
+ optional: true,
25
+ },
26
+ },
27
+ required: ['releaseName'],
28
+ },
29
+ };
30
+
31
+ async execute(params: any): Promise<any> {
32
+ try {
33
+ const args = ['get', 'values', params.releaseName];
34
+
35
+ // Add namespace parameter
36
+ if (params.namespace) {
37
+ args.push('--namespace', params.namespace);
38
+ }
39
+
40
+ // Add revision parameter
41
+ if (params.revision) {
42
+ args.push('--revision', params.revision.toString());
43
+ }
44
+
45
+ // Add output format
46
+ const outputFormat = params.outputFormat || 'yaml';
47
+ args.push('--output', outputFormat);
48
+
49
+ // Add all values flag
50
+ if (params.allValues) {
51
+ args.push('--all');
52
+ }
53
+
54
+ const result = await executeHelmCommand(args);
55
+ return result;
56
+ } catch (error: any) {
57
+ throw new Error(
58
+ `Failed to get values for Helm release '${params.releaseName}': ${error.message}`,
59
+ );
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,56 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { HelmBaseTool, HelmCommonSchemas, executeHelmCommand } from './BaseTool.js';
3
+
4
+ /**
5
+ * Get history of a Helm release
6
+ */
7
+ export class HelmHistoryTool implements HelmBaseTool {
8
+ tool: Tool = {
9
+ name: 'helm_history',
10
+ description: 'Fetch release history for a given release (similar to `helm history`)',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ releaseName: HelmCommonSchemas.releaseName,
15
+ namespace: HelmCommonSchemas.namespace,
16
+ outputFormat: {
17
+ ...HelmCommonSchemas.outputFormat,
18
+ default: 'json',
19
+ },
20
+ maxRevisions: {
21
+ type: 'number',
22
+ description: 'Maximum number of revisions to return (default: 256)',
23
+ optional: true,
24
+ },
25
+ },
26
+ required: ['releaseName'],
27
+ },
28
+ };
29
+
30
+ async execute(params: any): Promise<any> {
31
+ try {
32
+ const args = ['history', params.releaseName];
33
+
34
+ // Add namespace parameter
35
+ if (params.namespace) {
36
+ args.push('--namespace', params.namespace);
37
+ }
38
+
39
+ // Add output format
40
+ const outputFormat = params.outputFormat || 'json';
41
+ args.push('--output', outputFormat);
42
+
43
+ // Add max revisions
44
+ if (params.maxRevisions) {
45
+ args.push('--max', params.maxRevisions.toString());
46
+ }
47
+
48
+ const result = await executeHelmCommand(args);
49
+ return result;
50
+ } catch (error: any) {
51
+ throw new Error(
52
+ `Failed to get history for Helm release '${params.releaseName}': ${error.message}`,
53
+ );
54
+ }
55
+ }
56
+ }
@@ -0,0 +1,107 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { HelmBaseTool, HelmCommonSchemas, executeHelmCommand } from './BaseTool.js';
3
+
4
+ /**
5
+ * List Helm releases
6
+ */
7
+ export class HelmListTool implements HelmBaseTool {
8
+ tool: Tool = {
9
+ name: 'helm_list',
10
+ description: 'List Helm releases in the cluster (similar to `helm list`)',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ namespace: HelmCommonSchemas.namespace,
15
+ allNamespaces: {
16
+ type: 'boolean',
17
+ description: 'List releases across all namespaces',
18
+ optional: true,
19
+ },
20
+ outputFormat: {
21
+ ...HelmCommonSchemas.outputFormat,
22
+ default: 'json',
23
+ },
24
+ selector: {
25
+ type: 'string',
26
+ description: 'Selector (label query) to filter on, supports =, ==, and !=',
27
+ optional: true,
28
+ },
29
+ maxReleases: {
30
+ type: 'number',
31
+ description: 'Maximum number of releases to return (default: 256)',
32
+ optional: true,
33
+ },
34
+ deployed: {
35
+ type: 'boolean',
36
+ description: 'Show deployed releases only',
37
+ optional: true,
38
+ },
39
+ failed: {
40
+ type: 'boolean',
41
+ description: 'Show failed releases only',
42
+ optional: true,
43
+ },
44
+ pending: {
45
+ type: 'boolean',
46
+ description: 'Show pending releases only',
47
+ optional: true,
48
+ },
49
+ superseded: {
50
+ type: 'boolean',
51
+ description: 'Show superseded releases only',
52
+ optional: true,
53
+ },
54
+ uninstalled: {
55
+ type: 'boolean',
56
+ description: 'Show uninstalled releases only',
57
+ optional: true,
58
+ },
59
+ uninstalling: {
60
+ type: 'boolean',
61
+ description: 'Show releases that are currently being uninstalled only',
62
+ optional: true,
63
+ },
64
+ },
65
+ },
66
+ };
67
+
68
+ async execute(params: any): Promise<any> {
69
+ try {
70
+ const args = ['list'];
71
+
72
+ // Add namespace parameter
73
+ if (params.namespace) {
74
+ args.push('--namespace', params.namespace);
75
+ } else if (params.allNamespaces) {
76
+ args.push('--all-namespaces');
77
+ }
78
+
79
+ // Add output format
80
+ const outputFormat = params.outputFormat || 'json';
81
+ args.push('--output', outputFormat);
82
+
83
+ // Add selector
84
+ if (params.selector) {
85
+ args.push('--selector', params.selector);
86
+ }
87
+
88
+ // Add max releases
89
+ if (params.maxReleases) {
90
+ args.push('--max', params.maxReleases.toString());
91
+ }
92
+
93
+ // Add status filters
94
+ if (params.deployed) args.push('--deployed');
95
+ if (params.failed) args.push('--failed');
96
+ if (params.pending) args.push('--pending');
97
+ if (params.superseded) args.push('--superseded');
98
+ if (params.uninstalled) args.push('--uninstalled');
99
+ if (params.uninstalling) args.push('--uninstalling');
100
+
101
+ const result = await executeHelmCommand(args);
102
+ return result;
103
+ } catch (error: any) {
104
+ throw new Error(`Failed to list Helm releases: ${error.message}`);
105
+ }
106
+ }
107
+ }
@@ -0,0 +1,194 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { HelmBaseTool, HelmCommonSchemas, executeHelmCommand } from './BaseTool.js';
3
+
4
+ /**
5
+ * List Helm releases with detailed Kubernetes resource information
6
+ */
7
+ export class HelmListWithResourcesTool implements HelmBaseTool {
8
+ tool: Tool = {
9
+ name: 'helm_list_with_resources',
10
+ description: 'List Helm releases with detailed Kubernetes resource breakdown',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ namespace: HelmCommonSchemas.namespace,
15
+ allNamespaces: {
16
+ type: 'boolean',
17
+ description: 'List releases across all namespaces',
18
+ optional: true,
19
+ },
20
+ outputFormat: {
21
+ ...HelmCommonSchemas.outputFormat,
22
+ default: 'json',
23
+ },
24
+ includeResources: {
25
+ type: 'boolean',
26
+ description: 'Include detailed resource information for each release',
27
+ default: true,
28
+ optional: true,
29
+ },
30
+ },
31
+ },
32
+ };
33
+
34
+ async execute(params: any): Promise<any> {
35
+ try {
36
+ // First get the basic release list
37
+ const listArgs = ['list'];
38
+
39
+ // Add namespace parameter
40
+ if (params.namespace) {
41
+ listArgs.push('--namespace', params.namespace);
42
+ } else if (params.allNamespaces) {
43
+ listArgs.push('--all-namespaces');
44
+ }
45
+
46
+ // Add output format
47
+ const outputFormat = params.outputFormat || 'json';
48
+ listArgs.push('--output', outputFormat);
49
+
50
+ const listResult = await executeHelmCommand(listArgs);
51
+ const releases = Array.isArray(listResult) ? listResult : listResult.releases || [];
52
+
53
+ // If resource details are requested, enrich each release
54
+ if (params.includeResources !== false && releases.length > 0) {
55
+ for (const release of releases) {
56
+ try {
57
+ // Get manifest for each release to analyze resources
58
+ const manifestArgs = ['get', 'manifest', release.name];
59
+ if (release.namespace) {
60
+ manifestArgs.push('--namespace', release.namespace);
61
+ }
62
+
63
+ const manifestResult = await executeHelmCommand(manifestArgs);
64
+ const manifestText = manifestResult.output || manifestResult;
65
+ const resources = this.parseKubernetesManifest(manifestText);
66
+
67
+ release.resources = {
68
+ total: resources.length,
69
+ byType: this.getResourceTypeSummary(resources),
70
+ details: resources,
71
+ };
72
+ } catch (error: any) {
73
+ // If we can't get resources for a release, just note the error
74
+ release.resources = {
75
+ error: `Failed to get resources: ${error.message}`,
76
+ };
77
+ }
78
+ }
79
+ }
80
+
81
+ return {
82
+ totalReleases: releases.length,
83
+ releases,
84
+ summary: this.generateSummary(releases),
85
+ };
86
+ } catch (error: any) {
87
+ throw new Error(`Failed to list Helm releases with resources: ${error.message}`);
88
+ }
89
+ }
90
+
91
+ private parseKubernetesManifest(manifestText: string): any[] {
92
+ const resources: any[] = [];
93
+
94
+ if (!manifestText || typeof manifestText !== 'string') {
95
+ return resources;
96
+ }
97
+
98
+ // Split by YAML document separator
99
+ const documents = manifestText.split('---').filter((doc) => doc.trim());
100
+
101
+ for (const doc of documents) {
102
+ try {
103
+ // Simple YAML parsing for basic resource information
104
+ const resource = this.parseYamlDocument(doc);
105
+ if (resource && resource.kind && resource.metadata) {
106
+ resources.push({
107
+ kind: resource.kind,
108
+ apiVersion: resource.apiVersion,
109
+ name: resource.metadata.name,
110
+ namespace: resource.metadata.namespace,
111
+ });
112
+ }
113
+ } catch {
114
+ // Skip invalid YAML documents
115
+ continue;
116
+ }
117
+ }
118
+
119
+ return resources;
120
+ }
121
+
122
+ private parseYamlDocument(yamlText: string): any {
123
+ // Simple YAML parser for basic fields
124
+ const lines = yamlText.trim().split('\n');
125
+ const resource: any = { metadata: {} };
126
+
127
+ for (const line of lines) {
128
+ const trimmed = line.trim();
129
+ if (!trimmed || trimmed.startsWith('#')) continue;
130
+
131
+ if (trimmed.startsWith('kind:')) {
132
+ resource.kind = trimmed.split(':')[1].trim();
133
+ } else if (trimmed.startsWith('apiVersion:')) {
134
+ resource.apiVersion = trimmed.split(':')[1].trim();
135
+ } else if (trimmed.includes('name:') && !trimmed.includes('namespace:')) {
136
+ const match = trimmed.match(/name:\s*(.+)/);
137
+ if (match) {
138
+ resource.metadata.name = match[1].trim();
139
+ }
140
+ } else if (trimmed.includes('namespace:')) {
141
+ const match = trimmed.match(/namespace:\s*(.+)/);
142
+ if (match) {
143
+ resource.metadata.namespace = match[1].trim();
144
+ }
145
+ }
146
+ }
147
+
148
+ return resource.kind ? resource : null;
149
+ }
150
+
151
+ private getResourceTypeSummary(resources: any[]): Record<string, number> {
152
+ const summary: Record<string, number> = {};
153
+
154
+ for (const resource of resources) {
155
+ const kind = resource.kind;
156
+ summary[kind] = (summary[kind] || 0) + 1;
157
+ }
158
+
159
+ return summary;
160
+ }
161
+
162
+ private generateSummary(releases: any[]): any {
163
+ const summary = {
164
+ totalReleases: releases.length,
165
+ byStatus: {} as Record<string, number>,
166
+ byNamespace: {} as Record<string, number>,
167
+ totalResources: 0,
168
+ resourceTypes: {} as Record<string, number>,
169
+ };
170
+
171
+ for (const release of releases) {
172
+ // Count by status
173
+ const status = release.status || 'unknown';
174
+ summary.byStatus[status] = (summary.byStatus[status] || 0) + 1;
175
+
176
+ // Count by namespace
177
+ const namespace = release.namespace || 'default';
178
+ summary.byNamespace[namespace] = (summary.byNamespace[namespace] || 0) + 1;
179
+
180
+ // Aggregate resource information
181
+ if (release.resources && release.resources.total) {
182
+ summary.totalResources += release.resources.total;
183
+
184
+ if (release.resources.byType) {
185
+ for (const [type, count] of Object.entries(release.resources.byType)) {
186
+ summary.resourceTypes[type] = (summary.resourceTypes[type] || 0) + (count as number);
187
+ }
188
+ }
189
+ }
190
+ }
191
+
192
+ return summary;
193
+ }
194
+ }
@@ -0,0 +1,62 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { HelmBaseTool, HelmCommonSchemas, executeHelmCommand } from './BaseTool.js';
3
+
4
+ /**
5
+ * Get status of a Helm release
6
+ */
7
+ export class HelmStatusTool implements HelmBaseTool {
8
+ tool: Tool = {
9
+ name: 'helm_status',
10
+ description: 'Display the status of the named release (similar to `helm status`)',
11
+ inputSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ releaseName: HelmCommonSchemas.releaseName,
15
+ namespace: HelmCommonSchemas.namespace,
16
+ revision: HelmCommonSchemas.revision,
17
+ outputFormat: {
18
+ ...HelmCommonSchemas.outputFormat,
19
+ default: 'json',
20
+ },
21
+ showResources: {
22
+ type: 'boolean',
23
+ description: 'Show the resources this release created',
24
+ optional: true,
25
+ },
26
+ },
27
+ required: ['releaseName'],
28
+ },
29
+ };
30
+
31
+ async execute(params: any): Promise<any> {
32
+ try {
33
+ const args = ['status', params.releaseName];
34
+
35
+ // Add namespace parameter
36
+ if (params.namespace) {
37
+ args.push('--namespace', params.namespace);
38
+ }
39
+
40
+ // Add revision parameter
41
+ if (params.revision) {
42
+ args.push('--revision', params.revision.toString());
43
+ }
44
+
45
+ // Add output format
46
+ const outputFormat = params.outputFormat || 'json';
47
+ args.push('--output', outputFormat);
48
+
49
+ // Add show resources flag
50
+ if (params.showResources) {
51
+ args.push('--show-resources');
52
+ }
53
+
54
+ const result = await executeHelmCommand(args);
55
+ return result;
56
+ } catch (error: any) {
57
+ throw new Error(
58
+ `Failed to get status for Helm release '${params.releaseName}': ${error.message}`,
59
+ );
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,11 @@
1
+ export type { HelmBaseTool } from './BaseTool.js';
2
+ export { HelmCommonSchemas, executeHelmCommand, validateHelmCLI } from './BaseTool.js';
3
+ export { HelmListTool } from './HelmListTool.js';
4
+ export { HelmGetValuesTool } from './HelmGetValuesTool.js';
5
+ export { HelmGetManifestTool } from './HelmGetManifestTool.js';
6
+ export { HelmGetNotesTool } from './HelmGetNotesTool.js';
7
+ export { HelmGetHooksTool } from './HelmGetHooksTool.js';
8
+ export { HelmStatusTool } from './HelmStatusTool.js';
9
+ export { HelmHistoryTool } from './HelmHistoryTool.js';
10
+ export { HelmGetResourcesTool } from './HelmGetResourcesTool.js';
11
+ export { HelmListWithResourcesTool } from './HelmListWithResourcesTool.js';