@confluentinc/mcp-confluent 1.2.2 → 1.4.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 (508) hide show
  1. package/README.md +299 -240
  2. package/assets/oauth-templates/callback-failure.html +22 -0
  3. package/assets/oauth-templates/callback-success.html +99 -0
  4. package/assets/oauth-templates/logo.html +91 -0
  5. package/assets/oauth-templates/styles.html +110 -0
  6. package/config.example.yaml +149 -0
  7. package/config.oauth.example.yaml +45 -0
  8. package/dist/cli.d.ts +59 -12
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +131 -61
  11. package/dist/cli.js.map +1 -1
  12. package/dist/config/env-config.d.ts +33 -0
  13. package/dist/config/env-config.d.ts.map +1 -0
  14. package/dist/config/env-config.js +478 -0
  15. package/dist/config/env-config.js.map +1 -0
  16. package/dist/config/index.d.ts +31 -0
  17. package/dist/config/index.d.ts.map +1 -0
  18. package/dist/config/index.js +76 -0
  19. package/dist/config/index.js.map +1 -0
  20. package/dist/config/interpolation.d.ts +9 -0
  21. package/dist/config/interpolation.d.ts.map +1 -0
  22. package/dist/config/interpolation.js +51 -0
  23. package/dist/config/interpolation.js.map +1 -0
  24. package/dist/config/models.d.ts +399 -0
  25. package/dist/config/models.d.ts.map +1 -0
  26. package/dist/config/models.js +406 -0
  27. package/dist/config/models.js.map +1 -0
  28. package/dist/config/validation.d.ts +9 -0
  29. package/dist/config/validation.d.ts.map +1 -0
  30. package/dist/config/validation.js +46 -0
  31. package/dist/config/validation.js.map +1 -0
  32. package/dist/confluent/base-client-manager.d.ts +133 -0
  33. package/dist/confluent/base-client-manager.d.ts.map +1 -0
  34. package/dist/confluent/base-client-manager.js +188 -0
  35. package/dist/confluent/base-client-manager.js.map +1 -0
  36. package/dist/confluent/client-manager.d.ts +42 -77
  37. package/dist/confluent/client-manager.d.ts.map +1 -1
  38. package/dist/confluent/client-manager.js +5 -213
  39. package/dist/confluent/client-manager.js.map +1 -1
  40. package/dist/confluent/config-telemetry.d.ts +41 -0
  41. package/dist/confluent/config-telemetry.d.ts.map +1 -0
  42. package/dist/confluent/config-telemetry.js +17 -0
  43. package/dist/confluent/config-telemetry.js.map +1 -0
  44. package/dist/confluent/direct-client-manager.d.ts +43 -0
  45. package/dist/confluent/direct-client-manager.d.ts.map +1 -0
  46. package/dist/confluent/direct-client-manager.js +154 -0
  47. package/dist/confluent/direct-client-manager.js.map +1 -0
  48. package/dist/confluent/middleware.d.ts +32 -4
  49. package/dist/confluent/middleware.d.ts.map +1 -1
  50. package/dist/confluent/middleware.js +46 -2
  51. package/dist/confluent/middleware.js.map +1 -1
  52. package/dist/confluent/node-deps.d.ts +33 -39
  53. package/dist/confluent/node-deps.d.ts.map +1 -1
  54. package/dist/confluent/node-deps.js +48 -7
  55. package/dist/confluent/node-deps.js.map +1 -1
  56. package/dist/confluent/oauth/auth-context.d.ts +94 -0
  57. package/dist/confluent/oauth/auth-context.d.ts.map +1 -0
  58. package/dist/confluent/oauth/auth-context.js +323 -0
  59. package/dist/confluent/oauth/auth-context.js.map +1 -0
  60. package/dist/confluent/oauth/auth0-config.d.ts +12 -0
  61. package/dist/confluent/oauth/auth0-config.d.ts.map +1 -0
  62. package/dist/confluent/oauth/auth0-config.js +43 -0
  63. package/dist/confluent/oauth/auth0-config.js.map +1 -0
  64. package/dist/confluent/oauth/callback-pages.d.ts +13 -0
  65. package/dist/confluent/oauth/callback-pages.d.ts.map +1 -0
  66. package/dist/confluent/oauth/callback-pages.js +47 -0
  67. package/dist/confluent/oauth/callback-pages.js.map +1 -0
  68. package/dist/confluent/oauth/crypto-utils.d.ts +16 -0
  69. package/dist/confluent/oauth/crypto-utils.d.ts.map +1 -0
  70. package/dist/confluent/oauth/crypto-utils.js +23 -0
  71. package/dist/confluent/oauth/crypto-utils.js.map +1 -0
  72. package/dist/confluent/oauth/errors.d.ts +27 -0
  73. package/dist/confluent/oauth/errors.d.ts.map +1 -0
  74. package/dist/confluent/oauth/errors.js +6 -0
  75. package/dist/confluent/oauth/errors.js.map +1 -0
  76. package/dist/confluent/oauth/oauth-holder.d.ts +34 -0
  77. package/dist/confluent/oauth/oauth-holder.d.ts.map +1 -0
  78. package/dist/confluent/oauth/oauth-holder.js +155 -0
  79. package/dist/confluent/oauth/oauth-holder.js.map +1 -0
  80. package/dist/confluent/oauth/pkce-login.d.ts +45 -0
  81. package/dist/confluent/oauth/pkce-login.d.ts.map +1 -0
  82. package/dist/confluent/oauth/pkce-login.js +270 -0
  83. package/dist/confluent/oauth/pkce-login.js.map +1 -0
  84. package/dist/confluent/oauth/token-chain.d.ts +53 -0
  85. package/dist/confluent/oauth/token-chain.d.ts.map +1 -0
  86. package/dist/confluent/oauth/token-chain.js +141 -0
  87. package/dist/confluent/oauth/token-chain.js.map +1 -0
  88. package/dist/confluent/oauth/token-lifetimes.d.ts +13 -0
  89. package/dist/confluent/oauth/token-lifetimes.d.ts.map +1 -0
  90. package/dist/confluent/oauth/token-lifetimes.js +13 -0
  91. package/dist/confluent/oauth/token-lifetimes.js.map +1 -0
  92. package/dist/confluent/oauth/types.d.ts +68 -0
  93. package/dist/confluent/oauth/types.d.ts.map +1 -0
  94. package/dist/confluent/oauth/types.js +2 -0
  95. package/dist/confluent/oauth/types.js.map +1 -0
  96. package/dist/confluent/oauth-client-manager.d.ts +78 -0
  97. package/dist/confluent/oauth-client-manager.d.ts.map +1 -0
  98. package/dist/confluent/oauth-client-manager.js +265 -0
  99. package/dist/confluent/oauth-client-manager.js.map +1 -0
  100. package/dist/confluent/oauth-resource-resolvers.d.ts +6 -0
  101. package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -0
  102. package/dist/confluent/oauth-resource-resolvers.js +65 -0
  103. package/dist/confluent/oauth-resource-resolvers.js.map +1 -0
  104. package/dist/confluent/schema-registry-helper.d.ts +5 -9
  105. package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
  106. package/dist/confluent/schema-registry-helper.js +1 -9
  107. package/dist/confluent/schema-registry-helper.js.map +1 -1
  108. package/dist/confluent/telemetry.d.ts +38 -1
  109. package/dist/confluent/telemetry.d.ts.map +1 -1
  110. package/dist/confluent/telemetry.js +37 -8
  111. package/dist/confluent/telemetry.js.map +1 -1
  112. package/dist/confluent/tools/base-tools.d.ts +140 -23
  113. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  114. package/dist/confluent/tools/base-tools.js +98 -4
  115. package/dist/confluent/tools/base-tools.js.map +1 -1
  116. package/dist/confluent/tools/cluster-arg-resolvers.d.ts +75 -0
  117. package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -0
  118. package/dist/confluent/tools/cluster-arg-resolvers.js +127 -0
  119. package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -0
  120. package/dist/confluent/tools/connection-predicates.d.ts +176 -0
  121. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -0
  122. package/dist/confluent/tools/connection-predicates.js +284 -0
  123. package/dist/confluent/tools/connection-predicates.js.map +1 -0
  124. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +5 -6
  125. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
  126. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +40 -11
  127. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  128. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +6 -6
  129. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  130. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +6 -9
  131. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  132. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +6 -6
  133. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  134. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +6 -9
  135. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  136. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +6 -6
  137. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  138. package/dist/confluent/tools/handlers/catalog/delete-tag.js +6 -9
  139. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  140. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +6 -6
  141. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  142. package/dist/confluent/tools/handlers/catalog/list-tags.js +6 -9
  143. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  144. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +6 -6
  145. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  146. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +6 -9
  147. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  148. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +5 -6
  149. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  150. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +11 -13
  151. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  152. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +34 -0
  153. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -0
  154. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +47 -0
  155. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -0
  156. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +11 -7
  157. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  158. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +21 -21
  159. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  160. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +6 -7
  161. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  162. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +10 -15
  163. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  164. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts +9 -0
  165. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -0
  166. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +35 -0
  167. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -0
  168. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +9 -0
  169. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -0
  170. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +66 -0
  171. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -0
  172. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +9 -0
  173. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -0
  174. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +131 -0
  175. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -0
  176. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +9 -0
  177. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -0
  178. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +244 -0
  179. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -0
  180. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +9 -0
  181. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -0
  182. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +35 -0
  183. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -0
  184. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +9 -0
  185. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -0
  186. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +44 -0
  187. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -0
  188. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +9 -0
  189. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -0
  190. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +35 -0
  191. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -0
  192. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +6 -7
  193. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  194. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +15 -17
  195. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  196. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +9 -0
  197. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -0
  198. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +35 -0
  199. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -0
  200. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +9 -0
  201. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -0
  202. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +35 -0
  203. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -0
  204. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +9 -0
  205. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -0
  206. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +35 -0
  207. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -0
  208. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +9 -0
  209. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -0
  210. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +44 -0
  211. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -0
  212. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +58 -0
  213. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -0
  214. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +135 -0
  215. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -0
  216. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +18 -0
  217. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -0
  218. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js +235 -0
  219. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -0
  220. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +14 -0
  221. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -0
  222. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js +286 -0
  223. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -0
  224. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +11 -12
  225. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  226. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +11 -14
  227. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  228. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +5 -6
  229. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  230. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +6 -9
  231. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  232. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +32 -11
  233. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
  234. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +22 -16
  235. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
  236. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +5 -7
  237. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  238. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +34 -30
  239. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  240. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts +14 -0
  241. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -0
  242. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js +15 -0
  243. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js.map +1 -0
  244. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +5 -7
  245. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  246. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +34 -30
  247. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  248. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +5 -7
  249. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  250. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +21 -24
  251. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  252. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +5 -7
  253. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  254. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +21 -24
  255. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  256. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +5 -7
  257. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  258. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +22 -33
  259. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  260. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +5 -7
  261. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  262. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +18 -23
  263. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  264. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +5 -7
  265. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  266. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +7 -13
  267. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  268. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +5 -7
  269. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  270. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +7 -13
  271. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  272. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +5 -7
  273. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  274. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +8 -15
  275. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  276. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts +2 -2
  277. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
  278. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js.map +1 -1
  279. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +7 -7
  280. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  281. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +11 -17
  282. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  283. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +15 -2
  284. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  285. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  286. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +22 -0
  287. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -0
  288. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +32 -0
  289. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -0
  290. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +5 -7
  291. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  292. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +7 -13
  293. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  294. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +5 -7
  295. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  296. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +9 -17
  297. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  298. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +5 -7
  299. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +1 -1
  300. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js +7 -13
  301. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +1 -1
  302. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +5 -6
  303. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  304. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +22 -20
  305. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  306. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +216 -30
  307. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  308. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +797 -70
  309. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  310. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts +48 -0
  311. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts.map +1 -0
  312. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js +84 -0
  313. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js.map +1 -0
  314. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts +54 -0
  315. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts.map +1 -0
  316. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js +89 -0
  317. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js.map +1 -0
  318. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +5 -5
  319. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  320. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +52 -15
  321. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  322. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +5 -5
  323. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  324. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +26 -8
  325. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  326. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts +64 -0
  327. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -0
  328. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +140 -0
  329. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -0
  330. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +73 -0
  331. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -0
  332. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +337 -0
  333. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -0
  334. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +43 -0
  335. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -0
  336. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +123 -0
  337. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -0
  338. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +5 -6
  339. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  340. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +22 -20
  341. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  342. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts +45 -0
  343. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -0
  344. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +86 -0
  345. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -0
  346. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +5 -5
  347. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  348. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +25 -10
  349. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  350. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +54 -0
  351. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -0
  352. package/dist/confluent/tools/handlers/kafka/partition-watermarks.js +56 -0
  353. package/dist/confluent/tools/handlers/kafka/partition-watermarks.js.map +1 -0
  354. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +8 -8
  355. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  356. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +57 -46
  357. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  358. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +18 -0
  359. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +1 -0
  360. package/dist/confluent/tools/handlers/kafka/topic-metadata.js +18 -0
  361. package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +1 -0
  362. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +6 -6
  363. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  364. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +6 -9
  365. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  366. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +24 -6
  367. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  368. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +88 -53
  369. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  370. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +50 -0
  371. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -0
  372. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +116 -0
  373. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -0
  374. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +5 -5
  375. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
  376. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +13 -8
  377. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  378. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +5 -5
  379. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  380. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +13 -7
  381. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  382. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +6 -6
  383. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  384. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +6 -9
  385. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  386. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +6 -6
  387. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  388. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +6 -9
  389. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  390. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts +5 -7
  391. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  392. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +17 -13
  393. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  394. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts +5 -7
  395. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  396. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +6 -12
  397. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  398. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts +5 -7
  399. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  400. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +7 -13
  401. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  402. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts +5 -7
  403. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  404. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +6 -12
  405. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  406. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts +5 -7
  407. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  408. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +5 -9
  409. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  410. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts +5 -7
  411. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  412. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +18 -21
  413. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  414. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +26 -0
  415. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -0
  416. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +28 -0
  417. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -0
  418. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +5 -7
  419. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  420. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +17 -13
  421. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  422. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts +5 -7
  423. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  424. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +6 -12
  425. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  426. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts +5 -7
  427. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  428. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +7 -13
  429. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  430. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts +5 -7
  431. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  432. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +6 -12
  433. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  434. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts +5 -7
  435. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  436. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +5 -9
  437. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  438. package/dist/confluent/tools/tool-availability.d.ts +91 -0
  439. package/dist/confluent/tools/tool-availability.d.ts.map +1 -0
  440. package/dist/confluent/tools/tool-availability.js +130 -0
  441. package/dist/confluent/tools/tool-availability.js.map +1 -0
  442. package/dist/confluent/tools/tool-name.d.ts +20 -2
  443. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  444. package/dist/confluent/tools/tool-name.js +19 -1
  445. package/dist/confluent/tools/tool-name.js.map +1 -1
  446. package/dist/confluent/tools/tool-registry.d.ts +17 -0
  447. package/dist/confluent/tools/tool-registry.d.ts.map +1 -0
  448. package/dist/confluent/tools/{tool-factory.js → tool-registry.js} +66 -22
  449. package/dist/confluent/tools/tool-registry.js.map +1 -0
  450. package/dist/env-schema.d.ts +6 -7
  451. package/dist/env-schema.d.ts.map +1 -1
  452. package/dist/env-schema.js +30 -44
  453. package/dist/env-schema.js.map +1 -1
  454. package/dist/env.d.ts +17 -7
  455. package/dist/env.d.ts.map +1 -1
  456. package/dist/env.js +16 -6
  457. package/dist/env.js.map +1 -1
  458. package/dist/index.d.ts +74 -1
  459. package/dist/index.d.ts.map +1 -1
  460. package/dist/index.js +302 -166
  461. package/dist/index.js.map +1 -1
  462. package/dist/logger.d.ts.map +1 -1
  463. package/dist/logger.js +21 -20
  464. package/dist/logger.js.map +1 -1
  465. package/dist/mcp/server.d.ts +29 -0
  466. package/dist/mcp/server.d.ts.map +1 -0
  467. package/dist/mcp/server.js +53 -0
  468. package/dist/mcp/server.js.map +1 -0
  469. package/dist/mcp/transports/auth.d.ts +20 -4
  470. package/dist/mcp/transports/auth.d.ts.map +1 -1
  471. package/dist/mcp/transports/auth.js +27 -7
  472. package/dist/mcp/transports/auth.js.map +1 -1
  473. package/dist/mcp/transports/http.d.ts +8 -2
  474. package/dist/mcp/transports/http.d.ts.map +1 -1
  475. package/dist/mcp/transports/http.js +57 -42
  476. package/dist/mcp/transports/http.js.map +1 -1
  477. package/dist/mcp/transports/manager.d.ts +23 -9
  478. package/dist/mcp/transports/manager.d.ts.map +1 -1
  479. package/dist/mcp/transports/manager.js +27 -24
  480. package/dist/mcp/transports/manager.js.map +1 -1
  481. package/dist/mcp/transports/server.d.ts +1 -1
  482. package/dist/mcp/transports/server.d.ts.map +1 -1
  483. package/dist/mcp/transports/server.js +17 -5
  484. package/dist/mcp/transports/server.js.map +1 -1
  485. package/dist/mcp/transports/session-registry.d.ts +33 -0
  486. package/dist/mcp/transports/session-registry.d.ts.map +1 -0
  487. package/dist/mcp/transports/session-registry.js +65 -0
  488. package/dist/mcp/transports/session-registry.js.map +1 -0
  489. package/dist/mcp/transports/sse.d.ts +13 -2
  490. package/dist/mcp/transports/sse.d.ts.map +1 -1
  491. package/dist/mcp/transports/sse.js +58 -46
  492. package/dist/mcp/transports/sse.js.map +1 -1
  493. package/dist/server-runtime.d.ts +28 -0
  494. package/dist/server-runtime.d.ts.map +1 -0
  495. package/dist/server-runtime.js +73 -0
  496. package/dist/server-runtime.js.map +1 -0
  497. package/package.json +26 -9
  498. package/dist/confluent/helpers.d.ts +0 -11
  499. package/dist/confluent/helpers.d.ts.map +0 -1
  500. package/dist/confluent/helpers.js +0 -17
  501. package/dist/confluent/helpers.js.map +0 -1
  502. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +0 -11
  503. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +0 -1
  504. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +0 -59
  505. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +0 -1
  506. package/dist/confluent/tools/tool-factory.d.ts +0 -9
  507. package/dist/confluent/tools/tool-factory.d.ts.map +0 -1
  508. package/dist/confluent/tools/tool-factory.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAkB,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAGL,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,CAAC,EAAE,gBAAgB;IAY/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD9B,WAAW,IAAI,eAAe;IAIxB,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/server.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EAGX,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAGL,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,CAAC,EAAE,gBAAgB;IAY/B,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyElD,WAAW,IAAI,eAAe;IAIxB,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
