@confluentinc/mcp-confluent 1.4.0 → 1.6.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 (489) hide show
  1. package/README.md +57 -34
  2. package/config.example.yaml +36 -7
  3. package/config.oauth.example.yaml +14 -1
  4. package/dist/build-config.d.ts +1 -0
  5. package/dist/build-config.d.ts.map +1 -1
  6. package/dist/build-config.js +1 -0
  7. package/dist/build-config.js.map +1 -1
  8. package/dist/cli.d.ts +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +128 -94
  11. package/dist/cli.js.map +1 -1
  12. package/dist/config/env-config.d.ts +9 -3
  13. package/dist/config/env-config.d.ts.map +1 -1
  14. package/dist/config/env-config.js +15 -34
  15. package/dist/config/env-config.js.map +1 -1
  16. package/dist/config/models.d.ts +105 -13
  17. package/dist/config/models.d.ts.map +1 -1
  18. package/dist/config/models.js +49 -37
  19. package/dist/config/models.js.map +1 -1
  20. package/dist/confluent/base-client-manager.d.ts +3 -1
  21. package/dist/confluent/base-client-manager.d.ts.map +1 -1
  22. package/dist/confluent/base-client-manager.js +5 -1
  23. package/dist/confluent/base-client-manager.js.map +1 -1
  24. package/dist/confluent/client-manager.d.ts +15 -1
  25. package/dist/confluent/client-manager.d.ts.map +1 -1
  26. package/dist/confluent/direct-client-manager.d.ts +1 -1
  27. package/dist/confluent/direct-client-manager.d.ts.map +1 -1
  28. package/dist/confluent/middleware.d.ts +1 -1
  29. package/dist/confluent/middleware.d.ts.map +1 -1
  30. package/dist/confluent/node-deps.d.ts +8 -0
  31. package/dist/confluent/node-deps.d.ts.map +1 -1
  32. package/dist/confluent/node-deps.js +9 -2
  33. package/dist/confluent/node-deps.js.map +1 -1
  34. package/dist/confluent/oauth/auth0-config.d.ts +26 -4
  35. package/dist/confluent/oauth/auth0-config.d.ts.map +1 -1
  36. package/dist/confluent/oauth/auth0-config.js +59 -19
  37. package/dist/confluent/oauth/auth0-config.js.map +1 -1
  38. package/dist/confluent/oauth/pkce-login.d.ts.map +1 -1
  39. package/dist/confluent/oauth/pkce-login.js +180 -150
  40. package/dist/confluent/oauth/pkce-login.js.map +1 -1
  41. package/dist/confluent/oauth/types.d.ts +1 -2
  42. package/dist/confluent/oauth/types.d.ts.map +1 -1
  43. package/dist/confluent/oauth-client-manager.d.ts +6 -3
  44. package/dist/confluent/oauth-client-manager.d.ts.map +1 -1
  45. package/dist/confluent/oauth-client-manager.js +28 -6
  46. package/dist/confluent/oauth-client-manager.js.map +1 -1
  47. package/dist/confluent/oauth-resource-resolvers.d.ts +11 -0
  48. package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -1
  49. package/dist/confluent/oauth-resource-resolvers.js +24 -0
  50. package/dist/confluent/oauth-resource-resolvers.js.map +1 -1
  51. package/dist/confluent/schema-registry-helper.d.ts +131 -7
  52. package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
  53. package/dist/confluent/schema-registry-helper.js +336 -40
  54. package/dist/confluent/schema-registry-helper.js.map +1 -1
  55. package/dist/confluent/schema.d.ts +2 -2
  56. package/dist/confluent/schema.d.ts.map +1 -1
  57. package/dist/confluent/sentry-redact.d.ts +5 -0
  58. package/dist/confluent/sentry-redact.d.ts.map +1 -0
  59. package/dist/confluent/sentry-redact.js +64 -0
  60. package/dist/confluent/sentry-redact.js.map +1 -0
  61. package/dist/confluent/sentry.d.ts +23 -0
  62. package/dist/confluent/sentry.d.ts.map +1 -0
  63. package/dist/confluent/sentry.js +68 -0
  64. package/dist/confluent/sentry.js.map +1 -0
  65. package/dist/confluent/tools/base-tools.d.ts +169 -24
  66. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  67. package/dist/confluent/tools/base-tools.js +225 -21
  68. package/dist/confluent/tools/base-tools.js.map +1 -1
  69. package/dist/confluent/tools/cluster-arg-resolvers.d.ts +22 -1
  70. package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -1
  71. package/dist/confluent/tools/cluster-arg-resolvers.js +50 -4
  72. package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -1
  73. package/dist/confluent/tools/connection-predicates.d.ts +70 -7
  74. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -1
  75. package/dist/confluent/tools/connection-predicates.js +69 -6
  76. package/dist/confluent/tools/connection-predicates.js.map +1 -1
  77. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +9 -3
  78. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
  79. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +77 -62
  80. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  81. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +5 -5
  82. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  83. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +9 -5
  84. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  85. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +5 -5
  86. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  87. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +9 -5
  88. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  89. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +5 -5
  90. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  91. package/dist/confluent/tools/handlers/catalog/delete-tag.js +9 -5
  92. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  93. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +6 -6
  94. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  95. package/dist/confluent/tools/handlers/catalog/list-tags.js +14 -6
  96. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  97. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +5 -5
  98. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  99. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +9 -5
  100. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  101. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +4 -3
  102. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  103. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +1 -1
  104. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  105. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +8 -8
  106. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -1
  107. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +9 -10
  108. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -1
  109. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +3 -3
  110. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  111. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +1 -2
  112. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  113. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +3 -3
  114. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  115. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +1 -2
  116. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  117. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts +3 -3
  118. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -1
  119. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +1 -2
  120. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -1
  121. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +3 -3
  122. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -1
  123. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +1 -2
  124. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -1
  125. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +3 -3
  126. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -1
  127. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +2 -3
  128. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -1
  129. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +3 -3
  130. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -1
  131. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +171 -100
  132. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -1
  133. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +3 -3
  134. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -1
  135. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +1 -2
  136. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -1
  137. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +3 -3
  138. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -1
  139. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +1 -2
  140. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -1
  141. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +3 -3
  142. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -1
  143. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +1 -2
  144. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -1
  145. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +3 -3
  146. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  147. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +1 -2
  148. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  149. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +3 -3
  150. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -1
  151. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +1 -2
  152. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -1
  153. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +3 -3
  154. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -1
  155. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +1 -2
  156. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -1
  157. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +3 -3
  158. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -1
  159. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +1 -2
  160. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -1
  161. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +3 -3
  162. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -1
  163. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +1 -2
  164. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -1
  165. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts +43 -0
  166. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts.map +1 -0
  167. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js +297 -0
  168. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js.map +1 -0
  169. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts +32 -0
  170. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts.map +1 -0
  171. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js +116 -0
  172. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js.map +1 -0
  173. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts +52 -0
  174. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts.map +1 -0
  175. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js +114 -0
  176. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js.map +1 -0
  177. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +22 -44
  178. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -1
  179. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +95 -81
  180. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -1
  181. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts +28 -0
  182. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts.map +1 -0
  183. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js +93 -0
  184. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js.map +1 -0
  185. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +4 -3
  186. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -1
  187. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -1
  188. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +4 -3
  189. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -1
  190. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -1
  191. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +9 -3
  192. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  193. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +68 -46
  194. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  195. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +4 -3
  196. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  197. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +2 -2
  198. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  199. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +1 -1
  200. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
  201. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +12 -6
  202. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
  203. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +3 -3
  204. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  205. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +24 -21
  206. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  207. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts +1 -1
  208. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -1
  209. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +3 -3
  210. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  211. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +24 -21
  212. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  213. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +3 -3
  214. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  215. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +9 -7
  216. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  217. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +3 -3
  218. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  219. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +14 -12
  220. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  221. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +3 -3
  222. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  223. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +14 -12
  224. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  225. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +3 -3
  226. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  227. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +27 -22
  228. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  229. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +3 -3
  230. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  231. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +20 -12
  232. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  233. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +3 -3
  234. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  235. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +20 -12
  236. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  237. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +3 -3
  238. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  239. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +203 -156
  240. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  241. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts +12 -8
  242. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
  243. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js +346 -377
  244. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js.map +1 -1
  245. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +3 -3
  246. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  247. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +374 -317
  248. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  249. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +4 -3
  250. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  251. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js +133 -57
  252. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  253. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +27 -6
  254. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -1
  255. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +37 -7
  256. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -1
  257. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +3 -3
  258. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  259. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +20 -12
  260. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  261. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts +9 -0
  262. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts.map +1 -0
  263. package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.js → get-flink-statement-results-handler.js} +30 -22
  264. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.js.map +1 -0
  265. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts +11 -0
  266. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts.map +1 -0
  267. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js +118 -0
  268. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js.map +1 -0
  269. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +3 -3
  270. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  271. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +19 -17
  272. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  273. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +4 -3
  274. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  275. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +1 -1
  276. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  277. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +21 -10
  278. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  279. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +136 -73
  280. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  281. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +4 -3
  282. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  283. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +12 -3
  284. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  285. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +4 -3
  286. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  287. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +1 -1
  288. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  289. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts +4 -3
  290. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -1
  291. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +6 -41
  292. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -1
  293. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +4 -3
  294. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -1
  295. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +6 -10
  296. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -1
  297. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +4 -3
  298. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -1
  299. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +1 -1
  300. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -1
  301. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +4 -3
  302. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  303. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +1 -1
  304. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  305. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts +4 -3
  306. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -1
  307. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +1 -1
  308. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -1
  309. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +4 -3
  310. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  311. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +1 -1
  312. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  313. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +1 -1
  314. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -1
  315. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +12 -4
  316. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  317. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +140 -34
  318. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  319. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +5 -5
  320. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  321. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +105 -60
  322. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  323. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +5 -5
  324. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  325. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +75 -57
  326. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  327. package/dist/confluent/tools/handlers/metrics/telemetry-error.d.ts +9 -0
  328. package/dist/confluent/tools/handlers/metrics/telemetry-error.d.ts.map +1 -0
  329. package/dist/confluent/tools/handlers/metrics/telemetry-error.js +38 -0
  330. package/dist/confluent/tools/handlers/metrics/telemetry-error.js.map +1 -0
  331. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +4 -3
  332. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -1
  333. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +2 -1
  334. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -1
  335. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts +11 -0
  336. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts.map +1 -0
  337. package/dist/confluent/tools/handlers/schema/create-schema-handler.js +76 -0
  338. package/dist/confluent/tools/handlers/schema/create-schema-handler.js.map +1 -0
  339. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +4 -3
  340. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
  341. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +1 -1
  342. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  343. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +4 -3
  344. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  345. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +101 -72
  346. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  347. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +5 -5
  348. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  349. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +9 -5
  350. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  351. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +5 -5
  352. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  353. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +9 -5
  354. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  355. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts +3 -3
  356. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  357. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +2 -2
  358. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  359. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts +3 -3
  360. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  361. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +2 -2
  362. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  363. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts +3 -3
  364. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  365. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +2 -2
  366. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  367. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts +3 -3
  368. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  369. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +2 -2
  370. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  371. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts +3 -3
  372. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  373. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +1 -1
  374. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  375. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts +3 -3
  376. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  377. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +1 -1
  378. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  379. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +15 -10
  380. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -1
  381. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +17 -14
  382. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -1
  383. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +3 -3
  384. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  385. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +2 -2
  386. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  387. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts +3 -3
  388. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  389. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +2 -2
  390. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  391. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts +3 -3
  392. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  393. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +2 -2
  394. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  395. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts +3 -3
  396. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  397. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +2 -2
  398. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  399. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts +3 -3
  400. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  401. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +1 -1
  402. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  403. package/dist/confluent/tools/pagination.d.ts +31 -0
  404. package/dist/confluent/tools/pagination.d.ts.map +1 -0
  405. package/dist/confluent/tools/pagination.js +40 -0
  406. package/dist/confluent/tools/pagination.js.map +1 -0
  407. package/dist/confluent/tools/tool-availability.d.ts +63 -32
  408. package/dist/confluent/tools/tool-availability.d.ts.map +1 -1
  409. package/dist/confluent/tools/tool-availability.js +101 -69
  410. package/dist/confluent/tools/tool-availability.js.map +1 -1
  411. package/dist/confluent/tools/tool-input-error.d.ts +17 -0
  412. package/dist/confluent/tools/tool-input-error.d.ts.map +1 -0
  413. package/dist/confluent/tools/tool-input-error.js +23 -0
  414. package/dist/confluent/tools/tool-input-error.js.map +1 -0
  415. package/dist/confluent/tools/tool-metadata-handler.d.ts +52 -0
  416. package/dist/confluent/tools/tool-metadata-handler.d.ts.map +1 -0
  417. package/dist/confluent/tools/tool-metadata-handler.js +61 -0
  418. package/dist/confluent/tools/tool-metadata-handler.js.map +1 -0
  419. package/dist/confluent/tools/tool-name.d.ts +7 -2
  420. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  421. package/dist/confluent/tools/tool-name.js +6 -1
  422. package/dist/confluent/tools/tool-name.js.map +1 -1
  423. package/dist/confluent/tools/tool-registry.d.ts +1 -1
  424. package/dist/confluent/tools/tool-registry.d.ts.map +1 -1
  425. package/dist/confluent/tools/tool-registry.js +24 -2
  426. package/dist/confluent/tools/tool-registry.js.map +1 -1
  427. package/dist/env-schema.d.ts +0 -1
  428. package/dist/env-schema.d.ts.map +1 -1
  429. package/dist/env-schema.js +0 -7
  430. package/dist/env-schema.js.map +1 -1
  431. package/dist/env.d.ts +1 -2
  432. package/dist/env.d.ts.map +1 -1
  433. package/dist/index.d.ts +54 -64
  434. package/dist/index.d.ts.map +1 -1
  435. package/dist/index.js +78 -324
  436. package/dist/index.js.map +1 -1
  437. package/dist/lazy.d.ts +4 -2
  438. package/dist/lazy.d.ts.map +1 -1
  439. package/dist/lazy.js +27 -12
  440. package/dist/lazy.js.map +1 -1
  441. package/dist/logger.d.ts +1 -1
  442. package/dist/logger.d.ts.map +1 -1
  443. package/dist/mcp/server.d.ts +6 -4
  444. package/dist/mcp/server.d.ts.map +1 -1
  445. package/dist/mcp/server.js +19 -6
  446. package/dist/mcp/server.js.map +1 -1
  447. package/dist/mcp/transports/auth.d.ts +1 -1
  448. package/dist/mcp/transports/auth.d.ts.map +1 -1
  449. package/dist/mcp/transports/http.d.ts +3 -3
  450. package/dist/mcp/transports/http.d.ts.map +1 -1
  451. package/dist/mcp/transports/manager.d.ts +1 -1
  452. package/dist/mcp/transports/manager.d.ts.map +1 -1
  453. package/dist/mcp/transports/manager.js.map +1 -1
  454. package/dist/mcp/transports/ping.d.ts +1 -1
  455. package/dist/mcp/transports/ping.d.ts.map +1 -1
  456. package/dist/mcp/transports/server.d.ts +3 -3
  457. package/dist/mcp/transports/server.d.ts.map +1 -1
  458. package/dist/mcp/transports/server.js +1 -1
  459. package/dist/mcp/transports/server.js.map +1 -1
  460. package/dist/mcp/transports/sse.d.ts +3 -3
  461. package/dist/mcp/transports/sse.d.ts.map +1 -1
  462. package/dist/mcp/transports/stdio.d.ts +2 -2
  463. package/dist/mcp/transports/stdio.d.ts.map +1 -1
  464. package/dist/preflight.d.ts +33 -0
  465. package/dist/preflight.d.ts.map +1 -0
  466. package/dist/preflight.js +68 -0
  467. package/dist/preflight.js.map +1 -0
  468. package/dist/print-md-schema.js +21 -18
  469. package/dist/print-md-schema.js.map +1 -1
  470. package/dist/server-main.d.ts +104 -0
  471. package/dist/server-main.d.ts.map +1 -0
  472. package/dist/server-main.js +410 -0
  473. package/dist/server-main.js.map +1 -0
  474. package/dist/server-runtime.d.ts +22 -7
  475. package/dist/server-runtime.d.ts.map +1 -1
  476. package/dist/server-runtime.js +45 -28
  477. package/dist/server-runtime.js.map +1 -1
  478. package/dist/utils/quote-join-ids.d.ts +9 -0
  479. package/dist/utils/quote-join-ids.d.ts.map +1 -0
  480. package/dist/utils/quote-join-ids.js +11 -0
  481. package/dist/utils/quote-join-ids.js.map +1 -0
  482. package/package.json +37 -35
  483. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +0 -9
  484. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +0 -1
  485. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +0 -1
  486. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +0 -18
  487. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +0 -1
  488. package/dist/confluent/tools/handlers/kafka/topic-metadata.js +0 -18
  489. package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +0 -1
