@confluentinc/mcp-confluent 1.4.0 → 1.5.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 (344) hide show
  1. package/README.md +52 -31
  2. package/config.example.yaml +36 -7
  3. package/config.oauth.example.yaml +14 -1
  4. package/dist/config/env-config.d.ts +9 -3
  5. package/dist/config/env-config.d.ts.map +1 -1
  6. package/dist/config/env-config.js +15 -34
  7. package/dist/config/env-config.js.map +1 -1
  8. package/dist/config/models.d.ts +105 -13
  9. package/dist/config/models.d.ts.map +1 -1
  10. package/dist/config/models.js +49 -37
  11. package/dist/config/models.js.map +1 -1
  12. package/dist/confluent/base-client-manager.d.ts +2 -0
  13. package/dist/confluent/base-client-manager.d.ts.map +1 -1
  14. package/dist/confluent/base-client-manager.js +4 -0
  15. package/dist/confluent/base-client-manager.js.map +1 -1
  16. package/dist/confluent/client-manager.d.ts +14 -0
  17. package/dist/confluent/client-manager.d.ts.map +1 -1
  18. package/dist/confluent/oauth/auth0-config.d.ts +26 -4
  19. package/dist/confluent/oauth/auth0-config.d.ts.map +1 -1
  20. package/dist/confluent/oauth/auth0-config.js +59 -19
  21. package/dist/confluent/oauth/auth0-config.js.map +1 -1
  22. package/dist/confluent/oauth/types.d.ts +1 -2
  23. package/dist/confluent/oauth/types.d.ts.map +1 -1
  24. package/dist/confluent/oauth-client-manager.d.ts +5 -2
  25. package/dist/confluent/oauth-client-manager.d.ts.map +1 -1
  26. package/dist/confluent/oauth-client-manager.js +28 -6
  27. package/dist/confluent/oauth-client-manager.js.map +1 -1
  28. package/dist/confluent/oauth-resource-resolvers.d.ts +11 -0
  29. package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -1
  30. package/dist/confluent/oauth-resource-resolvers.js +24 -0
  31. package/dist/confluent/oauth-resource-resolvers.js.map +1 -1
  32. package/dist/confluent/schema-registry-helper.d.ts +114 -7
  33. package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
  34. package/dist/confluent/schema-registry-helper.js +302 -40
  35. package/dist/confluent/schema-registry-helper.js.map +1 -1
  36. package/dist/confluent/tools/base-tools.d.ts +165 -21
  37. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  38. package/dist/confluent/tools/base-tools.js +223 -20
  39. package/dist/confluent/tools/base-tools.js.map +1 -1
  40. package/dist/confluent/tools/cluster-arg-resolvers.d.ts +21 -0
  41. package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -1
  42. package/dist/confluent/tools/cluster-arg-resolvers.js +45 -0
  43. package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -1
  44. package/dist/confluent/tools/connection-predicates.d.ts +70 -7
  45. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -1
  46. package/dist/confluent/tools/connection-predicates.js +69 -6
  47. package/dist/confluent/tools/connection-predicates.js.map +1 -1
  48. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +1 -1
  49. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  50. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +1 -2
  51. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  52. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +9 -5
  53. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  54. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +1 -2
  55. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  56. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +9 -5
  57. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  58. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +1 -2
  59. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  60. package/dist/confluent/tools/handlers/catalog/delete-tag.js +9 -5
  61. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  62. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +2 -3
  63. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  64. package/dist/confluent/tools/handlers/catalog/list-tags.js +14 -6
  65. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  66. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +1 -2
  67. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  68. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +9 -5
  69. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  70. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  71. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +1 -1
  72. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  73. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +8 -8
  74. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -1
  75. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +9 -10
  76. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -1
  77. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  78. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +1 -2
  79. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  80. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  81. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +1 -2
  82. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  83. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -1
  84. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +1 -2
  85. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -1
  86. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -1
  87. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +1 -2
  88. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -1
  89. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -1
  90. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +1 -2
  91. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -1
  92. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -1
  93. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +36 -11
  94. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -1
  95. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -1
  96. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +1 -2
  97. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -1
  98. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -1
  99. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +1 -2
  100. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -1
  101. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -1
  102. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +1 -2
  103. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -1
  104. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  105. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +1 -2
  106. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  107. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -1
  108. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +1 -2
  109. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -1
  110. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -1
  111. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +1 -2
  112. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -1
  113. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -1
  114. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +1 -2
  115. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -1
  116. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -1
  117. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +1 -2
  118. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -1
  119. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts +42 -0
  120. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts.map +1 -0
  121. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js +297 -0
  122. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js.map +1 -0
  123. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts +31 -0
  124. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts.map +1 -0
  125. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js +116 -0
  126. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js.map +1 -0
  127. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts +52 -0
  128. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts.map +1 -0
  129. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js +114 -0
  130. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js.map +1 -0
  131. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +19 -42
  132. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -1
  133. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +95 -81
  134. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -1
  135. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts +27 -0
  136. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts.map +1 -0
  137. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js +93 -0
  138. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js.map +1 -0
  139. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +1 -1
  140. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  141. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +1 -1
  142. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  143. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  144. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +24 -21
  145. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  146. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  147. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +24 -21
  148. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  149. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  150. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +9 -7
  151. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  152. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  153. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +14 -12
  154. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  155. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  156. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +14 -12
  157. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  158. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  159. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +27 -22
  160. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  161. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  162. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +20 -12
  163. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  164. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  165. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +20 -12
  166. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  167. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  168. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +20 -18
  169. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  170. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  171. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +24 -22
  172. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  173. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +3 -2
  174. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  175. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js +133 -57
  176. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  177. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +27 -6
  178. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -1
  179. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +36 -7
  180. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -1
  181. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  182. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +20 -12
  183. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  184. package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.d.ts → get-flink-statement-results-handler.d.ts} +2 -2
  185. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts.map +1 -0
  186. package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.js → get-flink-statement-results-handler.js} +30 -22
  187. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.js.map +1 -0
  188. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts +10 -0
  189. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts.map +1 -0
  190. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js +118 -0
  191. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js.map +1 -0
  192. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  193. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +19 -17
  194. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  195. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  196. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +1 -1
  197. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  198. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +15 -5
  199. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  200. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +54 -10
  201. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  202. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  203. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +12 -3
  204. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  205. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  206. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +1 -1
  207. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  208. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -1
  209. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +1 -1
  210. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -1
  211. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -1
  212. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +1 -1
  213. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -1
  214. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -1
  215. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +1 -1
  216. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -1
  217. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  218. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +1 -1
  219. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  220. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -1
  221. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +1 -1
  222. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -1
  223. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  224. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +1 -1
  225. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  226. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +8 -1
  227. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  228. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +140 -34
  229. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  230. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +1 -2
  231. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  232. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +3 -3
  233. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  234. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +1 -2
  235. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  236. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +6 -4
  237. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  238. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -1
  239. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +2 -1
  240. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -1
  241. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts +10 -0
  242. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts.map +1 -0
  243. package/dist/confluent/tools/handlers/schema/create-schema-handler.js +76 -0
  244. package/dist/confluent/tools/handlers/schema/create-schema-handler.js.map +1 -0
  245. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +1 -1
  246. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  247. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +1 -1
  248. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  249. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +1 -2
  250. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  251. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +9 -5
  252. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  253. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +1 -2
  254. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  255. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +9 -5
  256. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  257. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  258. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +2 -2
  259. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  260. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  261. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +2 -2
  262. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  263. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  264. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +2 -2
  265. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  266. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  267. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +2 -2
  268. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  269. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  270. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +1 -1
  271. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  272. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  273. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +1 -1
  274. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  275. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +15 -10
  276. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -1
  277. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +17 -14
  278. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -1
  279. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  280. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +2 -2
  281. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  282. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  283. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +2 -2
  284. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  285. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  286. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +2 -2
  287. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  288. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  289. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +2 -2
  290. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  291. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  292. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +1 -1
  293. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  294. package/dist/confluent/tools/tool-availability.d.ts +59 -28
  295. package/dist/confluent/tools/tool-availability.d.ts.map +1 -1
  296. package/dist/confluent/tools/tool-availability.js +101 -69
  297. package/dist/confluent/tools/tool-availability.js.map +1 -1
  298. package/dist/confluent/tools/tool-metadata-handler.d.ts +51 -0
  299. package/dist/confluent/tools/tool-metadata-handler.d.ts.map +1 -0
  300. package/dist/confluent/tools/tool-metadata-handler.js +61 -0
  301. package/dist/confluent/tools/tool-metadata-handler.js.map +1 -0
  302. package/dist/confluent/tools/tool-name.d.ts +7 -2
  303. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  304. package/dist/confluent/tools/tool-name.js +6 -1
  305. package/dist/confluent/tools/tool-name.js.map +1 -1
  306. package/dist/confluent/tools/tool-registry.d.ts.map +1 -1
  307. package/dist/confluent/tools/tool-registry.js +24 -2
  308. package/dist/confluent/tools/tool-registry.js.map +1 -1
  309. package/dist/env-schema.d.ts +0 -1
  310. package/dist/env-schema.d.ts.map +1 -1
  311. package/dist/env-schema.js +0 -7
  312. package/dist/env-schema.js.map +1 -1
  313. package/dist/env.d.ts +0 -1
  314. package/dist/env.d.ts.map +1 -1
  315. package/dist/index.d.ts +54 -64
  316. package/dist/index.d.ts.map +1 -1
  317. package/dist/index.js +78 -324
  318. package/dist/index.js.map +1 -1
  319. package/dist/lazy.d.ts +4 -2
  320. package/dist/lazy.d.ts.map +1 -1
  321. package/dist/lazy.js +27 -12
  322. package/dist/lazy.js.map +1 -1
  323. package/dist/mcp/server.d.ts.map +1 -1
  324. package/dist/mcp/server.js +8 -5
  325. package/dist/mcp/server.js.map +1 -1
  326. package/dist/preflight.d.ts +33 -0
  327. package/dist/preflight.d.ts.map +1 -0
  328. package/dist/preflight.js +68 -0
  329. package/dist/preflight.js.map +1 -0
  330. package/dist/server-main.d.ts +98 -0
  331. package/dist/server-main.d.ts.map +1 -0
  332. package/dist/server-main.js +383 -0
  333. package/dist/server-main.js.map +1 -0
  334. package/dist/server-runtime.d.ts +20 -5
  335. package/dist/server-runtime.d.ts.map +1 -1
  336. package/dist/server-runtime.js +45 -28
  337. package/dist/server-runtime.js.map +1 -1
  338. package/dist/utils/quote-join-ids.d.ts +9 -0
  339. package/dist/utils/quote-join-ids.d.ts.map +1 -0
  340. package/dist/utils/quote-join-ids.js +11 -0
  341. package/dist/utils/quote-join-ids.js.map +1 -0
  342. package/package.json +32 -34
  343. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +0 -1
  344. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,344 +1,98 @@