@@ -1,8 +1,8 @@
1
1
  import fastifySwagger from "@fastify/swagger";
2
2
  import fastifySwaggerUi from "@fastify/swagger-ui";
3
- import env from "../../env.js";
4
3
  import { logger } from "../../logger.js";
5
- import { createAuthHook } from "../../mcp/transports/auth.js";
4
+ import { CFLT_MCP_API_KEY_HEADER, createAuthHook, } from "../../mcp/transports/auth.js";
5
+ import { pingHandler, pingRequestSchema, pingResponseSchema, } from "../../mcp/transports/ping.js";
6
6
  import { default as Fastify, } from "fastify";
7
7
  export class HttpServer {
8
8
  fastify;
@@ -18,7 +18,7 @@ export class HttpServer {
18
18
  this.authConfig = config.auth;
19
19
  }
20
20
  }
21
- async prepare() {
21
+ async prepare(config) {
22
22
  if (this.isSwaggerConfigured) {
23
23
  return;
24
24
  }
@@ -37,7 +37,7 @@ export class HttpServer {
37
37
  },
38
38
  servers: [
39
39
  {
40
- url: `http://${env.HTTP_HOST}:${env.HTTP_PORT}`,
40
+ url: `http://${config.host}:${config.port}`,
41
41
  description: "Local development server",
42
42
  },
43
43
  ],
@@ -45,7 +45,7 @@ export class HttpServer {
45
45
  securitySchemes: {
46
46
  apiKey: {
47
47
  type: "apiKey",
48
- name: "cflt-mcp-api-Key",
48
+ name: CFLT_MCP_API_KEY_HEADER,
49
49
  in: "header",
50
50
  },
51
51
  },
@@ -64,6 +64,18 @@ export class HttpServer {
64
64
  },
65
65
  staticCSP: true,
66
66
  });
67
+ // Register /ping at the server level (not per-transport) so HTTP+SSE configurations
68
+ // don't fail at startup with a duplicate-route error
69
+ this.fastify.post("/ping", {
70
+ schema: {
71
+ tags: ["mcp"],
72
+ summary: "JSON-RPC 2.0 ping endpoint",
73
+ body: pingRequestSchema,
74
+ response: {
75
+ 200: pingResponseSchema,
76
+ },
77
+ },
78
+ }, pingHandler());
67
79
  this.isSwaggerConfigured = true;
68
80
  }