package/README.md CHANGED
@@ -6,9 +6,17 @@
6
6
  An open-source [MCP server](https://modelcontextprotocol.io/) that enables AI assistants to interact with Confluent Cloud, Confluent Platform, and standalone Apache Kafka deployments through natural language.
7
7
  It provides 50+ tools across Kafka, Flink SQL, Schema Registry, Connectors, Tableflow, and more -- usable from any MCP-compatible client including Claude Desktop, Claude Code, Cursor, VS Code, Goose, and Gemini CLI.
8
8
 
9
+ > [!TIP]
10
+ > **Already a Confluent Cloud customer?**
11
+ > Confluent offers a [fully managed MCP server](https://docs.confluent.io/cloud/current/ai/ai-tools/managed-mcp-server.html) with no local server to run and no dependencies to install.
12
+ > It provides access to your Confluent Cloud resources with AI-powered connector diagnostics, governed by your existing RBAC permissions.
13
+ > Use this open-source server if you need Confluent Platform / self-managed Kafka support, or want to customize and extend the toolset.
14
+ >
15
+ > **NOTE:** The open-source MCP server is a community-supported project. Confluent doesn’t provide dedicated support for it, and support is best-effort only, with no service level commitments. If you run into an issue or want to contribute, open an issue or pull request directly in this repository.
16
+
9
17
  ## Quick Start
10
18
 
11
- > **Prerequisites:** [Node.js 22+](https://nodejs.org/).
19
+ > **Prerequisites:** [Node.js 22.19.0+](https://nodejs.org/).
12
20
  > If you want to interact with [Confluent Cloud](https://confluent.cloud/), you need to create an account first.
13
21
 
14
22
  1. Generate a quick `config.yaml` file in your project root:
@@ -56,10 +64,10 @@ npx -y @confluentinc/mcp-confluent --list-tools
56
64
 
57
65
  These tools need no service blocks or authentication — they're enabled even on a bare config, regardless of which deployment the rest of your config targets.
58
66
 
59
- | Category | Tools | Description |
60
- | ----------------- | --------------------------------------------- | --------------------------------------------------------- |
61
- | **Documentation** | `search-product-docs`, `get-product-doc-page` | Search Confluent product docs and fetch full page content |
62
- | **Diagnostics** | `explain-disabled-tools` | Explain why specific tools are absent from `tools/list` |
67
+ | Category | Tools | Description |
68
+ | ----------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
69
+ | **Documentation** | `search-product-docs`, `get-product-doc-page` | Search Confluent product docs and fetch full page content |
70
+ | **Diagnostics** | `explain-disabled-tools`, `list-configured-connections`, `config-help`, `describe-configured-connection` | Explain why tools are absent, list configured connections and the tools enabled on each, suggest the YAML to enable a specific tool, and describe one connection's config and tool availability |
63
71
 
64
72
  ### Available Tools for Confluent Cloud
65
73
 
@@ -67,24 +75,26 @@ These tools require endpoints and authentication against specific Confluent Clou
67
75
  Refer to [`config.example.yaml`](config.example.yaml) for the full set of configuration variables.
68
76
  Categories marked with ¹ also work with [OAuth authentication](#oauth-authentication-for-confluent-cloud) — sign in via your browser instead of provisioning API keys.
69
77
 
70
- | Category | Tools | Description |
71
- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
72
- | **Kafka** ¹ | `list-topics`, `create-topics`, `delete-topics`, `produce-message`, `consume-messages`, `list-consumer-groups`, `describe-consumer-group`, `get-consumer-group-lag`, `alter-topic-config`, `get-topic-config` | Manage topics, produce/consume messages, inspect consumer groups, configure topic settings |
73
- | **Flink SQL** | `create-flink-statement`, `list-flink-statements`, `read-flink-statement`, `delete-flink-statements`, `get-flink-statement-exceptions` | Create and manage Flink SQL statements |
74
- | **Flink Catalog** | `list-flink-catalogs`, `list-flink-databases`, `list-flink-tables`, `describe-flink-table`, `get-flink-table-info` | Explore Flink catalogs, databases, and table schemas |
75
- | **Flink Diagnostics** | `check-flink-statement-health`, `detect-flink-statement-issues`, `get-flink-statement-profile` | Health checks, issue detection, and query profiling |
76
- | **Connectors** | `list-connectors`, `get-connector-config`, `get-connector-offsets`, `get-connector-status`, `get-connector-tasks`, `get-connector-error-summary`, `get-connector-error-recommendations`, `get-connector-logs`, `create-connector`, `delete-connector`, `pause-connector`, `resume-connector`, `restart-connector`, `update-connector-config` | Inspect and manage Kafka Connect connectors |
77
- | **Schema Registry** ¹ | `list-schemas`, `delete-schema` | List, inspect, and delete data schemas |
78
- | **Catalog & Tags** | `search-topics-by-tag`, `search-topics-by-name`, `create-topic-tags`, `delete-tag`, `remove-tag-from-entity`, `add-tags-to-topic`, `list-tags` | Organize and search topics using tags |
79
- | **Organizations, Environments & Clusters** ¹ | `list-organizations`, `list-environments`, `read-environment`, `list-clusters` | Discover Confluent Cloud resources |
80
- | **Tableflow** | `create-tableflow-topic`, `list-tableflow-topics`, `read-tableflow-topic`, `update-tableflow-topic`, `delete-tableflow-topic`, `list-tableflow-regions` | Manage Tableflow-enabled topics |
81
- | **Tableflow Catalog** | `create-tableflow-catalog-integration`, `list-tableflow-catalog-integrations`, `read-tableflow-catalog-integration`, `update-tableflow-catalog-integration`, `delete-tableflow-catalog-integration` | Manage Tableflow catalog integrations (e.g., AWS Glue) |
82
- | **Metrics** | `list-available-metrics`, `query-metrics` | Discover and query Confluent Cloud operational metrics |
83
- | **Billing** ¹ | `list-billing-costs` | Query billing and cost data |
78
+ | Category | Tools | Description |
79
+ | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
80
+ | **Kafka** ¹ | `list-topics`, `create-topics`, `delete-topics`, `produce-message`, `consume-messages`, `list-consumer-groups`, `describe-consumer-group`, `get-consumer-group-lag`, `alter-topic-config`, `get-topic-config` | Manage topics, produce/consume messages, inspect consumer groups, configure topic settings |
81
+ | **Flink SQL** ¹ | `create-flink-statement`, `list-flink-statements`, `get-flink-statement-results`, `delete-flink-statements`, `get-flink-statement-exceptions`, `list-compute-pools` | Create and manage Flink SQL statements; discover Flink compute pools |
82
+ | **Flink Catalog** ¹ | `list-flink-catalogs`, `list-flink-databases`, `list-flink-tables`, `describe-flink-table`, `get-flink-table-info` | Explore Flink catalogs, databases, and table schemas |
83
+ | **Flink Diagnostics** ¹ | `check-flink-statement-health`, `detect-flink-statement-issues`, `get-flink-statement-profile` | Health checks, issue detection, and query profiling |
84
+ | **Connectors** ¹ | `list-connectors`, `get-connector-config`, `get-connector-offsets`, `get-connector-status`, `get-connector-tasks`, `get-connector-error-summary`, `get-connector-error-recommendations`, `get-connector-logs`, `create-connector` ², `delete-connector`, `pause-connector`, `resume-connector`, `restart-connector`, `update-connector-config` | Inspect and manage Kafka Connect connectors |
85
+ | **Schema Registry** ¹ | `list-schemas`, `create-schema`, `delete-schema` | List, inspect, create, and delete data schemas |
86
+ | **Catalog & Tags** ¹ | `search-topics-by-tag`, `search-topics-by-name`, `create-topic-tags`, `delete-tag`, `remove-tag-from-entity`, `add-tags-to-topic`, `list-tags` | Organize and search topics using tags |
87
+ | **Organizations, Environments & Clusters** ¹ | `list-organizations`, `list-environments`, `read-environment`, `list-clusters` | Discover Confluent Cloud resources |
88
+ | **Tableflow** ¹ | `create-tableflow-topic`, `list-tableflow-topics`, `read-tableflow-topic`, `update-tableflow-topic`, `delete-tableflow-topic`, `list-tableflow-regions` | Manage Tableflow-enabled topics |
89
+ | **Tableflow Catalog** ¹ | `create-tableflow-catalog-integration`, `list-tableflow-catalog-integrations`, `read-tableflow-catalog-integration`, `update-tableflow-catalog-integration`, `delete-tableflow-catalog-integration` | Manage Tableflow catalog integrations (e.g., AWS Glue) |
90
+ | **Metrics** ¹ | `list-available-metrics`, `query-metrics` | Discover and query Confluent Cloud operational metrics |
91
+ | **Billing** ¹ | `list-billing-costs` | Query billing and cost data |
84
92
 
85
93
  ¹ Also available under OAuth — see [OAuth Authentication for Confluent Cloud](#oauth-authentication-for-confluent-cloud) for setup and caveats.
86
94
  Categories not marked currently require a `direct` connection with static API keys; OAuth migration is in progress.
87
95
 
96
+ ² Individual tool not available under OAuth; requires a `direct` connection with static API keys.
97
+
88
98
  ### Available Tools for local deployments
89
99
 
90
100
  These tools only require Kafka or Schema Registry endpoints - no Confluent Cloud API key/secret is needed.
@@ -106,7 +116,7 @@ Ready-to-use variants live in [`sample_configs/`](sample_configs/).
106
116
  | Category | Tools | Description |
107
117
  | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
108
118
  | **Kafka** | `list-topics`, `create-topics`, `delete-topics`, `produce-message`, `consume-messages`, `list-consumer-groups`, `describe-consumer-group`, `get-consumer-group-lag` | Manage topics, produce/consume messages, inspect consumer groups |
109
- | **Schema Registry** | `list-schemas`, `delete-schema` | List, inspect, and delete data schemas |
119
+ | **Schema Registry** | `list-schemas`, `create-schema`, `delete-schema` | List, inspect, create, and delete data schemas |
110
120
 
111
121
  ## Using with Confluent Platform
112
122
 
@@ -128,7 +138,7 @@ CP clusters frequently sit behind an internal CA.
128
138
  If you see TLS handshake failures against the broker or Schema Registry, point Node at your CA bundle when starting the server:
129
139
 
130
140
  ```bash
131
- NODE_EXTRA_CA_CERTS=/path/to/internal-ca.pem npm run start -- --config path/to/config.yaml
141
+ NODE_EXTRA_CA_CERTS=/path/to/internal-ca.pem pnpm run start -- --config path/to/config.yaml
132
142
  ```
133
143
 
134
144
  ### End-to-end smoke test
@@ -140,21 +150,30 @@ The matching integration tests are tagged `@cp` and live next to their handlers
140
150
  docker compose -f docker-compose.cp-test.yml up -d
141
151
  # Wait ~30s for Kafka + SR to become ready, then:
142
152
  CP_KAFKA_USERNAME=mcp CP_KAFKA_PASSWORD=mcp-secret \
143
- npm run test:integration -- --tags-filter=@cp
153
+ pnpm run test:integration --tags-filter=@cp
144
154
  docker compose -f docker-compose.cp-test.yml down -v
145
155
  ```
146
156
 
147
- The tests skip cleanly when those env vars are unset, so `npm run test:unit` and a default `npm run test:integration` against your real Confluent Cloud account are unaffected if you don't have the docker stack running.
157
+ The tests skip cleanly when those env vars are unset, so `pnpm run test:unit` and a default `pnpm run test:integration` against your real Confluent Cloud account are unaffected if you don't have the docker stack running.
148
158
 
149
159
  ## Getting Started
150
160
 
151
161
  ### Prerequisites
152
162
 
153
- - **Node.js 22 or later** -- we recommend using [NVM](https://github.com/nvm-sh/nvm) to manage versions:
163
+ - **Node.js 22.19.0 or later** -- we recommend using [NVM](https://github.com/nvm-sh/nvm) to manage versions:
154
164
  ```bash
155
165
  nvm install 22
156
166
  nvm use 22
157
167
  ```
168
+ - **[pnpm](https://pnpm.io/installation)** -- only needed to build from source (the `npx` quick start above does not require it).
169
+ On macOS the simplest install is Homebrew; `npm` works cross-platform:
170
+ ```bash
171
+ brew install pnpm # macOS
172
+ # or, cross-platform:
173
+ npm install -g pnpm
174
+ ```
175
+ See pnpm's [installation guide](https://pnpm.io/installation) for other options.
176
+ The exact pnpm version is pinned in the `packageManager` field of `package.json`, and pnpm automatically runs that pinned version (via its built-in package-manager version management), so a recent pnpm install is all you need -- no separate Corepack setup required.
158
177
  - A local environment with Kafka or Schema Registry running, or a **Confluent Cloud** account with appropriate API keys or login credentials if [using OAuth to authenticate](#oauth-authentication-for-confluent-cloud).
159
178
 
160
179
  ### General Setup Steps
@@ -180,8 +199,8 @@ npx @confluentinc/mcp-confluent --init-config
180
199
  3. **Start the Server:** You can run the MCP server in one of two ways:
181
200
  - **From source:** Follow the instructions in the [Contributing Guide](CONTRIBUTING.md) to build and run the server from source.
182
201
  This typically involves:
183
- - Installing dependencies (`npm install`)
184
- - Building the project (`npm run build` or `npm run dev`)
202
+ - Installing dependencies (`pnpm install`)
203
+ - Building the project (`pnpm run build` or `pnpm run dev`)
185
204
  - **With npx:** You can start the server directly using npx, no build required:
186
205
 
187
206
  ```bash
@@ -204,8 +223,8 @@ The full configuration reference — YAML schema, every service block, env-var i
204
223
 
205
224
  > **Compatibility note.** This release ships full parity between YAML (`-c config.yaml`) and the legacy env-var path (`-e config.env`) for a single connection.
206
225
  > The env-var-only path will emit a startup warning in a near-future release and be removed a release or two later.
207
- > Multi-connection support (next release) will be YAML-only.
208
- > See [CONFIGURATION.md → Two paths, one configuration](CONFIGURATION.md#two-paths-one-configuration).
226
+ > Defining multiple connections (or none) is YAML-only — the env-var path can express only a single connection.
227
+ > See [CONFIGURATION.md → Two paths, one configuration](CONFIGURATION.md#two-paths-one-configuration) and [CONFIGURATION.md → Multiple connections (and zero connections)](CONFIGURATION.md#multiple-connections-and-zero-connections).
209
228
 
210
229
  ### Prerequisites & setup for Tableflow commands
211
230
 
@@ -383,17 +402,18 @@ flink:
383
402
  detect-flink-statement-issues: Detect issues for a Flink SQL statement by analyzing status, exceptions, and performance metrics. Identifies problems...
384
403
  get-flink-statement-exceptions: Retrieve the 10 most recent exceptions for a Flink SQL statement. Useful for diagnosing failed or failing statements.
385
404
  get-flink-statement-profile: Get Query Profiler data for a Flink SQL statement. Returns the task graph with human-readable task/operator names, pe...
405
+ get-flink-statement-results: Fetch the result rows produced by a Flink SQL statement.
386
406
  get-flink-table-info: Get table metadata via INFORMATION_SCHEMA.TABLES. Returns watermark configuration, distribution info, and table type.
407
+ list-compute-pools: Get the Flink compute pools in the Confluent Cloud environment. Paginated; if the response includes a nextPageToken, pas...
387
408
  list-flink-catalogs: List all catalogs available in the Flink environment via INFORMATION_SCHEMA.CATALOGS.
388
409
  list-flink-databases: List all databases (schemas) in a Flink catalog via INFORMATION_SCHEMA.SCHEMATA. Returns catalog and database names.
389
410
  list-flink-statements: Retrieve a sorted, filtered, paginated list of all statements.
390
411
  list-flink-tables: List all tables in a Flink database via INFORMATION_SCHEMA.TABLES. Returns table names and types.
391
- read-flink-statement: Make a request to read a statement and its results
392
412
 
393
413
  kafka:
394
414
  alter-topic-config: Alter topic configuration in Confluent Cloud.
395
415
  consume-messages: Consume messages from Kafka topics. Optionally restrict to a partition, start from an offset, timestamp, earliest, la...
396
- create-topics: Create one or more Kafka topics with an optional partition count.
416
+ create-topics: Create one or more Kafka topics with an optional partition count and replication factor.
397
417
  delete-topics: Delete the topic with the given names.
398
418
  describe-consumer-group: Describe a single consumer group on a Kafka cluster. Returns the group's state, type, protocol, partition assignor, c...
399
419
  get-consumer-group-lag: Compute live offset lag for a single Kafka consumer group. Returns per-(topic, partition) {committedOffset, highWater...
@@ -404,13 +424,16 @@ kafka:
404
424
  produce-message: Produce records to a Kafka topic. Supports Confluent Schema Registry serialization (AVRO, JSON, PROTOBUF) for both ke...
405
425
 
406
426
  mcp-server-diagnostics:
427
+ config-help: Call when the user wants to enable or unlock a specific tool (e.g. "how do I enable the tableflow tools?", "what config does cr...
407
428
  explain-disabled-tools: Call when the user asks why a tool is missing or unavailable (e.g., "why can't I list Kafka topics?", "where are the ...
429
+ list-configured-connections: List every configured connection and the connection-routable tools you can invoke against each. The connection id (th...
408
430
 
409
431
  metrics:
410
432
  list-available-metrics: List available Confluent Cloud metrics and their filter fields from the Telemetry API. Use this tool BEFORE query-met...
411
433
  query-metrics: Query Confluent Cloud metrics from the Telemetry API. IMPORTANT: Use the list-available-metrics tool first to discove...
412
434
 
413
435
  schema-registry:
436
+ create-schema: Register a new schema (or a new version of an existing schema) under a subject in the Schema Registry.
414
437
  delete-schema: Delete a schema subject or a specific version from the Schema Registry. If version is omitted, all versions of the su...
415
438
  list-schemas: List all schemas in the Schema Registry.
416
439
 
@@ -448,13 +471,13 @@ Please refer to the following guides for step-by-step instructions on setting up
448
471
 
449
472
  ## Telemetry
450
473
 
451
- This MCP server collects usage data to help make improvements.
452
- You can opt out by setting `DO_NOT_TRACK=true` in your environment.
453
- See [telemetry.md](telemetry.md) for full details on what is collected.
474
+ This MCP server collects usage data and reports server-side runtime errors (via [Sentry](https://sentry.io)) to help make improvements.
475
+ You can opt out of both by setting `DO_NOT_TRACK=true` in your environment (or `server.do_not_track: true` in YAML).
476
+ See [telemetry.md](telemetry.md) for full details on what is collected and what is never sent.
454
477
 
455
478
  ## Troubleshooting
456
479
 
457
- **"Node.js version not supported"** -- This project requires Node.js 22 or later.
480
+ **"Node.js version not supported"** -- This project requires Node.js 22.19.0 or later.
458
481
  Check your version with `node -v` and upgrade if needed.
459
482
 
460
483
  **Tools not appearing** -- Each tool requires specific service blocks in your `config.yaml`.
@@ -8,9 +8,11 @@
8
8
  # rather than the YAML itself. Plain literal values are also fine when you do
9
9
  # not need interpolation.
10
10
  #
11
- # Each sub-block under `connections.<name>` is independently optional; remove
12
- # the ones you do not need. At least one of `kafka`, `schema_registry`,
13
- # `confluent_cloud`, `flink`, `tableflow`, or `telemetry` must remain.
11
+ # Each service block under a `direct` connection (`kafka`, `schema_registry`,
12
+ # `confluent_cloud`, `flink`, `tableflow`, `telemetry`) is independently
13
+ # optional; remove the ones you do not need, but at least one must remain. An
14
+ # `oauth` connection carries no service blocks — see the commented-out example
15
+ # at the end of this file.
14
16
 
15
17
  # --- Server ---
16
18
  # MCP server transport, authentication, and logging settings.
@@ -64,13 +66,26 @@ server:
64
66
  # disabled: true
65
67
 
66
68
  connections:
67
- # Connection name is freeform. Today exactly one connection is read at
68
- # runtime; multi-connection support is the focus of the next release, and
69
- # this plural structure is here so that landing it does not require any
70
- # schema changes on your side.
69
+ # Connection id is freeform. A config may define several connections
70
+ # and route each tool call to one by id — and may mix api-key (`direct`)
71
+ # connections with at most one browser-login (`oauth`) connection. See the
72
+ # commented-out OAuth connection at the end of this file.
71
73
  default:
72
74
  type: direct
73
75
 
76
+ # Optional human-readable label for this connection, echoed back by the
77
+ # `list-configured-connections` tool so an agent can tell your connections apart.
78
+ # A blank value is treated as no description.
79
+ description: "Primary Confluent Cloud connection"
80
+
81
+ # Read-only policy (default false). With `read_only: true`, every tool that
82
+ # mutates state is auto-disabled for this connection — only read-only tools
83
+ # stay enabled (a tool's posture comes from its `readOnlyHint` annotation).
84
+ # Use it to hand an agent a staging/prod connection while keeping full
85
+ # read/write on a dev one. Left at the default here so this connection
86
+ # stays read/write:
87
+ # read_only: true
88
+
74
89
  # --- Kafka ---
75
90
  # `bootstrap_servers` is required for any Kafka client (admin, producer,
76
91
  # consumer). `rest_endpoint` + `cluster_id` + `env_id` are required for
@@ -147,3 +162,17 @@ connections:
147
162
  # type: api_key
148
163
  # key: "${TELEMETRY_API_KEY}"
149
164
  # secret: "${TELEMETRY_API_SECRET}"
165
+
166
+ # --- OAuth connection (browser login instead of API keys) ---
167
+ # A config may pair any number of `direct` connections like the one above with
168
+ # at most one `oauth` connection. Uncomment to add one: on the first tool call
169
+ # needing Confluent Cloud access, the server opens the CCloud sign-in page
170
+ # (PKCE) and reuses that session for the rest of the process — no API keys to
171
+ # provision. OAuth connections carry no service blocks; resource IDs
172
+ # (cluster_id, environment_id, ...) are passed as tool arguments at call time.
173
+ # Not every tool is OAuth-eligible yet (see CONFIGURATION.md → Authentication
174
+ # modes). For an OAuth-only starter, run `--init-oauth-config` instead.
175
+ # ccloud:
176
+ # type: oauth
177
+ # description: "Confluent Cloud (OAuth login)"
178
+ # # read_only: true
@@ -32,11 +32,24 @@
32
32
  # # disabled: true
33
33
 
34
34
  connections:
35
- # Connection name is freeform. The `type: oauth` declaration is the only
35
+ # Connection id is freeform. The `type: oauth` declaration is the only
36
36
  # required field.
37
37
  ccloud-oauth:
38
38
  type: oauth
39
39
 
40
+ # Optional human-readable label for this connection, echoed back by the
41
+ # `list-configured-connections` tool so an agent can tell your connections apart.
42
+ # A blank value is treated as no description.
43
+ description: "Confluent Cloud (OAuth login)"
44
+
45
+ # Read-only policy (default false). With `read_only: true`, every tool that
46
+ # mutates state is auto-disabled for this connection — only read-only tools
47
+ # stay enabled (a tool's posture comes from its `readOnlyHint` annotation,
48
+ # so there is nothing to configure per-tool). This is the recommended
49
+ # posture for pointing an agent at a production Cloud login while keeping
50
+ # full read/write on a dev connection. Uncomment to lock this one down:
51
+ # read_only: true
52
+
40
53
  # librdkafka `debug` contexts to emit on stderr for this OAuth connection's
41
54
  # native Kafka client. Reach for it when an OAuth/OAUTHBEARER SASL handshake
42
55
  # misbehaves and you need to see which side broke — works the same in
@@ -1,2 +1,3 @@
1
1
  export declare const TELEMETRY_WRITE_KEY = "";
2
+ export declare const SENTRY_DSN = "";
2
3
  //# sourceMappingURL=build-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,KAAK,CAAC"}
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,UAAU,KAAK,CAAC"}
@@ -1,2 +1,3 @@
1
1
  // build-time values injected by scripts/inject-build-config.mjs during `npm pack`
2
2
  export const TELEMETRY_WRITE_KEY = "r8x6rkJhvAkwtFMklJ93VfURC2X5jqBb";
3
+ export const SENTRY_DSN = "https://cf649c7d3782809b1b475085cb8b72d9@o114100.ingest.us.sentry.io/4511649921761280";
@@ -1 +1 @@
1
- {"version":3,"file":"build-config.js","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"build-config.js","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ToolName } from "./confluent/tools/tool-name.js";
2
2
  import { TransportType } from "./mcp/transports/types.js";
3
- import { KeyValuePairObject } from "properties-file";
3
+ import type { KeyValuePairObject } from "properties-file";
4
4
  /**
5
5
  * Thrown when Commander has already printed help or version text and the process
6
6
  * should exit cleanly (code 0). Callers catch this to call process.exit(0)
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGpE;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;;CAKxD;AAGD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAkGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAwJvD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBtE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,GACnB,QAAQ,EAAE,CA4CZ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAexE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1D;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;;CAKxD;AAGD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAiRD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmBvD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBtE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,GACnB,QAAQ,EAAE,CAmBZ;AA6CD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAexE"}
package/dist/cli.js CHANGED
@@ -73,6 +73,47 @@ function readFileLines(filePath) {
73
73
  .filter((line) => line && !line.startsWith("#"));
74
74
  return lines;
75
75
  }
76
+ /**
77
+ * Enforces the three post-parse mutual-exclusivity rules not already covered by
78
+ * `assertNoConfigConflicts` (which handles `--config`'s exclusivity with
79
+ * `--transport`, `--disable-auth`, `--allowed-hosts`, and `--kafka-config-file`).
80
+ */
81
+ function assertNoMutuallyExclusiveOptions(opts) {
82
+ if (opts.ccloudEnv && !opts.oauth) {
83
+ throw new Error("--ccloud-env requires --oauth");
84
+ }
85
+ if (opts.oauth && opts.config) {
86
+ throw new Error("--oauth and --config cannot be combined: declare OAuth as a connection inside the YAML (type: oauth) instead of passing --oauth");
87
+ }
88
+ if (opts.initConfig && opts.initOauthConfig) {
89
+ throw new Error("--init-config and --init-oauth-config are mutually exclusive: pick one template to bootstrap.");
90
+ }
91
+ }
92
+ /**
93
+ * Resolves the shared allow/block-list precedence: an inline CLI value wins,
94
+ * otherwise fall back to reading the file, otherwise undefined.
95
+ */
96
+ function resolveToolList(inlineValue, fileValue) {
97
+ if (inlineValue) {
98
+ return parseToolList(inlineValue);
99
+ }
100
+ if (fileValue) {
101
+ return readFileLines(fileValue);
102
+ }
103
+ return undefined;
104
+ }
105
+ /**
106
+ * Translates a Commander parse failure into `DisplayedCommandLineUsageError`
107
+ * when Commander already printed help/version text, otherwise rethrows as-is.
108
+ */
109
+ function rethrowCommanderError(error) {
110
+ if (error instanceof CommanderError &&
111
+ (error.code === "commander.helpDisplayed" ||
112
+ error.code === "commander.version")) {
113
+ throw new DisplayedCommandLineUsageError();
114
+ }
115
+ throw error;
116
+ }
76
117
  function assertNoConfigConflicts(config, kafkaConfigFile, disableAuth, allowedHosts, transportExplicitlySet) {
77
118
  if (!config)
78
119
  return;
@@ -94,21 +135,12 @@ function assertNoConfigConflicts(config, kafkaConfigFile, disableAuth, allowedHo
94
135
  }
95
136
  }
96
137
  /**
97
- * Parse command line arguments into a structured CLIOptions object.
98
- *
99
- * Only minimally interprets the raw CLI input in order to populate CLIOptions:
100
- * 1. Will dereference and parse named files for tool allow/block lists.
101
- * 2. Will parse the kafka config properties file into an object.
102
- *
103
- * Does NOT load environment variables from the env file, nor does it load or
104
- * validate the YAML configuration file.
105
- *
106
- * @param argv - Array of command line arguments (e.g., process.argv)
107
- * @returns Structured CLIOptions object with parsed and validated values.
108
- * @throws Error if CLI arguments are invalid, if specified files cannot be read, or if file contents are malformed.
138
+ * Builds the Commander program definition (name, description, all options).
139
+ * Split out from `parseCliArgs` purely so `ParsedCliOptions` below can be
140
+ * derived from its return type instead of hand-duplicated.
109
141
  */
110
- export function parseCliArgs(argv) {
111
- const program = new Command()
142
+ function buildProgram() {
143
+ return new Command()
112
144
  .name("mcp-confluent")
113
145
  .description("Confluent MCP Server - Model Context Protocol implementation for Confluent Cloud")
114
146
  .version(getPackageVersion())
@@ -133,67 +165,60 @@ export function parseCliArgs(argv) {
133
165
  .addOption(new Option("--ccloud-env <env>", "Override the Auth0 environment for --oauth (devel/stag/prod). Defaults to prod when omitted.").choices(["devel", "stag", "prod"]))
134
166
  .allowExcessArguments(false)
135
167
  .exitOverride();
168
+ }
169
+ /**
170
+ * Maps Commander's parsed options to the CLIOptions shape returned by
171
+ * `parseCliArgs`, applying the allow/block tool-list precedence and the
172
+ * optional-field coercions the CLI contract requires.
173
+ */
174
+ function optsToCliOptions(opts) {
175
+ return {
176
+ envFile: opts.envFile,
177
+ config: opts.config,
178
+ transports: Array.isArray(opts.transport)
179
+ ? opts.transport
180
+ : [opts.transport],
181
+ allowTools: resolveToolList(opts.allowTools, opts.allowToolsFile),
182
+ blockTools: resolveToolList(opts.blockTools, opts.blockToolsFile),
183
+ listTools: !!opts.listTools,
184
+ kafkaConfig: opts.kafkaConfigFile
185
+ ? parsePropertiesFile(opts.kafkaConfigFile)
186
+ : undefined,
187
+ disableAuth: opts.disableAuth ? true : undefined,
188
+ allowedHosts: opts.allowedHosts
189
+ ? opts.allowedHosts.split(",").map((h) => h.trim().toLowerCase())
190
+ : undefined,
191
+ generateKey: !!opts.generateKey,
192
+ initConfig: !!opts.initConfig,
193
+ initOauthConfig: !!opts.initOauthConfig,
194
+ oauth: opts.oauth,
195
+ ccloudEnv: opts.ccloudEnv,
196
+ };
197
+ }
198
+ /**
199
+ * Parse command line arguments into a structured CLIOptions object.
200
+ *
201
+ * Only minimally interprets the raw CLI input in order to populate CLIOptions:
202
+ * 1. Will dereference and parse named files for tool allow/block lists.
203
+ * 2. Will parse the kafka config properties file into an object.
204
+ *
205
+ * Does NOT load environment variables from the env file, nor does it load or
206
+ * validate the YAML configuration file.
207
+ *
208
+ * @param argv - Array of command line arguments (e.g., process.argv)
209
+ * @returns Structured CLIOptions object with parsed and validated values.
210
+ * @throws Error if CLI arguments are invalid, if specified files cannot be read, or if file contents are malformed.
211
+ */
212
+ export function parseCliArgs(argv) {
213
+ const program = buildProgram();
136
214
  try {
137
215
  const opts = program.parse(argv).opts();
138
216
  assertNoConfigConflicts(opts.config, opts.kafkaConfigFile, opts.disableAuth, opts.allowedHosts, program.getOptionValueSource("transport") === "cli");
139
- if (opts.ccloudEnv && !opts.oauth) {
140
- throw new Error("--ccloud-env requires --oauth");
141
- }
142
- if (opts.oauth && opts.config) {
143
- throw new Error("--oauth and --config cannot be combined: declare OAuth as a connection inside the YAML (type: oauth) instead of passing --oauth");
144
- }
145
- if (opts.initConfig && opts.initOauthConfig) {
146
- throw new Error("--init-config and --init-oauth-config are mutually exclusive: pick one template to bootstrap.");
147
- }
148
- // Precedence: CLI > file > undefined
149
- let allowTools = undefined;
150
- let blockTools = undefined;
151
- if (opts.allowTools) {
152
- allowTools = parseToolList(opts.allowTools);
153
- }
154
- else if (opts.allowToolsFile) {
155
- allowTools = readFileLines(opts.allowToolsFile);
156
- }
157
- if (opts.blockTools) {
158
- blockTools = parseToolList(opts.blockTools);
159
- }
160
- else if (opts.blockToolsFile) {
161
- blockTools = readFileLines(opts.blockToolsFile);
162
- }
163
- return {
164
- envFile: opts.envFile,
165
- config: opts.config,
166
- transports: Array.isArray(opts.transport)
167
- ? opts.transport
168
- : [opts.transport],
169
- allowTools,
170
- blockTools,
171
- listTools: !!opts.listTools,
172
- kafkaConfig: opts.kafkaConfigFile
173
- ? parsePropertiesFile(opts.kafkaConfigFile)
174
- : undefined,
175
- disableAuth: opts.disableAuth ? true : undefined,
176
- allowedHosts: opts.allowedHosts
177
- ? opts.allowedHosts
178
- .split(",")
179
- .map((h) => h.trim().toLowerCase())
180
- : undefined,
181
- generateKey: !!opts.generateKey,
182
- initConfig: !!opts.initConfig,
183
- initOauthConfig: !!opts.initOauthConfig,
184
- oauth: opts.oauth,
185
- ccloudEnv: opts.ccloudEnv,
186
- };
217
+ assertNoMutuallyExclusiveOptions(opts);
218
+ return optsToCliOptions(opts);
187
219
  }
188
220
  catch (error) {
189
- if (error instanceof CommanderError &&
190
- (error.code === "commander.helpDisplayed" ||
191
- error.code === "commander.version")) {
192
- // Help or version was displayed, signal to main() to exit(0).
193
- throw new DisplayedCommandLineUsageError();
194
- }
195
- // throw anything else as back to main() unchanged.
196
- throw error;
221
+ rethrowCommanderError(error);
197
222
  }
198
223
  }
199
224
  /**
@@ -256,34 +281,43 @@ export function loadDotEnvFile(envFile) {
256
281
  * @returns An alphabetically sorted array of enabled ToolNames.
257
282
  */
258
283
  export function getFilteredToolNames(allowTools, blockTools) {
259
- let filteredToolNames = new Set(Object.values(ToolName));
260
284
  const validToolNames = new Set(Object.values(ToolName));
261
- if ((!allowTools || allowTools.length === 0) &&
262
- (!blockTools || blockTools.length === 0)) {
285
+ if (allowTools.length === 0 && blockTools.length === 0) {
263
286
  logger.info("No allow/block tool lists provided; all tools are enabled by default.");
264
287
  }
265
- else {
266
- if (allowTools.length > 0) {
267
- const valid = allowTools.filter((t) => validToolNames.has(t));
268
- const invalid = allowTools.filter((t) => !validToolNames.has(t));
269
- if (invalid.length > 0) {
270
- logger.warn(`Ignoring invalid tool names in allow list: ${invalid.join(", ")}`);
271
- }
272
- filteredToolNames = new Set(valid.map((t) => t));
273
- }
274
- if (blockTools.length > 0) {
275
- const validBlock = new Set(blockTools.filter((t) => validToolNames.has(t)));
276
- const invalidBlock = blockTools.filter((t) => !validToolNames.has(t));
277
- if (invalidBlock.length > 0) {
278
- logger.warn(`Ignoring invalid tool names in block list: ${invalidBlock.join(", ")}`);
279
- }
280
- for (const tool of validBlock) {
281
- filteredToolNames.delete(tool);
282
- }
283
- }
288
+ const filteredToolNames = allowTools.length > 0
289
+ ? applyAllowList(allowTools, validToolNames)
290
+ : new Set(validToolNames);
291
+ if (blockTools.length > 0) {
292
+ applyBlockList(filteredToolNames, blockTools, validToolNames);
293
+ }
294
+ return Array.from(filteredToolNames).sort((a, b) => a.localeCompare(b));
295
+ }
296
+ /**
297
+ * Narrows `allowTools` to the set of valid `ToolName`s, warning about any
298
+ * unrecognized names rather than rejecting the whole list.
299
+ */
300
+ function applyAllowList(allowTools, validToolNames) {
301
+ const valid = allowTools.filter((t) => validToolNames.has(t));
302
+ const invalid = allowTools.filter((t) => !validToolNames.has(t));
303
+ if (invalid.length > 0) {
304
+ logger.warn(`Ignoring invalid tool names in allow list: ${invalid.join(", ")}`);
305
+ }
306
+ return new Set(valid.map((t) => t));
307
+ }
308
+ /**
309
+ * Removes `blockTools`' valid `ToolName`s from `current` in place, warning
310
+ * about any unrecognized names rather than rejecting the whole list.
311
+ */
312
+ function applyBlockList(current, blockTools, validToolNames) {
313
+ const validBlock = new Set(blockTools.filter((t) => validToolNames.has(t)));
314
+ const invalidBlock = blockTools.filter((t) => !validToolNames.has(t));
315
+ if (invalidBlock.length > 0) {
316
+ logger.warn(`Ignoring invalid tool names in block list: ${invalidBlock.join(", ")}`);
317
+ }
318
+ for (const tool of validBlock) {
319
+ current.delete(tool);
284
320
  }
285
- // Convert to array, sort, return.
286
- return Array.from(filteredToolNames).sort();
287
321
  }
288
322
  /**
289
323
  * Loads configuration from a properties file