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,189 @@
1
+ import { MCPPlugin, MCPServer } from '../server/MCPServer.js';
2
+ import winston from 'winston';
3
+ import {
4
+ type ArgoCDBaseTool,
5
+ validateArgoCDCLI,
6
+ ArgoCDAppListTool,
7
+ ArgoCDAppGetTool,
8
+ ArgoCDAppHistoryTool,
9
+ ArgoCDAppLogsTool,
10
+ ArgoCDAppResourcesTool,
11
+ } from '../tools/argocd/index.js';
12
+
13
+ /**
14
+ * Plugin that registers ArgoCD tools with the MCP server
15
+ */
16
+ export class ArgoCDToolsPlugin implements MCPPlugin {
17
+ name = 'argocd-tools';
18
+ version = '0.1.0';
19
+
20
+ private commands: ArgoCDBaseTool[] = [];
21
+ private logger?: MCPServer['logger'];
22
+ private commandMap: Map<string, ArgoCDBaseTool> = new Map();
23
+
24
+ constructor() {}
25
+
26
+ /**
27
+ * Check if plugin is disabled via environment variable
28
+ */
29
+ private static isDisabled(): boolean {
30
+ return (
31
+ process.env.DISABLE_ARGOCD_PLUGIN === 'true' || process.env.DISABLE_ARGOCD_PLUGIN === '1'
32
+ );
33
+ }
34
+
35
+ /**
36
+ * Create the list of all available tool instances
37
+ * This is the single source of truth for all tools in the plugin
38
+ */
39
+ private static createToolInstances(): ArgoCDBaseTool[] {
40
+ return [
41
+ new ArgoCDAppListTool(),
42
+ new ArgoCDAppGetTool(),
43
+ new ArgoCDAppHistoryTool(),
44
+ new ArgoCDAppLogsTool(),
45
+ new ArgoCDAppResourcesTool(),
46
+ ];
47
+ }
48
+
49
+ /**
50
+ * Get all command names from the tool instances
51
+ */
52
+ static getCommandNames(): string[] {
53
+ return this.createToolInstances().map((tool) => tool.tool.name);
54
+ }
55
+
56
+ /**
57
+ * Create a Winston logger for CLI usage only if LOG_LEVEL is set
58
+ */
59
+ private static createLogger(): winston.Logger | undefined {
60
+ if (!process.env.LOG_LEVEL) {
61
+ return undefined;
62
+ }
63
+ return winston.createLogger({
64
+ level: process.env.LOG_LEVEL,
65
+ format: winston.format.combine(winston.format.timestamp(), winston.format.json()),
66
+ transports: [
67
+ new winston.transports.Console({
68
+ stderrLevels: ['error', 'warn', 'info', 'verbose', 'debug', 'silly'],
69
+ format: winston.format.combine(winston.format.colorize(), winston.format.simple()),
70
+ }),
71
+ ],
72
+ });
73
+ }
74
+
75
+ /**
76
+ * Static method to directly execute a command from CLI without starting the MCP server
77
+ * @param commandName The name of the command to execute
78
+ * @param params Parameters for the command
79
+ * @returns The result of the command execution
80
+ */
81
+ static async executeCommand(commandName: string, params: Record<string, any>): Promise<any> {
82
+ const plugin = new ArgoCDToolsPlugin();
83
+
84
+ // Initialize commands using the centralized method
85
+ plugin.commands = this.createToolInstances();
86
+
87
+ // Create map of commands
88
+ for (const command of plugin.commands) {
89
+ plugin.commandMap.set(command.tool.name, command);
90
+ }
91
+
92
+ const command = plugin.commandMap.get(commandName);
93
+ if (!command) {
94
+ throw new Error(`Unknown tool: ${commandName}`);
95
+ }
96
+
97
+ const logger = this.createLogger();
98
+ if (logger) {
99
+ logger.info(`Executing ArgoCD command: ${commandName}`, { params });
100
+ }
101
+
102
+ try {
103
+ // Execute the command
104
+ const result = await command.execute(params);
105
+ if (logger) {
106
+ logger.debug(`Command ${commandName} completed successfully`);
107
+ }
108
+ return result;
109
+ } catch (error) {
110
+ if (logger) {
111
+ logger.error(`Command ${commandName} failed`, { error });
112
+ }
113
+ throw error;
114
+ }
115
+ }
116
+
117
+ async initialize(server: MCPServer): Promise<void> {
118
+ this.logger = server.getLogger();
119
+
120
+ try {
121
+ // Check if plugin is disabled
122
+ if (ArgoCDToolsPlugin.isDisabled()) {
123
+ this.logger.info('ArgoCDToolsPlugin is disabled via environment variable');
124
+ this.commands = [];
125
+ this.commandMap.clear();
126
+ return;
127
+ }
128
+
129
+ // Validate ArgoCD CLI - only register tools if validation succeeds
130
+ try {
131
+ await validateArgoCDCLI();
132
+ this.logger.info('ArgoCD CLI validation successful');
133
+
134
+ // Initialize commands using the centralized method
135
+ this.commands = ArgoCDToolsPlugin.createToolInstances();
136
+
137
+ // Create a map of command names to command instances
138
+ for (const command of this.commands) {
139
+ this.commandMap.set(command.tool.name, command);
140
+ }
141
+
142
+ // Register each command with the server
143
+ for (const command of this.commands) {
144
+ server.registerTool(command.tool, async (params: any) => {
145
+ return command.execute(params);
146
+ });
147
+ }
148
+
149
+ this.logger.info(
150
+ `ArgoCDToolsPlugin initialized with ${this.commands.length} tools. ArgoCD CLI ready.`,
151
+ );
152
+ } catch (error) {
153
+ this.logger.warn('ArgoCD CLI not found. ArgoCD tools will not be registered.', {
154
+ error: error instanceof Error ? error.message : String(error),
155
+ });
156
+ // Don't register any tools if argocd CLI is not available
157
+ this.commands = [];
158
+ this.commandMap.clear();
159
+
160
+ this.logger.info('ArgoCDToolsPlugin initialized with 0 tools (ArgoCD CLI not available).');
161
+ }
162
+ } catch (error) {
163
+ this.logger.error('Failed to initialize ArgoCDToolsPlugin', error);
164
+ throw error; // Rethrow to allow MCPServer to catch it if needed
165
+ }
166
+ }
167
+
168
+ /**
169
+ * Get a function that executes a specific tool by name
170
+ * @param toolName The name of the tool to execute
171
+ * @returns A function that takes parameters and executes the tool, or undefined if the tool doesn't exist
172
+ */
173
+ getToolFunction(toolName: string): ((params: any) => Promise<any>) | undefined {
174
+ const command = this.commandMap.get(toolName);
175
+
176
+ if (!command) {
177
+ return undefined;
178
+ }
179
+
180
+ return async (params: any) => {
181
+ return command.execute(params);
182
+ };
183
+ }
184
+
185
+ async shutdown(): Promise<void> {
186
+ // No specific cleanup needed for ArgoCD CLI operations
187
+ this.logger?.info('ArgoCDToolsPlugin shutting down...');
188
+ }
189
+ }
@@ -0,0 +1,180 @@
1
+ import { MCPPlugin, MCPServer } from '../server/MCPServer.js';
2
+ import winston from 'winston';
3
+ import {
4
+ type ArgoBaseTool,
5
+ validateArgoCLI,
6
+ ArgoListTool,
7
+ ArgoLogsTool,
8
+ ArgoCronListTool,
9
+ ArgoGetTool,
10
+ } from '../tools/argo/index.js';
11
+
12
+ /**
13
+ * Plugin that registers Argo tools with the MCP server
14
+ */
15
+ export class ArgoToolsPlugin implements MCPPlugin {
16
+ name = 'argo-tools';
17
+ version = '0.1.0';
18
+
19
+ private commands: ArgoBaseTool[] = [];
20
+ private logger?: MCPServer['logger'];
21
+ private commandMap: Map<string, ArgoBaseTool> = new Map();
22
+
23
+ constructor() {}
24
+
25
+ /**
26
+ * Check if plugin is disabled via environment variable
27
+ */
28
+ private static isDisabled(): boolean {
29
+ return process.env.DISABLE_ARGO_PLUGIN === 'true' || process.env.DISABLE_ARGO_PLUGIN === '1';
30
+ }
31
+
32
+ /**
33
+ * Create the list of all available tool instances
34
+ * This is the single source of truth for all tools in the plugin
35
+ */
36
+ private static createToolInstances(): ArgoBaseTool[] {
37
+ return [new ArgoListTool(), new ArgoLogsTool(), new ArgoCronListTool(), new ArgoGetTool()];
38
+ }
39
+
40
+ /**
41
+ * Get all command names from the tool instances
42
+ */
43
+ static getCommandNames(): string[] {
44
+ return this.createToolInstances().map((tool) => tool.tool.name);
45
+ }
46
+
47
+ /**
48
+ * Create a Winston logger for CLI usage only if LOG_LEVEL is set
49
+ */
50
+ private static createLogger(): winston.Logger | undefined {
51
+ if (!process.env.LOG_LEVEL) {
52
+ return undefined;
53
+ }
54
+ return winston.createLogger({
55
+ level: process.env.LOG_LEVEL,
56
+ format: winston.format.combine(winston.format.timestamp(), winston.format.json()),
57
+ transports: [
58
+ new winston.transports.Console({
59
+ stderrLevels: ['error', 'warn', 'info', 'verbose', 'debug', 'silly'],
60
+ format: winston.format.combine(winston.format.colorize(), winston.format.simple()),
61
+ }),
62
+ ],
63
+ });
64
+ }
65
+
66
+ /**
67
+ * Static method to directly execute a command from CLI without starting the MCP server
68
+ * @param commandName The name of the command to execute
69
+ * @param params Parameters for the command
70
+ * @returns The result of the command execution
71
+ */
72
+ static async executeCommand(commandName: string, params: Record<string, any>): Promise<any> {
73
+ const plugin = new ArgoToolsPlugin();
74
+
75
+ // Initialize commands using the centralized method
76
+ plugin.commands = this.createToolInstances();
77
+
78
+ // Create map of commands
79
+ for (const command of plugin.commands) {
80
+ plugin.commandMap.set(command.tool.name, command);
81
+ }
82
+
83
+ const command = plugin.commandMap.get(commandName);
84
+ if (!command) {
85
+ throw new Error(`Unknown tool: ${commandName}`);
86
+ }
87
+
88
+ const logger = this.createLogger();
89
+ if (logger) {
90
+ logger.info(`Executing Argo command: ${commandName}`, { params });
91
+ }
92
+
93
+ try {
94
+ // Execute the command
95
+ const result = await command.execute(params);
96
+ if (logger) {
97
+ logger.debug(`Command ${commandName} completed successfully`);
98
+ }
99
+ return result;
100
+ } catch (error) {
101
+ if (logger) {
102
+ logger.error(`Command ${commandName} failed`, { error });
103
+ }
104
+ throw error;
105
+ }
106
+ }
107
+
108
+ async initialize(server: MCPServer): Promise<void> {
109
+ this.logger = server.getLogger();
110
+
111
+ try {
112
+ // Check if plugin is disabled
113
+ if (ArgoToolsPlugin.isDisabled()) {
114
+ this.logger.info('ArgoToolsPlugin is disabled via environment variable');
115
+ this.commands = [];
116
+ this.commandMap.clear();
117
+ return;
118
+ }
119
+
120
+ // Validate Argo CLI - only register tools if validation succeeds
121
+ try {
122
+ await validateArgoCLI();
123
+ this.logger.info('Argo CLI validation successful');
124
+
125
+ // Initialize commands using the centralized method
126
+ this.commands = ArgoToolsPlugin.createToolInstances();
127
+
128
+ // Create a map of command names to command instances
129
+ for (const command of this.commands) {
130
+ this.commandMap.set(command.tool.name, command);
131
+ }
132
+
133
+ // Register each command with the server
134
+ for (const command of this.commands) {
135
+ server.registerTool(command.tool, async (params: any) => {
136
+ return command.execute(params);
137
+ });
138
+ }
139
+
140
+ this.logger.info(
141
+ `ArgoToolsPlugin initialized with ${this.commands.length} tools. Argo CLI ready.`,
142
+ );
143
+ } catch (error) {
144
+ this.logger.warn('Argo CLI not found. Argo tools will not be registered.', {
145
+ error: error instanceof Error ? error.message : String(error),
146
+ });
147
+ // Don't register any tools if argo CLI is not available
148
+ this.commands = [];
149
+ this.commandMap.clear();
150
+
151
+ this.logger.info('ArgoToolsPlugin initialized with 0 tools (Argo CLI not available).');
152
+ }
153
+ } catch (error) {
154
+ this.logger.error('Failed to initialize ArgoToolsPlugin', error);
155
+ throw error; // Rethrow to allow MCPServer to catch it if needed
156
+ }
157
+ }
158
+
159
+ /**
160
+ * Get a function that executes a specific tool by name
161
+ * @param toolName The name of the tool to execute
162
+ * @returns A function that takes parameters and executes the tool, or undefined if the tool doesn't exist
163
+ */
164
+ getToolFunction(toolName: string): ((params: any) => Promise<any>) | undefined {
165
+ const command = this.commandMap.get(toolName);
166
+
167
+ if (!command) {
168
+ return undefined;
169
+ }
170
+
171
+ return async (params: any) => {
172
+ return command.execute(params);
173
+ };
174
+ }
175
+
176
+ async shutdown(): Promise<void> {
177
+ // No specific cleanup needed for Argo CLI operations
178
+ this.logger?.info('ArgoToolsPlugin shutting down...');
179
+ }
180
+ }
@@ -0,0 +1,180 @@
1
+ import { MCPPlugin, MCPServer } from '../server/MCPServer.js';
2
+ import winston from 'winston';
3
+ import {
4
+ type HelmBaseTool,
5
+ validateHelmCLI,
6
+ HelmListTool,
7
+ HelmGetValuesTool,
8
+ HelmGetManifestTool,
9
+ HelmGetNotesTool,
10
+ HelmGetHooksTool,
11
+ HelmStatusTool,
12
+ HelmHistoryTool,
13
+ HelmGetResourcesTool,
14
+ HelmListWithResourcesTool,
15
+ } from '../tools/helm/index.js';
16
+
17
+ /**
18
+ * Plugin that registers Helm tools with the MCP server
19
+ */
20
+ export class HelmToolsPlugin implements MCPPlugin {
21
+ name = 'helm-tools';
22
+ version = '0.1.0';
23
+
24
+ private commands: HelmBaseTool[] = [];
25
+ private logger?: MCPServer['logger'];
26
+ private commandMap: Map<string, HelmBaseTool> = new Map();
27
+
28
+ constructor() {}
29
+
30
+ /**
31
+ * Create the list of all available tool instances
32
+ * This is the single source of truth for all tools in the plugin
33
+ */
34
+ private static createToolInstances(): HelmBaseTool[] {
35
+ return [
36
+ new HelmListTool(),
37
+ new HelmGetValuesTool(),
38
+ new HelmGetManifestTool(),
39
+ new HelmGetNotesTool(),
40
+ new HelmGetHooksTool(),
41
+ new HelmStatusTool(),
42
+ new HelmHistoryTool(),
43
+ new HelmGetResourcesTool(),
44
+ new HelmListWithResourcesTool(),
45
+ ];
46
+ }
47
+
48
+ /**
49
+ * Get all command names from the tool instances
50
+ */
51
+ static getCommandNames(): string[] {
52
+ return this.createToolInstances().map((tool) => tool.tool.name);
53
+ }
54
+
55
+ /**
56
+ * Create a Winston logger for CLI usage only if LOG_LEVEL is set
57
+ */
58
+ private static createLogger(): winston.Logger | undefined {
59
+ if (!process.env.LOG_LEVEL) {
60
+ return undefined;
61
+ }
62
+ return winston.createLogger({
63
+ level: process.env.LOG_LEVEL,
64
+ format: winston.format.combine(winston.format.timestamp(), winston.format.json()),
65
+ transports: [
66
+ new winston.transports.Console({
67
+ stderrLevels: ['error', 'warn', 'info', 'verbose', 'debug', 'silly'],
68
+ format: winston.format.combine(winston.format.colorize(), winston.format.simple()),
69
+ }),
70
+ ],
71
+ });
72
+ }
73
+
74
+ /**
75
+ * Static method to directly execute a command from CLI without starting the MCP server
76
+ * @param commandName The name of the command to execute
77
+ * @param params Parameters for the command
78
+ * @returns The result of the command execution
79
+ */
80
+ static async executeCommand(commandName: string, params: Record<string, any>): Promise<any> {
81
+ const plugin = new HelmToolsPlugin();
82
+
83
+ // Initialize commands using the centralized method
84
+ plugin.commands = this.createToolInstances();
85
+
86
+ // Create map of commands
87
+ for (const command of plugin.commands) {
88
+ plugin.commandMap.set(command.tool.name, command);
89
+ }
90
+
91
+ const command = plugin.commandMap.get(commandName);
92
+ if (!command) {
93
+ throw new Error(`Unknown tool: ${commandName}`);
94
+ }
95
+
96
+ const logger = this.createLogger();
97
+ if (logger) {
98
+ logger.info(`Executing Helm command: ${commandName}`, { params });
99
+ }
100
+
101
+ try {
102
+ // Execute the command
103
+ const result = await command.execute(params);
104
+ if (logger) {
105
+ logger.debug(`Command ${commandName} completed successfully`);
106
+ }
107
+ return result;
108
+ } catch (error) {
109
+ if (logger) {
110
+ logger.error(`Command ${commandName} failed`, { error });
111
+ }
112
+ throw error;
113
+ }
114
+ }
115
+
116
+ async initialize(server: MCPServer): Promise<void> {
117
+ this.logger = server.getLogger();
118
+
119
+ try {
120
+ // Validate Helm CLI - only register tools if validation succeeds
121
+ try {
122
+ await validateHelmCLI();
123
+ this.logger.info('Helm CLI validation successful');
124
+
125
+ // Initialize commands using the centralized method
126
+ this.commands = HelmToolsPlugin.createToolInstances();
127
+
128
+ // Create a map of command names to command instances
129
+ for (const command of this.commands) {
130
+ this.commandMap.set(command.tool.name, command);
131
+ }
132
+
133
+ // Register each command with the server
134
+ for (const command of this.commands) {
135
+ server.registerTool(command.tool, async (params: any) => {
136
+ return command.execute(params);
137
+ });
138
+ }
139
+
140
+ this.logger.info(
141
+ `HelmToolsPlugin initialized with ${this.commands.length} tools. Helm CLI ready.`,
142
+ );
143
+ } catch (error) {
144
+ this.logger.warn('Helm CLI not found. Helm tools will not be registered.', {
145
+ error: error instanceof Error ? error.message : String(error),
146
+ });
147
+ // Don't register any tools if helm CLI is not available
148
+ this.commands = [];
149
+ this.commandMap.clear();
150
+
151
+ this.logger.info('HelmToolsPlugin initialized with 0 tools (Helm CLI not available).');
152
+ }
153
+ } catch (error) {
154
+ this.logger.error('Failed to initialize HelmToolsPlugin', error);
155
+ throw error; // Rethrow to allow MCPServer to catch it if needed
156
+ }
157
+ }
158
+
159
+ /**
160
+ * Get a function that executes a specific tool by name
161
+ * @param toolName The name of the tool to execute
162
+ * @returns A function that takes parameters and executes the tool, or undefined if the tool doesn't exist
163
+ */
164
+ getToolFunction(toolName: string): ((params: any) => Promise<any>) | undefined {
165
+ const command = this.commandMap.get(toolName);
166
+
167
+ if (!command) {
168
+ return undefined;
169
+ }
170
+
171
+ return async (params: any) => {
172
+ return command.execute(params);
173
+ };
174
+ }
175
+
176
+ async shutdown(): Promise<void> {
177
+ // No specific cleanup needed for Helm CLI operations
178
+ this.logger?.info('HelmToolsPlugin shutting down...');
179
+ }
180
+ }