1
1
  #!/usr/bin/env node
2
- import { DisplayedCommandLineUsageError, getFilteredToolNames, getPackageVersion, loadDotEnvFile, parseCliArgs, } from "./cli.js";
3
- import { buildConfigFromEnvAndCli, loadConfigFromYaml, } from "./config/index.js";
4
- import { buildConfigTelemetry } from "./confluent/config-telemetry.js";
5
- import { buildConfig, fs, path } from "./confluent/node-deps.js";
6
- import { TelemetryEvent, TelemetryService } from "./confluent/telemetry.js";
7
- import { groupDisabledToolsByReason } from "./confluent/tools/tool-availability.js";
8
- import { ToolName } from "./confluent/tools/tool-name.js";
9
- import { ToolHandlerRegistry } from "./confluent/tools/tool-registry.js";
10
- import { initEnv } from "./env.js";
11
- import { logger, setLogLevel } from "./logger.js";
12
- import { generateApiKey, TransportManager } from "./mcp/transports/index.js";
13
- import { ServerRuntime } from "./server-runtime.js";
14
2
  /**
15
- * Determine the subset of ToolHandlers to register based on the filtered tool names
16
- * and which connections satisfy each tool's service requirements.
17
- **/
18
- export function getToolHandlersToRegister(filteredToolNames, runtime) {
19
- const toolHandlers = new Map();
20
- const knownIds = new Set(Object.keys(runtime.config.connections));
21
- // Pass 1: drop tools excluded by the allow/block list (logged per-tool —
22
- // the reason is config-driven, not predicate-driven, so it doesn't fold
23
- // into the grouped warning emitted later).
24
- const candidates = [];
25
- for (const toolName of Object.values(ToolName)) {
26
- if (!filteredToolNames.includes(toolName)) {
27
- logger.warn(`Tool ${toolName} disabled due to allow/block list rules`);
28
- continue;
29
- }
30
- candidates.push([toolName, ToolHandlerRegistry.getToolHandler(toolName)]);
31
- }
32
- // Pass 2: register tools that are enabled on at least one connection.
33
- for (const [toolName, handler] of candidates) {
34
- const enabledIds = handler.enabledConnectionIds(runtime);
35
- const unknownIds = enabledIds.filter((id) => !knownIds.has(id));
36
- if (unknownIds.length > 0) {
37
- throw new Error(`Tool ${toolName}: enabledConnectionIds() returned unknown connection ID(s): ${unknownIds.join(", ")}`);
38
- }
39
- if (enabledIds.length > 0) {
40
- toolHandlers.set(toolName, handler);
41
- logger.info(`Tool ${toolName} enabled`);
42
- }
43
- }
44
- // Pass 3: emit one grouped warning per (connectionId, reason) for tools
45
- // that are fully disabled — readers see the missing config piece and the
46
- // list of all tools blocked by it in a single line, rather than one
47
- // line per tool.
48
- for (const group of groupDisabledToolsByReason(candidates, runtime)) {
49
- logger.warn(`Tools disabled on connection '${group.connectionId}' — ${group.reason}: ${group.toolNames.join(", ")}`);
50
- }
51
- // Raise an error if no tools are enabled, as the server would be non-functional without any tools.
52
- if (toolHandlers.size === 0) {
53
- throw new Error("No tools enabled. Please check your configuration and environment variables.");
54
- }
55
- return toolHandlers;
56
- }
57
- /**
58
- * Resolve the Segment write key handed to `TelemetryService.initialize`.
3
+ * Preflight shim — the package's `bin` entry point.
59
4
  *
60
- * Precedence: an explicit YAML `server.analytics.write_key` wins; otherwise
61
- * fall back to `buildConfig.TELEMETRY_WRITE_KEY` (the value `npm pack` injects
62
- * at release time). On unpacked / dev builds the build-time value is empty,
63
- * so an absent YAML field produces an empty-string fallback that
64
- * `TelemetryService` treats as "no key supplied" — analytics stays off.
5
+ * WHY THIS IS A SEPARATE FILE (and not just a check at the top of the real
6
+ * entry, `server-main.ts`):
65
7
  *
66
- * Extracted from `main()` so the precedence is unit-testable without booting
67
- * the full server.
68
- */
69
- export function resolveTelemetryWriteKey(mcpConfig) {
70
- return (mcpConfig.server.analytics?.write_key ?? buildConfig.TELEMETRY_WRITE_KEY);
71
- }
72
- export function outputApiKey() {
73
- const apiKey = generateApiKey();
74
- console.log("\nGenerated MCP API Key:");
75
- console.log("=".repeat(64));
76
- console.log(apiKey);
77
- console.log("=".repeat(64));
78
- console.log("\nAdd this to your .env file:");
79
- console.log(`MCP_API_KEY=${apiKey}\n`);
80
- }
81
- /**
82
- * Bootstrap a starter `config.yaml` in the current working directory by
83
- * copying one of the bundled example templates, then ensure the new file
84
- * is listed in `<cwd>/.gitignore` so credentials filled in later don't
85
- * slip into git.
8
+ * The server's module graph uses syntax that newer Node parses but older Node
9
+ * does not — most notably the JSON import attribute `import pkg from
10
+ * "../package.json" with { type: "json" }` in cli.ts. In ESM, the *entire*
11
+ * static import graph is parsed and instantiated before a single statement
12
+ * runs. So on an unsupported old runtime, `server-main.ts` → `cli.ts` blows up
13
+ * with a raw `SyntaxError` pointing at a line deep inside our dist output —
14
+ * before any code of ours could run, and therefore before any version check
15
+ * we placed inside the server could fire. That is exactly what issue #455
16
+ * reported: `npx mcp-confluent` dumping an inscrutable parser stack trace
17
+ * instead of "you need a newer Node".
86
18
  *
87
- * Resolved relative to `import.meta.url` (the compiled `dist/index.js`)
88
- * so this keeps working when invoked via `npx`, where `process.cwd()`
89
- * is the user's project but the example file lives next to the install.
19
+ * The only way to win this race is to make the FIRST module Node loads contain
20
+ * nothing it can't parse, do the version check there, and reach the real
21
+ * server only through a *dynamic* `import()` — which defers parsing of the
22
+ * modern-syntax graph until after the gate has passed (or bailed with a clear
23
+ * message). This file, and the `preflight.ts` it statically imports, are
24
+ * deliberately written in syntax that parses back to very old Node so the
25
+ * friendly error survives where the server graph cannot.
90
26
  *
91
- * Refuses to overwrite an existing destination so an accidental rerun
92
- * cannot wipe credentials the user already filled in. The write uses
93
- * `wx` (exclusive create) so the existence check and the create happen
94
- * as a single syscall — there is no TOCTOU window where another process
95
- * could create the file between a precheck and the write.
27
+ * If you're a new dev wondering why this indirection exists at all: it's the
28
+ * difference between a user seeing "mcp-confluent requires Node.js 22.19.0 or
29
+ * newer" and a user seeing a JSON-import-attribute parse error from a file
30
+ * they've never heard of. Don't fold this back into server-main.ts. See issue
31
+ * #455 for the original report.
96
32
  *
97
- * @param oauth When true, copy `config.oauth.example.yaml` (the minimal
98
- * OAuth template); when false, copy `config.example.yaml` (the
99
- * fully-annotated direct/api-key template). The CLI flag in the EEXIST
100
- * error message is selected to match.
33
+ * This protection depends on the build staying a transpile (tsc emits one .js
34
+ * per .ts, preserving the dynamic-import boundary), NOT a bundle. A bundler
35
+ * that inlined the server graph into this entry file would drag the
36
+ * modern-syntax imports back into the first-parsed module and silently undo
37
+ * everything above. If you ever add a bundling step, keep this shim (and
38
+ * preflight.ts) out of it.
101
39
  */
