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,76 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
3
+
4
+ /**
5
+ * Base interface for all Kubernetes MCP tool commands
6
+ */
7
+ export interface BaseTool {
8
+ /**
9
+ * The tool definition for MCP registration
10
+ */
11
+ tool: Tool;
12
+
13
+ /**
14
+ * Execute the command with given parameters
15
+ */
16
+ execute(params: any, client: KubernetesClient): Promise<any>;
17
+ }
18
+
19
+ /**
20
+ * Common parameter schemas used across multiple commands
21
+ */
22
+ export const CommonSchemas = {
23
+ namespace: {
24
+ type: 'string',
25
+ description: 'Kubernetes namespace (defaults to all namespaces if not specified)',
26
+ optional: true,
27
+ },
28
+ labelSelector: {
29
+ type: 'string',
30
+ description: 'Label selector to filter resources (e.g., "app=nginx")',
31
+ optional: true,
32
+ },
33
+ fieldSelector: {
34
+ type: 'string',
35
+ description: 'Field selector to filter resources (e.g., "status.phase=Running")',
36
+ optional: true,
37
+ },
38
+ name: {
39
+ type: 'string',
40
+ description: 'Name of the resource',
41
+ },
42
+ };
43
+
44
+ /**
45
+ * Format resource metadata for consistent output
46
+ */
47
+ export function formatResourceMetadata(resource: any): any {
48
+ return {
49
+ name: resource.metadata?.name,
50
+ namespace: resource.metadata?.namespace,
51
+ uid: resource.metadata?.uid,
52
+ creationTimestamp: resource.metadata?.creationTimestamp,
53
+ labels: resource.metadata?.labels || {},
54
+ annotations: resource.metadata?.annotations || {},
55
+ };
56
+ }
57
+
58
+ /**
59
+ * Format resource status with common fields
60
+ */
61
+ export function formatResourceStatus(resource: any): any {
62
+ const status: any = {
63
+ phase: resource.status?.phase,
64
+ conditions: resource.status?.conditions || [],
65
+ };
66
+
67
+ // Add resource-specific status fields if they exist
68
+ if (resource.status?.readyReplicas !== undefined) {
69
+ status.readyReplicas = resource.status.readyReplicas;
70
+ }
71
+ if (resource.status?.replicas !== undefined) {
72
+ status.replicas = resource.status.replicas;
73
+ }
74
+
75
+ return status;
76
+ }
@@ -0,0 +1,33 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { BaseTool, CommonSchemas } from './BaseTool.js';
3
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
4
+ import { ConfigMapOperations } from '../../kubernetes/resources/ConfigMapOperations.js';
5
+
6
+ /**
7
+ * List ConfigMaps in a Kubernetes cluster with optional data sanitization
8
+ */
9
+ export class GetConfigMapsTool implements BaseTool {
10
+ tool: Tool = {
11
+ name: 'get_configmaps',
12
+ description:
13
+ 'List all ConfigMap resources in the current Kubernetes cluster (similar to `kubectl get configmap`)',
14
+ inputSchema: {
15
+ type: 'object',
16
+ properties: {
17
+ namespace: CommonSchemas.namespace,
18
+ labelSelector: CommonSchemas.labelSelector,
19
+ fieldSelector: CommonSchemas.fieldSelector,
20
+ skipSanitize: {
21
+ type: 'boolean',
22
+ description:
23
+ 'Skip sanitizing sensitive data in ConfigMap values (default: false, meaning sanitization is enabled by default)',
24
+ optional: true,
25
+ },
26
+ },
27
+ },
28
+ };
29
+
30
+ async execute(params: any, client: KubernetesClient): Promise<any> {
31
+ return await new ConfigMapOperations(client).list(params);
32
+ }
33
+ }
@@ -0,0 +1,140 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { BaseTool, CommonSchemas } from './BaseTool.js';
3
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
4
+
5
+ /**
6
+ * Fetch logs from a container in a Kubernetes pod
7
+ */
8
+ export class GetContainerLogsTool implements BaseTool {
9
+ tool: Tool = {
10
+ name: 'pod_logs',
11
+ description:
12
+ 'Return stdout / stderr logs for a specified container in a pod in the current cluster (similar to `kubectl logs`)',
13
+ inputSchema: {
14
+ type: 'object',
15
+ properties: {
16
+ podName: {
17
+ type: 'string',
18
+ description: 'Name of the pod',
19
+ },
20
+ namespace: {
21
+ ...CommonSchemas.namespace,
22
+ description: 'Kubernetes namespace (defaults to "default")',
23
+ },
24
+ container: {
25
+ type: 'string',
26
+ description: 'Container name (optional, defaults to first container)',
27
+ optional: true,
28
+ },
29
+ tailLines: {
30
+ type: 'number',
31
+ description: 'Number of lines from the end of the logs to show (optional)',
32
+ optional: true,
33
+ },
34
+ since: {
35
+ type: 'string',
36
+ description: 'Show logs since this duration (e.g., "5m", "1h") (optional)',
37
+ optional: true,
38
+ },
39
+ previous: {
40
+ type: 'boolean',
41
+ description: 'Return logs from previous instance of the container (optional)',
42
+ optional: true,
43
+ },
44
+ timestamps: {
45
+ type: 'boolean',
46
+ description: 'Include timestamps in log output (optional)',
47
+ optional: true,
48
+ },
49
+ },
50
+ required: ['podName'],
51
+ },
52
+ };
53
+
54
+ async execute(params: any, client: KubernetesClient): Promise<any> {
55
+ try {
56
+ const {
57
+ podName,
58
+ namespace = 'default',
59
+ container,
60
+ tailLines,
61
+ since,
62
+ previous = false,
63
+ timestamps = false,
64
+ } = params;
65
+
66
+ // Convert duration string to seconds if provided
67
+ let sinceSeconds: number | undefined;
68
+ if (since) {
69
+ sinceSeconds = this.parseDuration(since);
70
+ }
71
+
72
+ // Fetch the logs
73
+ const logs = await client.core.readNamespacedPodLog({
74
+ name: podName,
75
+ namespace,
76
+ container,
77
+ tailLines,
78
+ sinceSeconds,
79
+ previous,
80
+ timestamps,
81
+ });
82
+
83
+ // logs is returned as a string, split into lines for better formatting
84
+ const logLines = (logs as unknown as string).split('\n').filter((line) => line.trim());
85
+
86
+ return {
87
+ podName,
88
+ namespace,
89
+ container: container || 'default',
90
+ lineCount: logLines.length,
91
+ logs: logLines,
92
+ options: {
93
+ tailLines,
94
+ since,
95
+ previous,
96
+ timestamps,
97
+ },
98
+ };
99
+ } catch (error: any) {
100
+ const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
101
+
102
+ // Provide more helpful error messages for common cases
103
+ if (errorMessage.includes('container') && errorMessage.includes('not found')) {
104
+ throw new Error(`Container '${params.container}' not found in pod '${params.podName}'`);
105
+ } else if (errorMessage.includes('not found')) {
106
+ throw new Error(
107
+ `Pod '${params.podName}' not found in namespace '${params.namespace || 'default'}'`,
108
+ );
109
+ }
110
+
111
+ throw new Error(`Failed to fetch container logs: ${errorMessage}`);
112
+ }
113
+ }
114
+
115
+ /**
116
+ * Parse duration string (e.g., "5m", "1h", "30s") to seconds
117
+ */
118
+ private parseDuration(duration: string): number {
119
+ const match = duration.match(/^(\d+)([smhd])$/);
120
+ if (!match) {
121
+ throw new Error(`Invalid duration format: ${duration}. Use format like "5m", "1h", "30s"`);
122
+ }
123
+
124
+ const value = parseInt(match[1], 10);
125
+ const unit = match[2];
126
+
127
+ switch (unit) {
128
+ case 's':
129
+ return value;
130
+ case 'm':
131
+ return value * 60;
132
+ case 'h':
133
+ return value * 3600;
134
+ case 'd':
135
+ return value * 86400;
136
+ default:
137
+ throw new Error(`Unknown duration unit: ${unit}`);
138
+ }
139
+ }
140
+ }
@@ -0,0 +1,33 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { BaseTool, CommonSchemas } from './BaseTool.js';
3
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
4
+ import { DeploymentOperations } from '../../kubernetes/resources/DeploymentOperations.js';
5
+
6
+ /**
7
+ * List deployments in a Kubernetes cluster
8
+ */
9
+ export class GetDeploymentsTool implements BaseTool {
10
+ tool: Tool = {
11
+ name: 'get_deployments',
12
+ description:
13
+ 'List all Deployment resources in the current Kubernetes cluster (similar to `kubectl get deployments`)',
14
+ inputSchema: {
15
+ type: 'object',
16
+ properties: {
17
+ namespace: CommonSchemas.namespace,
18
+ labelSelector: CommonSchemas.labelSelector,
19
+ fieldSelector: CommonSchemas.fieldSelector,
20
+ },
21
+ },
22
+ };
23
+
24
+ async execute(params: any, client: KubernetesClient): Promise<any> {
25
+ const deploymentOperations = new DeploymentOperations(client);
26
+ try {
27
+ const deployments = await deploymentOperations.list(params);
28
+ return deployments;
29
+ } catch (error: any) {
30
+ throw new Error(`Failed to get deployments: ${error.message}`);
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,133 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { BaseTool, CommonSchemas } from './BaseTool.js';
3
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
4
+
5
+ /**
6
+ * Show events in a Kubernetes cluster
7
+ */
8
+ export class GetEventsTool implements BaseTool {
9
+ tool: Tool = {
10
+ name: 'get_events',
11
+ description: 'Show events in the Kubernetes cluster (similar to `kubectl get events`)',
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ namespace: CommonSchemas.namespace,
16
+ resourceType: {
17
+ type: 'string',
18
+ description: 'Filter events by resource type (e.g., pod, service, deployment)',
19
+ optional: true,
20
+ },
21
+ resourceName: {
22
+ type: 'string',
23
+ description: 'Filter events by specific resource name',
24
+ optional: true,
25
+ },
26
+ type: {
27
+ type: 'string',
28
+ description: 'Filter by event type (Normal or Warning)',
29
+ enum: ['Normal', 'Warning'],
30
+ optional: true,
31
+ },
32
+ limit: {
33
+ type: 'number',
34
+ description: 'Maximum number of events to return',
35
+ optional: true,
36
+ },
37
+ },
38
+ },
39
+ };
40
+
41
+ async execute(params: any, client: KubernetesClient): Promise<any> {
42
+ try {
43
+ const { namespace, resourceType, resourceName, type: eventType, limit = 100 } = params || {};
44
+
45
+ // Build field selector for filtering
46
+ const fieldSelectors: string[] = [];
47
+
48
+ if (resourceName) {
49
+ fieldSelectors.push(`involvedObject.name=${resourceName}`);
50
+ }
51
+
52
+ if (resourceType) {
53
+ // Capitalize the resource type for Kubernetes API
54
+ const capitalizedType = resourceType.charAt(0).toUpperCase() + resourceType.slice(1);
55
+ fieldSelectors.push(`involvedObject.kind=${capitalizedType}`);
56
+ }
57
+
58
+ if (eventType) {
59
+ fieldSelectors.push(`type=${eventType}`);
60
+ }
61
+
62
+ const fieldSelector = fieldSelectors.length > 0 ? fieldSelectors.join(',') : undefined;
63
+
64
+ let result;
65
+ if (namespace) {
66
+ // List events in specific namespace
67
+ result = await client.core.listNamespacedEvent({
68
+ namespace,
69
+ fieldSelector,
70
+ limit,
71
+ });
72
+ } else {
73
+ // List events in all namespaces
74
+ result = await client.core.listEventForAllNamespaces({
75
+ fieldSelector,
76
+ limit,
77
+ });
78
+ }
79
+
80
+ // Sort events by timestamp (most recent first)
81
+ const events = result.items
82
+ .sort((a: any, b: any) => {
83
+ const timeA = new Date(a.lastTimestamp || a.firstTimestamp || 0).getTime();
84
+ const timeB = new Date(b.lastTimestamp || b.firstTimestamp || 0).getTime();
85
+ return timeB - timeA;
86
+ })
87
+ .map((event: any) => ({
88
+ namespace: event.metadata?.namespace,
89
+ timestamp: event.lastTimestamp || event.firstTimestamp,
90
+ type: event.type,
91
+ reason: event.reason,
92
+ message: event.message,
93
+ count: event.count,
94
+ source: {
95
+ component: event.source?.component,
96
+ host: event.source?.host,
97
+ },
98
+ involvedObject: {
99
+ kind: event.involvedObject?.kind,
100
+ name: event.involvedObject?.name,
101
+ namespace: event.involvedObject?.namespace,
102
+ uid: event.involvedObject?.uid,
103
+ apiVersion: event.involvedObject?.apiVersion,
104
+ resourceVersion: event.involvedObject?.resourceVersion,
105
+ fieldPath: event.involvedObject?.fieldPath,
106
+ },
107
+ firstSeen: event.firstTimestamp,
108
+ lastSeen: event.lastTimestamp,
109
+ }));
110
+
111
+ // Group events by type for summary
112
+ const summary = {
113
+ total: events.length,
114
+ normal: events.filter((e: any) => e.type === 'Normal').length,
115
+ warning: events.filter((e: any) => e.type === 'Warning').length,
116
+ };
117
+
118
+ return {
119
+ summary,
120
+ filters: {
121
+ namespace: namespace || 'all',
122
+ resourceType,
123
+ resourceName,
124
+ eventType,
125
+ },
126
+ events,
127
+ };
128
+ } catch (error: any) {
129
+ const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
130
+ throw new Error(`Failed to fetch events: ${errorMessage}`);
131
+ }
132
+ }
133
+ }
@@ -0,0 +1,39 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { BaseTool, CommonSchemas } from './BaseTool.js';
3
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
4
+ import { IngressOperations } from '../../kubernetes/resources/IngressOperations.js';
5
+
6
+ /**
7
+ * List ingresses in a Kubernetes cluster
8
+ */
9
+ export class GetIngressTool implements BaseTool {
10
+ tool: Tool = {
11
+ name: 'get_ingresses',
12
+ description:
13
+ 'List Ingress resources in the current Kubernetes cluster (similar to `kubectl get ingress`)',
14
+ inputSchema: {
15
+ type: 'object',
16
+ properties: {
17
+ namespace: CommonSchemas.namespace,
18
+ labelSelector: CommonSchemas.labelSelector,
19
+ fieldSelector: CommonSchemas.fieldSelector,
20
+ },
21
+ },
22
+ };
23
+
24
+ async execute(params: any, client: KubernetesClient): Promise<any> {
25
+ try {
26
+ const { namespace, labelSelector, fieldSelector } = params || {};
27
+ const ingressOperations = new IngressOperations(client);
28
+
29
+ return await ingressOperations.listFormatted({
30
+ namespace,
31
+ labelSelector,
32
+ fieldSelector,
33
+ });
34
+ } catch (error: any) {
35
+ const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
36
+ throw new Error(`Failed to list ingresses: ${errorMessage}`);
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,53 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { BaseTool, CommonSchemas } from './BaseTool.js';
3
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
4
+ import { MetricOperations } from '../../kubernetes/resources/MetricOperations.js';
5
+
6
+ /**
7
+ * Get various metrics for Kubernetes resources, optionally enriched with Prometheus data.
8
+ */
9
+ export class GetMetricsTool implements BaseTool {
10
+ tool: Tool = {
11
+ name: 'get_metrics',
12
+ description:
13
+ 'Fetch live CPU / memory metrics for all nodes and pods in the current cluster (similar to `kubectl top`), with optional enrichment from Prometheus data.',
14
+ inputSchema: {
15
+ type: 'object',
16
+ properties: {
17
+ prometheusQueries: {
18
+ type: 'array',
19
+ items: { type: 'string' },
20
+ description:
21
+ 'An array of PromQL queries to execute against discovered Prometheus targets.',
22
+ default: [],
23
+ },
24
+ fetchPodSpecs: {
25
+ type: 'boolean',
26
+ description:
27
+ 'If true, fetches all pod specifications to enrich normalized pod metrics (e.g., with nodeName). Defaults to true.',
28
+ default: true,
29
+ },
30
+ namespace: {
31
+ ...CommonSchemas.namespace,
32
+ description:
33
+ 'Optional namespace to restrict Prometheus discovery, pod metrics, and pod spec fetching. If not provided, operates cluster-wide where applicable.',
34
+ },
35
+ },
36
+ },
37
+ };
38
+
39
+ async execute(params: any, client: KubernetesClient): Promise<any> {
40
+ const metricOperations = new MetricOperations(client);
41
+
42
+ // Use explicit defaults from the tool schema
43
+ const namespace = params.namespace;
44
+ const prometheusQueries = params.prometheusQueries ?? [];
45
+ const fetchPodSpecs = params.fetchPodSpecs ?? true;
46
+
47
+ return await metricOperations.getMetricsWithOptions(
48
+ prometheusQueries,
49
+ fetchPodSpecs,
50
+ namespace,
51
+ );
52
+ }
53
+ }
@@ -0,0 +1,36 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { BaseTool, formatResourceMetadata, formatResourceStatus } from './BaseTool.js';
3
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
4
+
5
+ /**
6
+ * List namespaces in a Kubernetes cluster
7
+ */
8
+ export class GetNamespacesTool implements BaseTool {
9
+ tool: Tool = {
10
+ name: 'get_namespaces',
11
+ description:
12
+ 'List all Namespace resources in the current Kubernetes cluster (similar to `kubectl get namespaces`)',
13
+ inputSchema: {
14
+ type: 'object',
15
+ properties: {},
16
+ },
17
+ };
18
+
19
+ async execute(_params: any, client: KubernetesClient): Promise<any> {
20
+ try {
21
+ const result = await client.resources.namespace.list();
22
+ const namespaces = result.items.map((ns: any) => ({
23
+ metadata: formatResourceMetadata(ns),
24
+ status: formatResourceStatus(ns),
25
+ }));
26
+ return {
27
+ total: namespaces.length,
28
+ namespaces,
29
+ cluster: client.getCurrentCluster ? client.getCurrentCluster() : undefined,
30
+ };
31
+ } catch (error: any) {
32
+ const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
33
+ throw new Error(`Failed to list namespaces: ${errorMessage}`);
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,113 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import {
3
+ BaseTool,
4
+ CommonSchemas,
5
+ formatResourceMetadata,
6
+ formatResourceStatus,
7
+ } from './BaseTool.js';
8
+ import { KubernetesClient } from '../../kubernetes/KubernetesClient.js';
9
+
10
+ /**
11
+ * List and analyze Persistent Volume Claims in a Kubernetes cluster
12
+ */
13
+ export class GetPersistentVolumeClaimsTool implements BaseTool {
14
+ tool: Tool = {
15
+ name: 'get_persistent_volume_claims',
16
+ description:
17
+ 'List Persistent Volume Claim resources in the current Kubernetes cluster and optionally analyze their status (similar to `kubectl get pvc`)',
18
+ inputSchema: {
19
+ type: 'object',
20
+ properties: {
21
+ namespace: CommonSchemas.namespace,
22
+ labelSelector: CommonSchemas.labelSelector,
23
+ fieldSelector: CommonSchemas.fieldSelector,
24
+ storageClass: {
25
+ type: 'string',
26
+ description: 'Filter by storage class name',
27
+ optional: true,
28
+ },
29
+ accessMode: {
30
+ type: 'string',
31
+ description: 'Filter by access mode (ReadWriteOnce, ReadOnlyMany, ReadWriteMany)',
32
+ optional: true,
33
+ },
34
+ volumeMode: {
35
+ type: 'string',
36
+ description: 'Filter by volume mode (Filesystem, Block)',
37
+ optional: true,
38
+ },
39
+ analyze: {
40
+ type: 'boolean',
41
+ description: 'Include detailed analysis with issue detection and binding status',
42
+ optional: true,
43
+ default: true,
44
+ },
45
+ },
46
+ },
47
+ };
48
+
49
+ async execute(params: any, client: KubernetesClient): Promise<any> {
50
+ try {
51
+ const {
52
+ namespace,
53
+ labelSelector,
54
+ fieldSelector,
55
+ storageClass,
56
+ accessMode,
57
+ volumeMode,
58
+ analyze = true,
59
+ } = params || {};
60
+ const pvcOperations = client.resources.persistentVolumeClaims;
61
+
62
+ let analysis = {};
63
+ if (analyze) {
64
+ analysis = await pvcOperations.analyzePVCs({
65
+ namespace,
66
+ labelSelector,
67
+ fieldSelector,
68
+ storageClass,
69
+ accessMode,
70
+ volumeMode,
71
+ });
72
+ }
73
+
74
+ const bindingStatus = await pvcOperations.checkBindingStatus();
75
+
76
+ const res = await pvcOperations.list({
77
+ namespace,
78
+ labelSelector,
79
+ fieldSelector,
80
+ storageClass,
81
+ accessMode,
82
+ volumeMode,
83
+ });
84
+
85
+ const persistentVolumeClaims = res.items.map((pvc: any) => ({
86
+ metadata: formatResourceMetadata(pvc),
87
+ spec: {
88
+ storageClassName: pvc.spec?.storageClassName,
89
+ accessModes: pvc.spec?.accessModes,
90
+ resources: pvc.spec?.resources,
91
+ volumeMode: pvc.spec?.volumeMode,
92
+ volumeName: pvc.spec?.volumeName,
93
+ },
94
+ status: {
95
+ ...formatResourceStatus(pvc),
96
+ phase: pvc.status?.phase,
97
+ capacity: pvc.status?.capacity,
98
+ },
99
+ }));
100
+
101
+ return {
102
+ total: persistentVolumeClaims.length,
103
+ namespace: namespace || 'all',
104
+ analysis,
105
+ bindingStatus,
106
+ persistentVolumeClaims,
107
+ };
108
+ } catch (error: any) {
109
+ const errorMessage = error.response?.body?.message || error.message || 'Unknown error';
110
+ throw new Error(`Failed to list persistent volume claims: ${errorMessage}`);
111
+ }
112
+ }
113
+ }