69
81
  getInstance() {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/transports/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/transports/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { Transport as SdkTransport } from "@modelcontextprotocol/sdk/shared/transport.js";
3
+ /** Paired SDK transport + {@link McpServer} representing one MCP session. */
4
+ export interface SessionEntry<T extends SdkTransport = SdkTransport> {
5
+ readonly transport: T;
6
+ readonly server: McpServer;
7
+ }
8
+ /**
9
+ * Registry of {@link SessionEntry} pairs keyed by MCP session id. Multi-client transports need
10
+ * one {@link McpServer} per session because the SDK binds each server to a single transport.
11
+ *
12
+ * {@see https://github.com/modelcontextprotocol/typescript-sdk/blob/main/examples/server/src/simpleStreamableHttp.ts}
13
+ * {@see https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#session-management}
14
+ */
15
+ export declare class SessionRegistry<T extends SdkTransport = SdkTransport> {
16
+ private readonly sessions;
17
+ set(sessionId: string, entry: SessionEntry<T>): void;
18
+ get(sessionId: string): SessionEntry<T> | undefined;
19
+ /**
20
+ * Connects {@linkcode server} to {@linkcode transport}; closes both on rejection. The pair
21
+ * is not in the registry yet at this point (the SDK's {@linkcode T.onsessioninitialized}
22
+ * callback fires later, during {@linkcode T.handleRequest}), so failure here is an orphan
23
+ * cleanup, not a registry mutation.
24
+ */
25
+ bindServer(server: McpServer, transport: T): Promise<void>;
26
+ /** Closes the {@link SessionEntry} for {@linkcode sessionId} (if any) and removes it. */
27
+ closeAndRemove(sessionId: string): Promise<void>;
28
+ /** Closes every registered transport + server pair and clears the registry. */
29
+ closeAll(): Promise<void>;
30
+ /** Closes both halves of {@linkcode entry}, logging (not propagating) any failures. */
31
+ private closeEntry;
32
+ }
33
+ //# sourceMappingURL=session-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/session-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAG/F,6EAA6E;AAC7E,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACjE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,qBAAa,eAAe,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAE/D,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAIpD,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAInD;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,yFAAyF;IACnF,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD,+EAA+E;IACzE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B,uFAAuF;YACzE,UAAU;CAYzB"}
@@ -0,0 +1,65 @@
1
+ import { logger } from "../../logger.js";
2
+ /**
3
+ * Registry of {@link SessionEntry} pairs keyed by MCP session id. Multi-client transports need
4
+ * one {@link McpServer} per session because the SDK binds each server to a single transport.
5
+ *
6
+ * {@see https://github.com/modelcontextprotocol/typescript-sdk/blob/main/examples/server/src/simpleStreamableHttp.ts}
7
+ * {@see https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#session-management}
8
+ */
9
+ export class SessionRegistry {
10
+ sessions = new Map();
11
+ set(sessionId, entry) {
12
+ this.sessions.set(sessionId, entry);
13
+ }
14
+ get(sessionId) {
15
+ return this.sessions.get(sessionId);
16
+ }
17
+ /**
18
+ * Connects {@linkcode server} to {@linkcode transport}; closes both on rejection. The pair
19
+ * is not in the registry yet at this point (the SDK's {@linkcode T.onsessioninitialized}
20
+ * callback fires later, during {@linkcode T.handleRequest}), so failure here is an orphan
21
+ * cleanup, not a registry mutation.
22
+ */
23
+ async bindServer(server, transport) {
24
+ try {
25
+ await server.connect(transport);
26
+ }
27
+ catch (err) {
28
+ await this.closeEntry({ transport, server });
29
+ throw err;
30
+ }
31
+ }
32
+ /** Closes the {@link SessionEntry} for {@linkcode sessionId} (if any) and removes it. */
33
+ async closeAndRemove(sessionId) {
34
+ const entry = this.sessions.get(sessionId);
35
+ if (!entry)
36
+ return;
37
+ // delete first so a re-entrant call from `transport.onclose` is a no-op
38
+ this.sessions.delete(sessionId);
39
+ await this.closeEntry(entry);
40
+ }
41
+ /** Closes every registered transport + server pair and clears the registry. */
42
+ async closeAll() {
43
+ const entries = [...this.sessions.values()];
44
+ this.sessions.clear();
45
+ for (const entry of entries) {
46
+ await this.closeEntry(entry);
47
+ }
48
+ }
49
+ /** Closes both halves of {@linkcode entry}, logging (not propagating) any failures. */
50
+ async closeEntry(entry) {
51
+ try {
52
+ await entry.transport.close();
53
+ }
54
+ catch (err) {
55
+ logger.error({ err }, "transport.close() failed during session cleanup");
56
+ }
57
+ try {
58
+ await entry.server.close();
59
+ }
60
+ catch (err) {
61
+ logger.error({ err }, "server.close() failed during session cleanup");
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=session-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../../../src/mcp/transports/session-registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAQxC;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IACT,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE/D,GAAG,CAAC,SAAiB,EAAE,KAAsB;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,MAAiB,EAAE,SAAY;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7C,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,wEAAwE;QACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,uFAAuF;IAC/E,KAAK,CAAC,UAAU,CAAC,KAAsB;QAC7C,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,iDAAiD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,8CAA8C,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF"}
@@ -2,13 +2,24 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { HttpServer } from "../../mcp/transports/server.js";
3
3
  import { Transport } from "../../mcp/transports/types.js";
4
4
  export declare class SseTransport implements Transport {
5
- private server;
5
+ private serverFactory;
6
6
  private httpServer;
7
7
  private sseMcpEndpointPath;
8
8
  private sseMcpMessageEndpointPath;
9
9
  private sessions;
10
- constructor(server: McpServer, httpServer: HttpServer, sseMcpEndpointPath?: string, sseMcpMessageEndpointPath?: string);
10
+ constructor(serverFactory: () => McpServer, httpServer: HttpServer, sseMcpEndpointPath?: string, sseMcpMessageEndpointPath?: string);
11
11
  connect(): Promise<void>;
12
12
  disconnect(): Promise<void>;
13
+ /**
14
+ * Mints a per-session {@link McpServer} + {@link SSEServerTransport} pair, wires
15
+ * lifecycle callbacks, registers the session, then binds the server. Streamable HTTP gets
16
+ * the sessionId asynchronously via the SDK's {@linkcode onsessioninitialized} callback (which
17
+ * fires inside {@linkcode StreamableHTTPServerTransport.handleRequest}), so it can register
18
+ * lazily and a failed bind leaves no entry. SSE has no such callback — sessionId is known at
19
+ * construction — so we register first and roll back on bind rejection. Without the rollback
20
+ * a fast client could see {@linkcode SSEServerTransport.start}'s endpoint event, POST to
21
+ * {@linkcode sseMcpMessageEndpointPath} and race the {@linkcode sessions.set} call.
22
+ */
23
+ private createSession;
13
24
  }
14
25
  //# sourceMappingURL=sse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAiBzD,qBAAa,YAAa,YAAW,SAAS;IAI1C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,yBAAyB;IANnC,OAAO,CAAC,QAAQ,CAA0C;gBAGhD,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU,EACtB,kBAAkB,GAAE,MAAe,EACnC,yBAAyB,GAAE,MAAoB;IAGnD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+HxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAWlC"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAkBzD,qBAAa,YAAa,YAAW,SAAS;IAI1C,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,yBAAyB;IANnC,OAAO,CAAC,QAAQ,CAA6C;gBAGnD,aAAa,EAAE,MAAM,SAAS,EAC9B,UAAU,EAAE,UAAU,EACtB,kBAAkB,GAAE,MAAe,EACnC,yBAAyB,GAAE,MAAoB;IAGnD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmFxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;;;;;;;;OASG;YACW,aAAa;CA+C5B"}
@@ -1,6 +1,6 @@
1
- import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
1
+ import { sdkTransports } from "../../confluent/node-deps.js";
2
2
  import { logger } from "../../logger.js";
3
- import { pingHandler, pingRequestSchema, pingResponseSchema, } from "../../mcp/transports/ping.js";
3
+ import { SessionRegistry } from "../../mcp/transports/session-registry.js";
4
4
  const sseErrorSchema = {
5
5
  type: "object",
6
6
  properties: {
@@ -8,13 +8,13 @@ const sseErrorSchema = {
8
8
  },
9
9
  };
10
10
  export class SseTransport {
11
- server;
11
+ serverFactory;
12
12
  httpServer;
13
13
  sseMcpEndpointPath;
14
14
  sseMcpMessageEndpointPath;
15
- sessions = {};
16
- constructor(server, httpServer, sseMcpEndpointPath = "/sse", sseMcpMessageEndpointPath = "/messages") {
17
- this.server = server;
15
+ sessions = new SessionRegistry();
16
+ constructor(serverFactory, httpServer, sseMcpEndpointPath = "/sse", sseMcpMessageEndpointPath = "/messages") {
17
+ this.serverFactory = serverFactory;
18
18
  this.httpServer = httpServer;
19
19
  this.sseMcpEndpointPath = sseMcpEndpointPath;
20
20
  this.sseMcpMessageEndpointPath = sseMcpMessageEndpointPath;
@@ -30,25 +30,9 @@ export class SseTransport {
30
30
  400: sseErrorSchema,
31
31
  },
32
32
  },
33
- }, async (request, reply) => {
33
+ }, async (_request, reply) => {
34
34
  try {
35
- // Create transport with the correct message endpoint
36
- const transport = new SSEServerTransport(this.sseMcpMessageEndpointPath, reply.raw);
37
- // Get the session ID from the transport
38
- const sessionId = transport.sessionId;
39
- if (!sessionId) {
40
- throw new Error("Failed to get session ID from transport");
41
- }
42
- // Store the session before connecting to ensure it's available for messages
43
- this.sessions[sessionId] = transport;
44
- // Set up cleanup on connection close
45
- reply.raw.on("close", () => {
46
- logger.info(`SSE connection closed for session ${sessionId}`);
47
- delete this.sessions[sessionId];
48
- });
49
- // Connect the transport to the server
50
- await this.server.connect(transport);
51
- logger.info(`New SSE connection established for session ${sessionId}`);
35
+ await this.createSession(reply.raw);
52
36
  }
53
37
  catch (error) {
54
38
  logger.error({ error }, "Failed to establish SSE connection");
@@ -82,14 +66,13 @@ export class SseTransport {
82
66
  }, async (request, reply) => {
83
67
  try {
84
68
  const sessionId = request.query.sessionId;
85
- logger.info(`Received message for sessionId ${sessionId}`);
86
- const transport = this.sessions[sessionId];
87
- if (!transport) {
69
+ const entry = this.sessions.get(sessionId);
70
+ if (!entry) {
88
71
  logger.warn(`No transport found for sessionId: ${sessionId}`);
89
72
  reply.code(400).send({ error: "No transport found for sessionId" });
90
73
  return;
91
74
  }
92
- await transport.handlePostMessage(request.raw, reply.raw, request.body);
75
+ await entry.transport.handlePostMessage(request.raw, reply.raw, request.body);
93
76
  }
94
77
  catch (error) {
95
78
  logger.error({ error }, "Failed to process SSE message");
@@ -98,29 +81,58 @@ export class SseTransport {
98
81
  }
99
82
  }
100
83
  });
101
- // POST ping endpoint for health checks
102
- fastify.post("/ping", {
103
- schema: {
104
- tags: ["mcp"],
105
- summary: "JSON-RPC 2.0 ping endpoint",
106
- body: pingRequestSchema,
107
- response: {
108
- 200: pingResponseSchema,
109
- },
110
- },
111
- }, pingHandler());
112
84
  logger.info("SSE transport routes registered");
113
85
  }
114
86
  async disconnect() {
115
87
  logger.info("Cleaning up SSE transport sessions...");
116
- // Clean up all active sessions
117
- Object.values(this.sessions).forEach((transport) => {
118
- const sessionId = transport.sessionId;
119
- if (sessionId) {
120
- delete this.sessions[sessionId];
121
- }
122
- transport.close();
88
+ await this.sessions.closeAll();
89
+ }
90
+ /**
91
+ * Mints a per-session {@link McpServer} + {@link SSEServerTransport} pair, wires
92
+ * lifecycle callbacks, registers the session, then binds the server. Streamable HTTP gets
93
+ * the sessionId asynchronously via the SDK's {@linkcode onsessioninitialized} callback (which
94
+ * fires inside {@linkcode StreamableHTTPServerTransport.handleRequest}), so it can register
95
+ * lazily and a failed bind leaves no entry. SSE has no such callback — sessionId is known at
96
+ * construction — so we register first and roll back on bind rejection. Without the rollback
97
+ * a fast client could see {@linkcode SSEServerTransport.start}'s endpoint event, POST to
98
+ * {@linkcode sseMcpMessageEndpointPath} and race the {@linkcode sessions.set} call.
99
+ */
100
+ async createSession(rawResponse) {
101
+ const perSessionServer = this.serverFactory();
102
+ const transport = new sdkTransports.SSEServerTransport(this.sseMcpMessageEndpointPath, rawResponse);
103
+ const sessionId = transport.sessionId;
104
+ if (!sessionId) {
105
+ // SDK's SSEServerTransport always assigns a sessionId in its constructor; this branch is
106
+ // defensive. Close the just-created pair before throwing so we don't leak the McpServer
107
+ // and the SSE response stays detached.
108
+ await transport.close();
109
+ await perSessionServer.close();
110
+ throw new Error("Failed to get session ID from transport");
111
+ }
112
+ // fires on every close path (network drop, server-initiated, etc.) so abandoned sessions
113
+ // don't leak; closeAndRemove is idempotent against the not-yet-registered case
114
+ transport.onclose = () => {
115
+ this.sessions.closeAndRemove(sessionId).catch((err) => {
116
+ logger.error({ err, sessionId }, "Failed to close SSE session on transport.onclose");
117
+ });
118
+ };
119
+ this.sessions.set(sessionId, {
120
+ transport,
121
+ server: perSessionServer,
123
122
  });
123
+ try {
124
+ await this.sessions.bindServer(perSessionServer, transport);
125
+ }
126
+ catch (err) {
127
+ // bindServer already closed both halves via its internal closeEntry; we still call
128
+ // closeAndRemove here because bindServer doesn't know the registry key and the entry
129
+ // is what makes the session reachable to incoming POSTs. The duplicate close is safe:
130
+ // SDK transport.close() and McpServer.close() are both idempotent.
131
+ await this.sessions.closeAndRemove(sessionId);
132
+ throw err;
133
+ }
134
+ logger.info(`New SSE connection established for session ${sessionId}`);
135
+ return transport;
124
136
  }
125
137
  }
126
138
  //# sourceMappingURL=sse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/mcp/transports/sse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/mcp/transports/sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { MCPServerConfiguration } from "./config/index.js";
2
+ import { BaseClientManager } from "./confluent/base-client-manager.js";
3
+ import { OAuthHolder } from "./confluent/oauth/oauth-holder.js";
4
+ /**
5
+ * Aggregate of all runtime state threaded through the server.
6
+ *
7
+ * Carries config and per-connection client managers.
8
+ */
9
+ export declare class ServerRuntime {
10
+ readonly config: MCPServerConfiguration;
11
+ readonly clientManagers: Record<string, BaseClientManager>;
12
+ /**
13
+ * The active OAuth holder when any connection in the config has `type === "oauth"`.
14
+ * Constructed by {@link ServerRuntime.fromConfig}; `undefined` on api_key paths.
15
+ * Construction is side-effect-free — PKCE runs lazily on the first
16
+ * `holder.ensureLoggedIn()` call, which the MCP tool-call wrapper invokes
17
+ * before any handler that needs Confluent access.
18
+ */
19
+ readonly oauthHolder: OAuthHolder | undefined;
20
+ constructor(config: MCPServerConfiguration, clientManagers: Record<string, BaseClientManager>, oauthHolder?: OAuthHolder | undefined);
21
+ /**
22
+ * Convenience accessor for the single-connection period.
23
+ * Remove (or make multi-connection-aware) when issue #151 lands.
24
+ */
25
+ get clientManager(): BaseClientManager;
26
+ static fromConfig(config: MCPServerConfiguration): ServerRuntime;
27
+ }
28
+ //# sourceMappingURL=server-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-runtime.d.ts","sourceRoot":"","sources":["../src/server-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG1E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE;;;;GAIG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC3D;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;gBAG5C,MAAM,EAAE,sBAAsB,EAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACjD,WAAW,GAAE,WAAW,GAAG,SAAqB;IAOlD;;;OAGG;IACH,IAAI,aAAa,IAAI,iBAAiB,CAarC;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,sBAAsB,GAAG,aAAa;CA4CjE"}
@@ -0,0 +1,73 @@
1
+ import { constructDirectClientManager } from "./confluent/direct-client-manager.js";
2
+ import { OAuthClientManager } from "./confluent/oauth-client-manager.js";
3
+ import { OAuthHolder } from "./confluent/oauth/oauth-holder.js";
4
+ /**
5
+ * Aggregate of all runtime state threaded through the server.
6
+ *
7
+ * Carries config and per-connection client managers.
8
+ */
9
+ export class ServerRuntime {
10
+ config;
11
+ clientManagers;
12
+ /**
13
+ * The active OAuth holder when any connection in the config has `type === "oauth"`.
14
+ * Constructed by {@link ServerRuntime.fromConfig}; `undefined` on api_key paths.
15
+ * Construction is side-effect-free — PKCE runs lazily on the first
16
+ * `holder.ensureLoggedIn()` call, which the MCP tool-call wrapper invokes
17
+ * before any handler that needs Confluent access.
18
+ */
19
+ oauthHolder;
20
+ constructor(config, clientManagers, oauthHolder = undefined) {
21
+ this.config = config;
22
+ this.clientManagers = clientManagers;
23
+ this.oauthHolder = oauthHolder;
24
+ }
25
+ /**
26
+ * Convenience accessor for the single-connection period.
27
+ * Remove (or make multi-connection-aware) when issue #151 lands.
28
+ */
29
+ get clientManager() {
30
+ const managers = Object.values(this.clientManagers);
31
+ if (managers.length === 0) {
32
+ throw new Error("ServerRuntime has no client managers");
33
+ }
34
+ if (managers.length > 1) {
35
+ // enforceSingleConnectionOnly() in config/models.ts should prevent this at parse time;
36
+ // this guard is the runtime mirror of that constraint.
37
+ throw new Error("ServerRuntime has multiple client managers; use clientManagers[id] directly");
38
+ }
39
+ return managers[0];
40
+ }
41
+ static fromConfig(config) {
42
+ const oauthConns = Object.values(config.connections).filter((c) => c.type === "oauth");
43
+ if (oauthConns.length > 1) {
44
+ // `enforceSingleConnectionOnly()` already prevents this today; keep the
45
+ // defensive check so that when multi-connection support lands (#151),
46
+ // multi-OAuth is rejected explicitly rather than silently picking one.
47
+ throw new Error(`Multiple OAuth connections defined in configuration; only one is supported`);
48
+ }
49
+ const oauthConn = oauthConns[0];
50
+ const oauthHolder = oauthConn
51
+ ? new OAuthHolder(oauthConn.ccloud_env)
52
+ : undefined;
53
+ // Construct a client manager for each connection in the config.
54
+ // (although currently there will only be one, see `enforceSingleConnectionOnly()`)
55
+ // When OAuth is in play, every connection's manager is bearer-auth-backed by
56
+ // the shared holder; otherwise, fall back to the per-connection direct factory.
57
+ const clientManagers = Object.fromEntries(Object.entries(config.connections).map(([id, conn]) => {
58
+ if (oauthHolder && oauthConn) {
59
+ return [
60
+ id,
61
+ new OAuthClientManager(oauthHolder, oauthConn.ccloud_env, oauthConn.kafka_debug),
62
+ ];
63
+ }
64
+ // No OAuth connection found, so every connection is direct.
65
+ if (conn.type !== "direct") {
66
+ throw new Error(`Internal error: connection ${id} is not direct but no OAuth holder was constructed`);
67
+ }
68
+ return [id, constructDirectClientManager(conn)];
69
+ }));
70
+ return new ServerRuntime(config, clientManagers, oauthHolder);
71
+ }
72
+ }
73
+ //# sourceMappingURL=server-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-runtime.js","sourceRoot":"","sources":["../src/server-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACf,MAAM,CAAyB;IAC/B,cAAc,CAAoC;IAC3D;;;;;;OAMG;IACM,WAAW,CAA0B;IAE9C,YACE,MAA8B,EAC9B,cAAiD,EACjD,cAAuC,SAAS;QAEhD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACf,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,uFAAuF;YACvF,uDAAuD;YACvD,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,CAAC,CAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAA8B;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CACzD,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CACtD,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,wEAAwE;YACxE,sEAAsE;YACtE,uEAAuE;YACvE,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,SAAS;YAC3B,CAAC,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;YACvC,CAAC,CAAC,SAAS,CAAC;QAEd,gEAAgE;QAChE,mFAAmF;QACnF,6EAA6E;QAC7E,gFAAgF;QAChF,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CACvC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACpD,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;gBAC7B,OAAO;oBACL,EAAE;oBACF,IAAI,kBAAkB,CACpB,WAAW,EACX,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,WAAW,CACtB;iBACO,CAAC;YACb,CAAC;YACD,4DAA4D;YAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,8BAA8B,EAAE,oDAAoD,CACrF,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,EAAE,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAU,CAAC;QAC3D,CAAC,CAAC,CACH,CAAC;QACF,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;CACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@confluentinc/mcp-confluent",
3
3
  "description": "Confluent MCP Server",
4
- "version": "1.2.2",
4
+ "version": "1.4.0",
5
5
  "author": "Confluent Inc.",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -25,10 +25,15 @@
25
25
  "homepage": "https://www.confluent.io/blog/ai-agents-using-anthropic-mcp/",
26
26
  "scripts": {
27
27
  "dev": "concurrently \"tsc -p tsconfig.build.json --watch\" \"tsc-alias -p tsconfig.build.json --watch\"",
28
- "test": "vitest run",
29
- "test:coverage": "vitest run --coverage",
30
- "test:watch": "vitest",
31
- "test:ts": "tsc --noEmit",
28
+ "test": "npm run build && vitest run",
29
+ "test:coverage": "npm run test -- --coverage",
30
+ "test:unit": "vitest run --project unit --outputFile.junit=TEST-unit.xml",
31
+ "test:unit:coverage": "npm run test:unit -- --coverage",
32
+ "test:unit:watch": "vitest --project unit",
33
+ "test:integration": "npm run build && vitest run --project integration --outputFile.junit=TEST-integration.xml",
34
+ "test:integration:coverage": "npm run test:integration -- --coverage",
35
+ "test:harness": "vitest run --project harness --reporter=verbose",
36
+ "typecheck": "tsc --noEmit",
32
37
  "start": "node dist/index.js --env-file .env",
33
38
  "start:http": "node dist/index.js --env-file .env --transport http",
34
39
  "start:sse": "node dist/index.js --env-file .env --transport sse",
@@ -38,8 +43,10 @@
38
43
  "lint:fix": "eslint . --fix",
39
44
  "format": "prettier --write \"**/*.+(js|ts|json)\"",
40
45
  "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
46
+ "generate:openapi-types": "openapi-typescript ./openapi.json -o ./src/confluent/openapi-schema.d.ts --empty-objects-unknown",
41
47
  "print:schema": "node dist/print-md-schema.js",
42
48
  "inspector": "npx @modelcontextprotocol/inspector node dist/index.js --env-file .env",
49
+ "inspector:yaml": "node scripts/inspector-yaml.mjs",
43
50
  "prepare": "husky",
44
51
  "prepack": "npm run build && node scripts/inject-build-config.mjs"
45
52
  },
@@ -48,7 +55,7 @@
48
55
  "@types/content-type": "^1.1.9",
49
56
  "@types/eslint__js": "^8.42.3",
50
57
  "@types/node": "^24.0.4",
51
- "@types/sinon": "^21.0.0",
58
+ "@types/turndown": "^5.0.6",
52
59
  "@types/ws": "^8.18.1",
53
60
  "@typescript-eslint/eslint-plugin": "^8.35.0",
54
61
  "@typescript-eslint/parser": "^8.35.0",
@@ -57,11 +64,13 @@
57
64
  "eslint": "^9.29.0",
58
65
  "eslint-config-prettier": "^10.1.5",
59
66
  "eslint-plugin-prettier": "^5.5.1",
67
+ "eslint-plugin-unused-imports": "^4.4.1",
60
68
  "globals": "^16.2.0",
61
69
  "husky": "^9.1.7",
62
70
  "openapi-typescript": "^7.8.0",
71
+ "playwright-core": "^1.60.0",
63
72
  "prettier": "3.6.1",
64
- "sinon": "^21.0.2",
73
+ "prettier-plugin-organize-imports": "^4.3.0",
65
74
  "tsc-alias": "^1.8.16",
66
75
  "typescript": "^5.8.3",
67
76
  "typescript-eslint": "^8.35.0",
@@ -75,18 +84,26 @@
75
84
  "@fastify/swagger-ui": "^5.2.3",
76
85
  "@modelcontextprotocol/sdk": "^1.27.1",
77
86
  "@segment/analytics-node": "^3.0.0",
87
+ "cheerio": "^1.2.0",
78
88
  "commander": "^14.0.0",
79
89
  "dotenv": "^16.5.0",
80
90
  "fastify": "^5.7.3",
91
+ "open": "^10.2.0",
81
92
  "openapi-fetch": "^0.14.0",
82
93
  "pino": "^10.1.0",
83
- "properties-file": "^3.5.12"
94
+ "pino-pretty": "^13.1.3",
95
+ "properties-file": "^3.5.12",
96
+ "turndown": "^7.2.4",
97
+ "yaml": "^2.8.3"
84
98
  },
85
99
  "overrides": {
86
100
  "zod": "^4.0"
87
101
  },
88
102
  "files": [
89
- "dist"
103
+ "dist",
104
+ "config.example.yaml",
105
+ "config.oauth.example.yaml",
106
+ "assets/oauth-templates"
90
107
  ],
91
108
  "engines": {
92
109
  "node": ">=22"
@@ -1,11 +0,0 @@
1
- import { Environment } from "../env.js";
2
- /**
3
- * Ensures a parameter exists either from the provided value or environment variable. Favor the provided param over the environment variable when truthy.
4
- * @param envVarName - The name of the environment variable to check
5
- * @param errorMessage - The error message to throw if neither parameter nor environment variable exists
6
- * @param param - Optional parameter value to use instead of environment variable
7
- * @returns The parameter value or environment variable value with its original type
8
- * @throws {Error} When neither parameter nor environment variable exists
9
- */
10
- export declare const getEnsuredParam: <T extends Environment[keyof Environment]>(envVarName: keyof Environment, errorMessage: string, param?: T) => T;
11
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/confluent/helpers.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,WAAW,CAAC,MAAM,WAAW,CAAC,EACtE,YAAY,MAAM,WAAW,EAC7B,cAAc,MAAM,EACpB,QAAQ,CAAC,KACR,CAMF,CAAC"}
@@ -1,17 +0,0 @@
1
- import env from "../env.js";
2
- /**
3
- * Ensures a parameter exists either from the provided value or environment variable. Favor the provided param over the environment variable when truthy.
4
- * @param envVarName - The name of the environment variable to check
5
- * @param errorMessage - The error message to throw if neither parameter nor environment variable exists
6
- * @param param - Optional parameter value to use instead of environment variable
7
- * @returns The parameter value or environment variable value with its original type
8
- * @throws {Error} When neither parameter nor environment variable exists
9
- */
10
- export const getEnsuredParam = (envVarName, errorMessage, param) => {
11
- const finalParam = param || env[envVarName];
12
- if (!finalParam) {
13
- throw new Error(`${errorMessage}`);
14
- }
15
- return finalParam;
16
- };
17
- //# sourceMappingURL=helpers.js.map