102
- export function outputInitConfig(oauth = false) {
103
- const sourceFileName = oauth
104
- ? "config.oauth.example.yaml"
105
- : "config.example.yaml";
106
- const flagName = oauth ? "init-oauth-config" : "init-config";
107
- const sourceUrl = new URL(`../${sourceFileName}`, import.meta.url);
108
- const destPath = path.resolve("config.yaml");
109
- const contents = fs.readFileSync(sourceUrl, "utf-8");
110
- try {
111
- fs.writeFileSync(destPath, contents, { flag: "wx" });
112
- }
113
- catch (err) {
114
- if (err.code === "EEXIST") {
115
- throw new Error(`config.yaml already exists at ${destPath}. ` +
116
- `Remove or rename it before running --${flagName}.`);
117
- }
118
- throw err;
119
- }
120
- const gitignoreNote = ensureGitignoreEntry(destPath);
121
- console.log(`wrote ./config.yaml (${gitignoreNote})`);
122
- // OAuth has no credentials to edit; the bundled template is already
123
- // runnable as-is. The api-key template, by contrast, ships placeholder
124
- // values the user must fill in before the server can connect.
125
- console.log(oauth
126
- ? `Next: run with --config ./config.yaml`
127
- : `Next: edit credentials in config.yaml and run with --config ./config.yaml`);
128
- }
40
+ import { MINIMUM_NODE_VERSION, nodeVersionError } from "./preflight.js";
129
41
  /**
130
- * Ensure the basename of `filePath` is listed in `<dirname(filePath)>/.gitignore`.
131
- * Creates the gitignore if missing; appends idempotently if present (matching
132
- * trimmed lines verbatim — `*.yaml` globs or `/config.yaml` anchors are not
133
- * recognized, so a user who already wrote either form will see a duplicate
134
- * `config.yaml` entry, which is harmless).
42
+ * Gate on the Node.js runtime version, then hand off to the real server entry.
135
43
  *
136
- * @returns A short note describing what happened, suitable for the success message.
137
- */
138
- function ensureGitignoreEntry(filePath) {
139
- const dir = path.dirname(filePath);
140
- const fileName = path.basename(filePath);
141
- const gitignorePath = path.join(dir, ".gitignore");
142
- if (!fs.existsSync(gitignorePath)) {
143
- fs.writeFileSync(gitignorePath, `${fileName}\n`);
144
- return "added to .gitignore";
145
- }
146
- const existing = fs.readFileSync(gitignorePath, "utf-8");
147
- const alreadyListed = existing
148
- .split("\n")
149
- .some((line) => line.trim() === fileName);
150
- if (alreadyListed) {
151
- return ".gitignore already excludes it";
152
- }
153
- const prefix = existing.length > 0 && !existing.endsWith("\n") ? "\n" : "";
154
- fs.appendFileSync(gitignorePath, `${prefix}${fileName}\n`);
155
- return "added to .gitignore";
156
- }
157
- export function outputToolList(filteredToolNames) {
158
- const MAX_DESC_LENGTH = 120;
159
- // Bucket by ToolCategory. Today's callers pass `filteredToolNames` in
160
- // registry-declaration order, which already roughly groups same-category
161
- // tools, but we re-bucket explicitly here so the rendered layout doesn't
162
- // depend on that incidental ordering.
163
- const byCategory = new Map();
164
- for (const toolName of filteredToolNames) {
165
- const handler = ToolHandlerRegistry.getToolHandler(toolName);
166
- const config = handler.getToolConfig();
167
- let desc = config.description.replaceAll(/\s+/g, " ").trim();
168
- if (desc.length > MAX_DESC_LENGTH) {
169
- desc = desc.slice(0, MAX_DESC_LENGTH - 3) + "...";
170
- }
171
- let bucket = byCategory.get(handler.category);
172
- bucket ??= [];
173
- byCategory.set(handler.category, bucket);
174
- bucket.push({ name: toolName, desc });
175
- }
176
- // Categories rendered lex-sorted (kebab-case enum values sort cleanly);
177
- // within each category, tools preserve the order they appeared in
178
- // `filteredToolNames` (today: registry-declaration order, as supplied
179
- // by the caller).
180
- const sortedCategories = Array.from(byCategory.keys()).sort((a, b) => a.localeCompare(b));
181
- sortedCategories.forEach((category, idx) => {
182
- console.log(`\x1b[1;36m${category}:\x1b[0m`);
183
- for (const { name, desc } of byCategory.get(category)) {
184
- console.log(` \x1b[32m${name}\x1b[0m: ${desc}`);
185
- }
186
- // Blank line between sections, but not after the last category.
187
- if (idx < sortedCategories.length - 1)
188
- console.log("");
189
- });
190
- }
191
- /**
192
- * Dispatch the CLI's mutually-exclusive early-exit modes — generate-key,
193
- * init-config, init-oauth-config, and list-tools — before the server
194
- * bootstrap begins. Returns `{ handled: false }` when none apply, in
195
- * which case the caller continues with normal startup.
44
+ * Returns early (after printing the upgrade message and calling `exit(1)`) on an
45
+ * unsupported runtime; otherwise dynamically imports `server-main.ts`, which
46
+ * starts the server as a side effect of its own module-load (`await main()`).
47
+ * The dynamic import is load-bearing, not stylistic — it is what keeps the
48
+ * modern-syntax server graph from being parsed on a runtime that can't parse it
49
+ * (see the file-level comment above).
50
+ *
51
+ * `exit` and `loadAndRunServer` are injected (defaulting to the real primitives)
52
+ * so the dispatch is unit-testable without spawning a subprocess or stubbing
53
+ * `process.exit`. The callback both loads and runs the server because importing
54
+ * `server-main.ts` triggers its top-level `await main()`.
196
55
  *
197
- * On init-config failure, the friendly error message is returned in
198
- * `stderr` rather than written here, so the caller controls writing to
199
- * stderr and exiting.
56
+ * A failure to load or start the server (a rejected dynamic import, a throw from
57
+ * `main()`) is caught here and turned into `console.error` + `exit(1)` rather
58
+ * than allowed to propagate: the module-level trigger discards this promise, so
59
+ * a rejection would otherwise surface as an unhandled rejection with
60
+ * nondeterministic exit behavior.
200
61
  */
201
- export function handleEarlyExits(cliOptions) {
202
- if (cliOptions.generateKey) {
203
- outputApiKey();
204
- return { handled: true, exitCode: 0 };
205
- }
206
- if (cliOptions.initConfig) {
207
- return runOutputInitConfig(false);
208
- }
209
- if (cliOptions.initOauthConfig) {
210
- return runOutputInitConfig(true);
211
- }
212
- if (cliOptions.listTools) {
213
- outputToolList(getFilteredToolNames(cliOptions.allowTools ?? [], cliOptions.blockTools ?? []));
214
- return { handled: true, exitCode: 0 };
215
- }
216
- return { handled: false };
217
- }
218
- function runOutputInitConfig(oauth) {
62
+ export async function bootstrap({ currentVersion = process.versions.node, exit = (code) => process.exit(code),
63
+ // Relative specifier, not the `@src/*` alias used elsewhere: this is the
64
+ // published `bin`, and its one runtime handoff shouldn't depend on tsc-alias
65
+ // having rewritten a *dynamic* `import()` at build time.
66
+ loadAndRunServer = () => import("./server-main.js"), } = {}) {
67
+ const versionError = nodeVersionError(currentVersion, MINIMUM_NODE_VERSION);
68
+ if (versionError) {
69
+ // Whoops! User is on an old Node. Print the specific version issue message and exit(1).
70
+ console.error(versionError);
71
+ exit(1);
72
+ return;
73
+ }
74
+ // All good — load and invoke the real server entry (the module-level await main() over in server-main.ts).
219
75
  try {
220
- outputInitConfig(oauth);
221
- return { handled: true, exitCode: 0 };
76
+ await loadAndRunServer();
222
77
  }
223
78
  catch (error) {
224
- const msg = error instanceof Error ? error.message : String(error);
225
- const flag = oauth ? "--init-oauth-config" : "--init-config";
226
- return { handled: true, exitCode: 1, stderr: `${flag} failed: ${msg}` };
227
- }
228
- }
229
- async function main() {
230
- try {
231
- // Parse command line arguments.(NO LONGER LOADS ENV VARS FROM -e file!)
232
- const cliOptions = parseCliArgs(process.argv);
233
- const earlyExit = handleEarlyExits(cliOptions);
234
- if (earlyExit.handled) {
235
- if (earlyExit.exitCode === 1) {
236
- console.error(earlyExit.stderr);
237
- }
238
- process.exit(earlyExit.exitCode);
239
- }
240
- const filteredToolNames = getFilteredToolNames(cliOptions.allowTools ?? [], cliOptions.blockTools ?? []);
241
- if (cliOptions.envFile) {
242
- loadDotEnvFile(cliOptions.envFile);
243
- }
244
- // Convert our known env vars into a typed Environment obj.
245
- const env = initEnv();
246
- let mcpConfig;
247
- // Load and validate configuration — from YAML file if --config provided, else from env vars + CLI overrides.
248
- if (cliOptions.config) {
249
- mcpConfig = loadConfigFromYaml(cliOptions.config, process.env);
250
- }
251
- else {
252
- mcpConfig = buildConfigFromEnvAndCli(env, {
253
- disableAuth: cliOptions.disableAuth,
254
- allowedHosts: cliOptions.allowedHosts,
255
- kafkaConfig: cliOptions.kafkaConfig,
256
- oauth: cliOptions.oauth,
257
- ccloudEnv: cliOptions.ccloudEnv,
258
- });
259
- }
260
- setLogLevel(mcpConfig.server.log_level);
261
- // Transport selection: YAML config is authoritative when --config is used;
262
- // CLI flag (or its default) is used on the env-var path.
263
- const transports = cliOptions.config
264
- ? mcpConfig.server.transports
265
- : cliOptions.transports;
266
- // DO_NOT_TRACK is a cross-tool user preference (consoledonottrack.com);
267
- // the env var acts as a floor so it is honored even when --config is used.
268
- TelemetryService.initialize({
269
- doNotTrack: mcpConfig.server.do_not_track || env.DO_NOT_TRACK,
270
- writeKey: resolveTelemetryWriteKey(mcpConfig),
271
- });
272
- const telemetry = TelemetryService.getInstance();
273
- logger.info(`${mcpConfig.getConnectionNames().length} connections loaded successfully`);
274
- const runtime = ServerRuntime.fromConfig(mcpConfig);
275
- const serverVersion = getPackageVersion();
276
- telemetry.setCommonProperties({ serverVersion });
277
- const toolHandlers = getToolHandlersToRegister(filteredToolNames, runtime);
278
- logger.info({ enabledTools: [...toolHandlers.keys()] }, `${toolHandlers.size} tool(s) enabled`);
279
- // Warn if auth is disabled
280
- if (mcpConfig.server.auth.disabled) {
281
- logger.warn("Authentication is DISABLED for HTTP/SSE transports. " +
282
- "This should only be used in development environments.");
283
- }
284
- const transportManager = new TransportManager({
285
- disableAuth: mcpConfig.server.auth.disabled,
286
- allowedHosts: mcpConfig.server.auth.allowed_hosts,
287
- apiKey: mcpConfig.server.auth.api_key,
288
- });
289
- const serverOptions = {
290
- serverVersion,
291
- toolHandlers,
292
- runtime,
293
- track: (props) => telemetry.track(TelemetryEvent.TOOL_CALL, {
294
- ...props,
295
- }),
296
- };
297
- // Start all transports with a single call
298
- logger.info(`Starting transports: ${transports.join(", ")}`);
299
- await transportManager.start({
300
- serverOptions,
301
- types: transports,
302
- http: {
303
- port: mcpConfig.server.http.port,
304
- host: mcpConfig.server.http.host,
305
- mcpEndpointPath: mcpConfig.server.http.mcp_endpoint,
306
- sseEndpointPath: mcpConfig.server.http.sse_endpoint,
307
- sseMessageEndpointPath: mcpConfig.server.http.sse_message_endpoint,
308
- },
309
- });
310
- // Boot-time invariants (config source, active transports, connection
311
- // types) ride this one-shot event rather than every TOOL_CALL — they
312
- // don't change after startup, so duplicating them per tool call buys
313
- // nothing. Warehouse queries join SERVER_START to TOOL_CALL on
314
- // `serverSessionId` (a common property) when slicing is needed.
315
- telemetry.track(TelemetryEvent.SERVER_START, {
316
- ...buildConfigTelemetry(cliOptions, mcpConfig, transports),
317
- });
318
- // Set up cleanup handlers
319
- const performCleanup = async () => {
320
- logger.info("Shutting down...");
321
- await telemetry.shutdown();
322
- await transportManager.stop();
323
- // shutdown() is race-safe with an in-flight bootstrap.
324
- runtime.oauthHolder?.shutdown();
325
- await runtime.clientManager.disconnect();
326
- process.exit(0);
327
- };
328
- process.on("SIGINT", performCleanup);
329
- process.on("SIGTERM", performCleanup);
330
- process.on("SIGQUIT", performCleanup);
331
- process.on("SIGUSR2", performCleanup);
332
- }
333
- catch (error) {
334
- if (error instanceof DisplayedCommandLineUsageError) {
335
- process.exit(0);
336
- }
337
- logger.error({ err: error }, "Error starting server");
338
- process.exit(1);
79
+ console.error(error);
80
+ exit(1);
339
81
  }
340
82
  }
83
+ // Call `bootstrap()` directly, NOT `await bootstrap()`. Top-level await is
84
+ // itself modern syntax that older Node fails to *parse* — using it here would
85
+ // reintroduce the very parse-time crash this shim exists to prevent, defeating
86
+ // the whole point. `bootstrap()` does its own awaiting internally and handles
87
+ // its own failures (see its docstring), then the process stays alive on the
88
+ // transports the server starts. The `.catch` is a final backstop: any
89
+ // unforeseen rejection still exits deterministically rather than becoming an
90
+ // unhandled promise rejection. (`.catch` + arrow parse fine on ancient Node;
91
+ // only top-level await does not.)
341
92
  if (process.env.NODE_ENV !== "test") {
342
- await main();
93
+ bootstrap().catch((error) => {
94
+ console.error(error);
95
+ process.exit(1);
96
+ });
343
97
  }
344
98
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAC9B,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EACtC,IAAI,GAAG,CAAC,IAAY,EAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD,yEAAyE;AACzE,6EAA6E;AAC7E,yDAAyD;AACzD,gBAAgB,GAAG,GAAqB,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAKnE,EAAE;IACJ,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;IAC5E,IAAI,YAAY,EAAE,CAAC;QACjB,wFAAwF;QACxF,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,CAAC;QACR,OAAO;IACT,CAAC;IAED,2GAA2G;IAC3G,IAAI,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,sEAAsE;AACtE,6EAA6E;AAC7E,6EAA6E;AAC7E,kCAAkC;AAClC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;IACpC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/lazy.d.ts CHANGED
@@ -56,8 +56,10 @@ export declare class AsyncLazy<T> {
56
56
  */
57
57
  get(): Promise<T>;
58
58
  /**
59
- * Closes and cleans up the lazy-loaded instance if it exists
60
- * If a closeHandler was provided, it will be called with the instance
59
+ * Closes and cleans up the lazy-loaded instance if it exists.
60
+ * If a closeHandler was provided, it will be called with the instance.
61
+ * The instance and any cached initialization promise are reset afterward,
62
+ * so the next get() rebuilds.
61
63
  * @returns A promise that resolves when the cleanup is complete
62
64
  */
63
65
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,qBAAa,IAAI,CAAC,CAAC;IACjB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAgB;IAEhC,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAEnC,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAwB;IAEtD;;;;OAIG;gBACS,QAAQ,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI;IAKnE;;;;OAIG;IACH,GAAG,IAAI,CAAC;IAYR;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAYd;AAED;;;;GAIG;AACH,qBAAa,SAAS,CAAC,CAAC;IACtB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAgB;IAEhC,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAE5C,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAiC;IAE/D,iGAAiG;IACjG,OAAO,CAAC,qBAAqB,CAA2B;IAExD;;;;OAIG;gBAED,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAM/C;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IAavB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAW7B"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,qBAAa,IAAI,CAAC,CAAC;IACjB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAgB;IAEhC,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAEnC,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAwB;IAEtD;;;;OAIG;gBACS,QAAQ,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI;IAKnE;;;;OAIG;IACH,GAAG,IAAI,CAAC;IAcR;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAYd;AAED;;;;GAIG;AACH,qBAAa,SAAS,CAAC,CAAC;IACtB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAgB;IAEhC,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAE5C,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAiC;IAE/D,iGAAiG;IACjG,OAAO,CAAC,qBAAqB,CAA2B;IAExD;;;;OAIG;gBAED,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAM/C;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IAqBvB;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}
package/dist/lazy.js CHANGED
@@ -26,12 +26,14 @@ export class Lazy {
26
26
  * @throws If the supplier function fails to initialize the value
27
27
  */
28
28
  get() {
29
- try {
30
- this.instance = this.supplier();
31
- logger.debug(`Lazy instance created with type ${this.instance?.constructor.name || typeof this.instance}`);
32
- }
33
- catch (error) {
34
- throw new Error(`Failed to initialize lazy instance: ${error}`);
29
+ if (this.instance === undefined) {
30
+ try {
31
+ this.instance = this.supplier();
32
+ logger.debug(`Lazy instance created with type ${this.instance?.constructor.name || typeof this.instance}`);
33
+ }
34
+ catch (error) {
35
+ throw new Error(`Failed to initialize lazy instance: ${error}`);
36
+ }
35
37
  }
36
38
  return this.instance;
37
39
  }
@@ -41,7 +43,7 @@ export class Lazy {
41
43
  * The instance is set to undefined after cleanup.
42
44
  */
43
45
  close() {
44
- if (this.instance) {
46
+ if (this.instance !== undefined) {
45
47
  if (this.closeHandler) {
46
48
  logger.debug(`Initiating close handler for lazy instance of type ${typeof this.instance}`);
47
49
  this.closeHandler(this.instance);
@@ -80,27 +82,40 @@ export class AsyncLazy {
80
82
  * @throws If the supplier function fails to initialize the value
81
83
  */
82
84
  async get() {
83
- if (!this.instance) {
85
+ if (this.instance === undefined) {
84
86
  if (!this.initializationPromise) {
85
87
  this.initializationPromise = this.supplier();
86
88
  }
87
- this.instance = await this.initializationPromise;
89
+ try {
90
+ this.instance = await this.initializationPromise;
91
+ }
92
+ catch (error) {
93
+ // A rejected supplier must leave the wrapper retryable: clear the
94
+ // cached promise so the next get() re-invokes the supplier rather
95
+ // than re-awaiting the same rejection forever.
96
+ this.initializationPromise = null;
97
+ throw error;
98
+ }
88
99
  }
89
100
  logger.debug(`Async Lazy instance created with type ${this.instance?.constructor.name || typeof this.instance}`);
90
101
  return this.instance;
91
102
  }
92
103
  /**
93
- * Closes and cleans up the lazy-loaded instance if it exists
94
- * If a closeHandler was provided, it will be called with the instance
104
+ * Closes and cleans up the lazy-loaded instance if it exists.
105
+ * If a closeHandler was provided, it will be called with the instance.
106
+ * The instance and any cached initialization promise are reset afterward,
107
+ * so the next get() rebuilds.
95
108
  * @returns A promise that resolves when the cleanup is complete
96
109
  */
97
110
  async close() {
98
- if (this.instance) {
111
+ if (this.instance !== undefined) {
99
112
  if (this.closeHandler) {
100
113
  logger.debug(`Initiating close handler for lazy instance of type ${typeof this.instance}`);
101
114
  await this.closeHandler(this.instance);
102
115
  logger.debug(`Lazy instance closed with type ${typeof this.instance}`);
103
116
  }
117
+ this.instance = undefined;
118
+ this.initializationPromise = null;
104
119
  }
105
120
  }
106
121
  }
package/dist/lazy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,OAAO,IAAI;IACf,qDAAqD;IAC7C,QAAQ,CAAgB;IAEhC,6DAA6D;IAC5C,QAAQ,CAAU;IAEnC,4DAA4D;IAC3C,YAAY,CAAyB;IAEtD;;;;OAIG;IACH,YAAY,QAAiB,EAAE,YAAoC;QACjE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,GAAG;QACD,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CACV,mCAAmC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CAC7F,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,CACV,sDAAsD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAC7E,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,SAAS;IACpB,qDAAqD;IAC7C,QAAQ,CAAgB;IAEhC,6DAA6D;IAC5C,QAAQ,CAAmB;IAE5C,4DAA4D;IAC3C,YAAY,CAAkC;IAE/D,iGAAiG;IACzF,qBAAqB,GAAsB,IAAI,CAAC;IAExD;;;;OAIG;IACH,YACE,QAA0B,EAC1B,YAA6C;QAE7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,KAAK,CACV,yCAAyC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CACnG,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,CACV,sDAAsD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAC7E,CAAC;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,mFAAmF;IACnF,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mFAAmF;IACnF,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;CAC7B;AAED,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAI3D,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,qEAAqE;IACrE,OAAO,EAAE,aAAa,CAAC;IACvB,yDAAyD;IACzD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,YAAY,EACZ,OAAO,EACP,KAAiB,GAClB,EAAE,sBAAsB,GAAG,SAAS,CA2DpC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,mFAAmF;IACnF,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mFAAmF;IACnF,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;CAC7B;AAED,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAI3D,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzC,qEAAqE;IACrE,OAAO,EAAE,aAAa,CAAC;IACvB,yDAAyD;IACzD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,YAAY,EACZ,OAAO,EACP,KAAiB,GAClB,EAAE,sBAAsB,GAAG,SAAS,CAkEpC"}
@@ -1,5 +1,4 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { alwaysEnabled } from "../confluent/tools/connection-predicates.js";
3
2
  const noopTrack = () => { };
4
3
  /** Builds a fresh {@link McpServer} with every supplied {@linkcode ToolHandler} registered. */
5
4
  export function createMcpServer({ serverVersion, toolHandlers, runtime, track = noopTrack, }) {
@@ -8,7 +7,7 @@ export function createMcpServer({ serverVersion, toolHandlers, runtime, track =
8
7
  version: serverVersion,
9
8
  });
10
9
  toolHandlers.forEach((handler, name) => {
11
- const config = handler.getToolConfig();
10
+ const config = handler.getRegisteredToolConfig(runtime);
12
11
  srv.registerTool(name, {
13
12
  description: config.description,
14
13
  inputSchema: config.inputSchema,
@@ -24,10 +23,14 @@ export function createMcpServer({ serverVersion, toolHandlers, runtime, track =
24
23
  clientVersion: clientInfo?.version,
25
24
  };
26
25
  try {
27
- // Gate launch of the browser OAuth login flow only on the
28
- // first tool call that needs Confluent OAuth tokens.
26
+ // Launch the browser OAuth login flow only when this call actually
27
+ // routes to the OAuth connection — not merely because an OAuth
28
+ // connection exists somewhere in the config. A call targeting a
29
+ // local/direct connection in a mixed setup needs no login.
30
+ const targetConnectionId = handler.resolvedTargetConnectionId(runtime, args);
29
31
  if (runtime.oauthHolder !== undefined &&
30
- handler.predicate !== alwaysEnabled) {
32
+ targetConnectionId !== undefined &&
33
+ runtime.config.connections[targetConnectionId]?.type === "oauth") {
31
34
  await runtime.oauthHolder.ensureLoggedIn();
32
35
  }
33
36
  const result = await handler.handle(runtime, args, context?.sessionId);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAkB9E,MAAM,SAAS,GAAkB,GAAG,EAAE,GAAE,CAAC,CAAC;AAa1C,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,EAC9B,aAAa,EACb,YAAY,EACZ,OAAO,EACP,KAAK,GAAG,SAAS,GACM;IACvB,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC;QACxB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAEvC,GAAG,CAAC,YAAY,CACd,IAAI,EACJ;YACE,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;SACtC,EACD,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,uFAAuF;YACvF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,UAAU,EAAE,IAAI;gBAC5B,aAAa,EAAE,UAAU,EAAE,OAAO;aACnC,CAAC;YACF,IAAI,CAAC;gBACH,0DAA0D;gBAC1D,qDAAqD;gBACrD,IACE,OAAO,CAAC,WAAW,KAAK,SAAS;oBACjC,OAAO,CAAC,SAAS,KAAK,aAAa,EACnC,CAAC;oBACD,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC7C,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CACjC,OAAO,EACP,IAAI,EACJ,OAAO,EAAE,SAAS,CACnB,CAAC;gBACF,KAAK,CAAC;oBACJ,GAAG,SAAS;oBACZ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBAC7C,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC;oBACJ,GAAG,SAAS;oBACZ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,MAAM,SAAS,GAAkB,GAAG,EAAE,GAAE,CAAC,CAAC;AAa1C,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,EAC9B,aAAa,EACb,YAAY,EACZ,OAAO,EACP,KAAK,GAAG,SAAS,GACM;IACvB,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC;QACxB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IAEH,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAExD,GAAG,CAAC,YAAY,CACd,IAAI,EACJ;YACE,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;SACtC,EACD,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,uFAAuF;YACvF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,UAAU,EAAE,IAAI;gBAC5B,aAAa,EAAE,UAAU,EAAE,OAAO;aACnC,CAAC;YACF,IAAI,CAAC;gBACH,mEAAmE;gBACnE,+DAA+D;gBAC/D,gEAAgE;gBAChE,2DAA2D;gBAC3D,MAAM,kBAAkB,GAAG,OAAO,CAAC,0BAA0B,CAC3D,OAAO,EACP,IAAI,CACL,CAAC;gBACF,IACE,OAAO,CAAC,WAAW,KAAK,SAAS;oBACjC,kBAAkB,KAAK,SAAS;oBAChC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,IAAI,KAAK,OAAO,EAChE,CAAC;oBACD,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC7C,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CACjC,OAAO,EACP,IAAI,EACJ,OAAO,EAAE,SAAS,CACnB,CAAC;gBACF,KAAK,CAAC;oBACJ,GAAG,SAAS;oBACZ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBAC7C,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC;oBACJ,GAAG,SAAS;oBACZ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}