@confluentinc/mcp-confluent 1.0.1 → 1.0.2

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 (257) hide show
  1. package/README.md +277 -25
  2. package/dist/cli.d.ts +42 -3
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +203 -30
  5. package/dist/cli.js.map +1 -1
  6. package/dist/confluent/client-manager.d.ts +31 -11
  7. package/dist/confluent/client-manager.d.ts.map +1 -1
  8. package/dist/confluent/client-manager.js +69 -32
  9. package/dist/confluent/client-manager.js.map +1 -1
  10. package/dist/confluent/helpers.d.ts +2 -2
  11. package/dist/confluent/helpers.d.ts.map +1 -1
  12. package/dist/confluent/helpers.js +1 -1
  13. package/dist/confluent/helpers.js.map +1 -1
  14. package/dist/confluent/middleware.d.ts +12 -11
  15. package/dist/confluent/middleware.d.ts.map +1 -1
  16. package/dist/confluent/middleware.js +6 -37
  17. package/dist/confluent/middleware.js.map +1 -1
  18. package/dist/confluent/schema-registry-helper.d.ts +134 -0
  19. package/dist/confluent/schema-registry-helper.d.ts.map +1 -0
  20. package/dist/confluent/schema-registry-helper.js +202 -0
  21. package/dist/confluent/schema-registry-helper.js.map +1 -0
  22. package/dist/confluent/schema.d.ts.map +1 -1
  23. package/dist/confluent/schema.js +1 -3
  24. package/dist/confluent/schema.js.map +1 -1
  25. package/dist/confluent/tools/base-tools.d.ts +43 -2
  26. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  27. package/dist/confluent/tools/base-tools.js +17 -0
  28. package/dist/confluent/tools/base-tools.js.map +1 -1
  29. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +3 -0
  30. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  31. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +7 -1
  32. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  33. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +3 -0
  34. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  35. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +7 -1
  36. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  37. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +3 -0
  38. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  39. package/dist/confluent/tools/handlers/catalog/delete-tag.js +7 -1
  40. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  41. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +3 -0
  42. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  43. package/dist/confluent/tools/handlers/catalog/list-tags.js +7 -1
  44. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  45. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +3 -0
  46. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  47. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +7 -1
  48. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  49. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +31 -28
  50. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  51. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +11 -4
  52. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  53. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +3 -0
  54. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  55. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +12 -1
  56. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  57. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +3 -0
  58. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  59. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +7 -1
  60. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  61. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +3 -0
  62. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  63. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +7 -1
  64. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  65. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +3 -0
  66. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +1 -1
  67. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +7 -1
  68. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +1 -1
  69. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +19 -16
  70. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  71. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +11 -4
  72. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  73. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +3 -0
  74. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  75. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +11 -4
  76. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  77. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +3 -0
  78. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  79. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +9 -3
  80. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  81. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +3 -0
  82. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  83. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +7 -1
  84. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  85. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +3 -0
  86. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  87. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +9 -3
  88. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  89. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +3 -0
  90. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +1 -1
  91. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js +7 -1
  92. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +1 -1
  93. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +3 -0
  94. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  95. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +7 -1
  96. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  97. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +117 -0
  98. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -0
  99. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +177 -0
  100. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -0
  101. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +2 -0
  102. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  103. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +4 -1
  104. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  105. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +2 -0
  106. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  107. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +3 -0
  108. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  109. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +16 -0
  110. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -0
  111. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +67 -0
  112. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -0
  113. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +2 -0
  114. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  115. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +3 -0
  116. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  117. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +30 -0
  118. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  119. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +117 -7
  120. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  121. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +2 -0
  122. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  123. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +4 -1
  124. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  125. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +3 -0
  126. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  127. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +7 -1
  128. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  129. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +3 -0
  130. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  131. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +7 -1
  132. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  133. package/dist/confluent/tools/tool-factory.d.ts.map +1 -1
  134. package/dist/confluent/tools/tool-factory.js +8 -4
  135. package/dist/confluent/tools/tool-factory.js.map +1 -1
  136. package/dist/confluent/tools/tool-name.d.ts +3 -1
  137. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  138. package/dist/confluent/tools/tool-name.js +2 -0
  139. package/dist/confluent/tools/tool-name.js.map +1 -1
  140. package/dist/env-schema.d.ts +37 -30
  141. package/dist/env-schema.d.ts.map +1 -1
  142. package/dist/env-schema.js +31 -12
  143. package/dist/env-schema.js.map +1 -1
  144. package/dist/env.d.ts +11 -9
  145. package/dist/env.d.ts.map +1 -1
  146. package/dist/env.js +7 -7
  147. package/dist/env.js.map +1 -1
  148. package/dist/index.js +95 -28
  149. package/dist/index.js.map +1 -1
  150. package/dist/lazy.d.ts.map +1 -1
  151. package/dist/lazy.js +7 -6
  152. package/dist/lazy.js.map +1 -1
  153. package/dist/logger.d.ts +13 -0
  154. package/dist/logger.d.ts.map +1 -0
  155. package/dist/logger.js +61 -0
  156. package/dist/logger.js.map +1 -0
  157. package/dist/mcp/transports/http.d.ts +12 -0
  158. package/dist/mcp/transports/http.d.ts.map +1 -0
  159. package/dist/mcp/transports/http.js +127 -0
  160. package/dist/mcp/transports/http.js.map +1 -0
  161. package/dist/mcp/transports/index.d.ts +7 -0
  162. package/dist/mcp/transports/index.d.ts.map +1 -0
  163. package/dist/mcp/transports/index.js +7 -0
  164. package/dist/mcp/transports/index.js.map +1 -0
  165. package/dist/mcp/transports/manager.d.ts +12 -0
  166. package/dist/mcp/transports/manager.d.ts.map +1 -0
  167. package/dist/mcp/transports/manager.js +86 -0
  168. package/dist/mcp/transports/manager.js.map +1 -0
  169. package/dist/mcp/transports/server.d.ts +12 -0
  170. package/dist/mcp/transports/server.d.ts.map +1 -0
  171. package/dist/mcp/transports/server.js +87 -0
  172. package/dist/mcp/transports/server.js.map +1 -0
  173. package/dist/mcp/transports/sse.d.ts +12 -0
  174. package/dist/mcp/transports/sse.d.ts.map +1 -0
  175. package/dist/mcp/transports/sse.js +110 -0
  176. package/dist/mcp/transports/sse.js.map +1 -0
  177. package/dist/mcp/transports/stdio.d.ts +9 -0
  178. package/dist/mcp/transports/stdio.d.ts.map +1 -0
  179. package/dist/mcp/transports/stdio.js +17 -0
  180. package/dist/mcp/transports/stdio.js.map +1 -0
  181. package/dist/mcp/transports/types.d.ts +14 -0
  182. package/dist/mcp/transports/types.d.ts.map +1 -0
  183. package/dist/mcp/transports/types.js +7 -0
  184. package/dist/mcp/transports/types.js.map +1 -0
  185. package/dist/print-md-schema.d.ts +5 -0
  186. package/dist/print-md-schema.d.ts.map +1 -1
  187. package/dist/print-md-schema.js +6 -0
  188. package/dist/print-md-schema.js.map +1 -1
  189. package/package.json +31 -18
  190. package/dist/confluent/tools/handlers/catalog/add-tag-to-topic.d.ts +0 -8
  191. package/dist/confluent/tools/handlers/catalog/add-tag-to-topic.d.ts.map +0 -1
  192. package/dist/confluent/tools/handlers/catalog/add-tag-to-topic.js +0 -47
  193. package/dist/confluent/tools/handlers/catalog/add-tag-to-topic.js.map +0 -1
  194. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic copy.d.ts +0 -8
  195. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic copy.d.ts.map +0 -1
  196. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic copy.js +0 -47
  197. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic copy.js.map +0 -1
  198. package/dist/confluent/tools/handlers/catalog/create-topic-tags copy.d.ts +0 -8
  199. package/dist/confluent/tools/handlers/catalog/create-topic-tags copy.d.ts.map +0 -1
  200. package/dist/confluent/tools/handlers/catalog/create-topic-tags copy.js +0 -52
  201. package/dist/confluent/tools/handlers/catalog/create-topic-tags copy.js.map +0 -1
  202. package/dist/confluent/tools/handlers/catalog/delete-tag copy.d.ts +0 -8
  203. package/dist/confluent/tools/handlers/catalog/delete-tag copy.d.ts.map +0 -1
  204. package/dist/confluent/tools/handlers/catalog/delete-tag copy.js +0 -42
  205. package/dist/confluent/tools/handlers/catalog/delete-tag copy.js.map +0 -1
  206. package/dist/confluent/tools/handlers/catalog/delete-tag-for-entity.d.ts +0 -8
  207. package/dist/confluent/tools/handlers/catalog/delete-tag-for-entity.d.ts.map +0 -1
  208. package/dist/confluent/tools/handlers/catalog/delete-tag-for-entity.js +0 -56
  209. package/dist/confluent/tools/handlers/catalog/delete-tag-for-entity.js.map +0 -1
  210. package/dist/confluent/tools/handlers/catalog/list-.d.ts +0 -8
  211. package/dist/confluent/tools/handlers/catalog/list-.d.ts.map +0 -1
  212. package/dist/confluent/tools/handlers/catalog/list-.js +0 -35
  213. package/dist/confluent/tools/handlers/catalog/list-.js.map +0 -1
  214. package/dist/confluent/tools/handlers/connect/create-connector-handler copy.d.ts +0 -8
  215. package/dist/confluent/tools/handlers/connect/create-connector-handler copy.d.ts.map +0 -1
  216. package/dist/confluent/tools/handlers/connect/create-connector-handler copy.js +0 -84
  217. package/dist/confluent/tools/handlers/connect/create-connector-handler copy.js.map +0 -1
  218. package/dist/confluent/tools/handlers/entity/create-tags-for-topics.d.ts +0 -8
  219. package/dist/confluent/tools/handlers/entity/create-tags-for-topics.d.ts.map +0 -1
  220. package/dist/confluent/tools/handlers/entity/create-tags-for-topics.js +0 -52
  221. package/dist/confluent/tools/handlers/entity/create-tags-for-topics.js.map +0 -1
  222. package/dist/confluent/tools/handlers/entity/create-topic-tags.d.ts +0 -8
  223. package/dist/confluent/tools/handlers/entity/create-topic-tags.d.ts.map +0 -1
  224. package/dist/confluent/tools/handlers/entity/create-topic-tags.js +0 -52
  225. package/dist/confluent/tools/handlers/entity/create-topic-tags.js.map +0 -1
  226. package/dist/confluent/tools/handlers/entity/create-topicc-tags.d.ts +0 -8
  227. package/dist/confluent/tools/handlers/entity/create-topicc-tags.d.ts.map +0 -1
  228. package/dist/confluent/tools/handlers/entity/create-topicc-tags.js +0 -52
  229. package/dist/confluent/tools/handlers/entity/create-topicc-tags.js.map +0 -1
  230. package/dist/confluent/tools/handlers/entity/create-topics-tags.d.ts +0 -8
  231. package/dist/confluent/tools/handlers/entity/create-topics-tags.d.ts.map +0 -1
  232. package/dist/confluent/tools/handlers/entity/create-topics-tags.js +0 -52
  233. package/dist/confluent/tools/handlers/entity/create-topics-tags.js.map +0 -1
  234. package/dist/confluent/tools/handlers/entity/topics-with-tags-handler copy.d.ts +0 -8
  235. package/dist/confluent/tools/handlers/entity/topics-with-tags-handler copy.d.ts.map +0 -1
  236. package/dist/confluent/tools/handlers/entity/topics-with-tags-handler copy.js +0 -39
  237. package/dist/confluent/tools/handlers/entity/topics-with-tags-handler copy.js.map +0 -1
  238. package/dist/confluent/tools/handlers/entity/topics-with-tags-handler.d.ts +0 -8
  239. package/dist/confluent/tools/handlers/entity/topics-with-tags-handler.d.ts.map +0 -1
  240. package/dist/confluent/tools/handlers/entity/topics-with-tags-handler.js +0 -39
  241. package/dist/confluent/tools/handlers/entity/topics-with-tags-handler.js.map +0 -1
  242. package/dist/confluent/tools/handlers/kafka/alter-topic-config copy.d.ts +0 -14
  243. package/dist/confluent/tools/handlers/kafka/alter-topic-config copy.d.ts.map +0 -1
  244. package/dist/confluent/tools/handlers/kafka/alter-topic-config copy.js +0 -61
  245. package/dist/confluent/tools/handlers/kafka/alter-topic-config copy.js.map +0 -1
  246. package/dist/confluent/tools/handlers/kafka/create-topics-handler copy.d.ts +0 -8
  247. package/dist/confluent/tools/handlers/kafka/create-topics-handler copy.d.ts.map +0 -1
  248. package/dist/confluent/tools/handlers/kafka/create-topics-handler copy.js +0 -28
  249. package/dist/confluent/tools/handlers/kafka/create-topics-handler copy.js.map +0 -1
  250. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler copy.d.ts +0 -8
  251. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler copy.d.ts.map +0 -1
  252. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler copy.js +0 -45
  253. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler copy.js.map +0 -1
  254. package/dist/confluent/tools/handlers/search/topics-with-tags-handler.d.ts +0 -8
  255. package/dist/confluent/tools/handlers/search/topics-with-tags-handler.d.ts.map +0 -1
  256. package/dist/confluent/tools/handlers/search/topics-with-tags-handler.js +0 -39
  257. package/dist/confluent/tools/handlers/search/topics-with-tags-handler.js.map +0 -1
@@ -1,52 +1,71 @@
1
1
  import { z } from "zod";
2
- // Schema for required environment variables
2
+ // Environment variables that are required for tools to be enabled/disabled
3
3
  const envSchema = z.object({
4
+ HTTP_PORT: z.coerce
5
+ .number()
6
+ .int()
7
+ .positive()
8
+ .describe("Port to use for HTTP transport")
9
+ .default(3000),
10
+ HTTP_HOST: z
11
+ .string()
12
+ .describe("Host to bind for HTTP transport")
13
+ .default("localhost"),
4
14
  BOOTSTRAP_SERVERS: z
5
15
  .string()
6
16
  .describe("List of Kafka broker addresses in the format host1:port1,host2:port2 used to establish initial connection to the Kafka cluster")
7
- .trim(),
17
+ .trim()
18
+ .optional(),
8
19
  KAFKA_API_KEY: z
9
20
  .string()
10
21
  .describe("Authentication credential (username) required to establish secure connection with the Kafka cluster")
11
22
  .trim()
12
- .min(1),
23
+ .min(1)
24
+ .optional(),
13
25
  KAFKA_API_SECRET: z
14
26
  .string()
15
27
  .describe("Authentication credential (password) paired with KAFKA_API_KEY for secure Kafka cluster access")
16
28
  .trim()
17
- .min(1),
29
+ .min(1)
30
+ .optional(),
18
31
  FLINK_API_KEY: z
19
32
  .string()
20
33
  .describe("Authentication key for accessing Confluent Cloud's Flink services, including compute pools and SQL statement management")
21
34
  .trim()
22
- .min(1),
35
+ .min(1)
36
+ .optional(),
23
37
  FLINK_API_SECRET: z
24
38
  .string()
25
39
  .describe("Secret token paired with FLINK_API_KEY for authenticated access to Confluent Cloud's Flink services")
26
40
  .trim()
27
- .min(1),
41
+ .min(1)
42
+ .optional(),
28
43
  CONFLUENT_CLOUD_API_KEY: z
29
44
  .string()
30
45
  .describe("Master API key for Confluent Cloud platform administration, enabling management of resources across your organization")
31
46
  .trim()
32
- .min(1),
47
+ .min(1)
48
+ .optional(),
33
49
  CONFLUENT_CLOUD_API_SECRET: z
34
50
  .string()
35
51
  .describe("Master API secret paired with CONFLUENT_CLOUD_API_KEY for comprehensive Confluent Cloud platform administration")
36
52
  .trim()
37
- .min(1),
53
+ .min(1)
54
+ .optional(),
38
55
  SCHEMA_REGISTRY_API_KEY: z
39
56
  .string()
40
57
  .describe("Authentication key for accessing Schema Registry services to manage and validate data schemas")
41
58
  .trim()
42
- .min(1),
59
+ .min(1)
60
+ .optional(),
43
61
  SCHEMA_REGISTRY_API_SECRET: z
44
62
  .string()
45
63
  .describe("Authentication secret paired with SCHEMA_REGISTRY_API_KEY for secure Schema Registry access")
46
64
  .trim()
47
- .min(1),
65
+ .min(1)
66
+ .optional(),
48
67
  });
49
- // Schema for optional configuration from file
68
+ // Environment variables that are optional for tools / could be provided at runtime
50
69
  const configSchema = z
51
70
  .object({
52
71
  FLINK_ENV_ID: z
@@ -106,6 +125,6 @@ const configSchema = z
106
125
  .trim()
107
126
  .url(),
108
127
  })
109
- .partial(); // Makes all fields optional
128
+ .partial();
110
129
  export const combinedSchema = envSchema.merge(configSchema);
111
130
  //# sourceMappingURL=env-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env-schema.js","sourceRoot":"","sources":["../src/env-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-schema.js","sourceRoot":"","sources":["../src/env-schema.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts CHANGED
@@ -11,15 +11,17 @@ export declare function loadEnv(): Promise<Environment>;
11
11
  */
12
12
  export declare function initEnv(): Promise<Environment>;
13
13
  declare const env: {
14
- BOOTSTRAP_SERVERS: string;
15
- KAFKA_API_KEY: string;
16
- KAFKA_API_SECRET: string;
17
- FLINK_API_KEY: string;
18
- FLINK_API_SECRET: string;
19
- CONFLUENT_CLOUD_API_KEY: string;
20
- CONFLUENT_CLOUD_API_SECRET: string;
21
- SCHEMA_REGISTRY_API_KEY: string;
22
- SCHEMA_REGISTRY_API_SECRET: string;
14
+ HTTP_PORT: number;
15
+ HTTP_HOST: string;
16
+ BOOTSTRAP_SERVERS?: string | undefined;
17
+ KAFKA_API_KEY?: string | undefined;
18
+ KAFKA_API_SECRET?: string | undefined;
19
+ FLINK_API_KEY?: string | undefined;
20
+ FLINK_API_SECRET?: string | undefined;
21
+ CONFLUENT_CLOUD_API_KEY?: string | undefined;
22
+ CONFLUENT_CLOUD_API_SECRET?: string | undefined;
23
+ SCHEMA_REGISTRY_API_KEY?: string | undefined;
24
+ SCHEMA_REGISTRY_API_SECRET?: string | undefined;
23
25
  FLINK_ENV_ID?: string | undefined;
24
26
  FLINK_ORG_ID?: string | undefined;
25
27
  FLINK_REST_ENDPOINT?: string | undefined;
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAKzD;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CASpD;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CAMpD;AAGD,QAAA,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;CAOP,CAAC;AAEH,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAMzD;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CAQpD;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CAMpD;AAGD,QAAA,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;CASP,CAAC;AAEH,eAAe,GAAG,CAAC"}
package/dist/env.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { combinedSchema } from "./env-schema.js";
2
+ import { logger } from "./logger.js";
2
3
  // Track if environment is initialized
3
4
  let isInitialized = false;
4
5
  let envValues = {};
@@ -8,12 +9,11 @@ let envValues = {};
8
9
  */
9
10
  export async function loadEnv() {
10
11
  try {
11
- // Load and validate environment variables
12
- const envVars = combinedSchema.parse(process.env);
13
- return envVars;
12
+ // Load and validate environment variables with automatic type conversion
13
+ return combinedSchema.parse(process.env);
14
14
  }
15
15
  catch (error) {
16
- console.error("Environment validation error:", error);
16
+ logger.error({ error }, "Environment validation error");
17
17
  process.exit(1);
18
18
  }
19
19
  }
@@ -30,10 +30,10 @@ export async function initEnv() {
30
30
  // Create a module to provide access to environment variables
31
31
  const env = new Proxy({}, {
32
32
  get: (_, property) => {
33
- if (isInitialized) {
34
- return envValues[property];
33
+ if (!isInitialized) {
34
+ throw new Error(`Environment not initialized. Attempted to access ${property} before initialization.`);
35
35
  }
36
- return undefined;
36
+ return envValues[property];
37
37
  },
38
38
  });
39
39
  export default env;
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,sCAAsC;AACtC,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,SAAS,GAAgB,EAAiB,CAAC;AAC/C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6DAA6D;AAC7D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,EAAiB,EAAE;IACvC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAgB,EAAE,EAAE;QAC3B,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC,QAA6B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC,CAAC;AAEH,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAKxC,sCAAsC;AACtC,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,SAAS,GAAgB,EAAiB,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,IAAI,CAAC;QACH,yEAAyE;QACzE,OAAO,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6DAA6D;AAC7D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,EAAiB,EAAE;IACvC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAgB,EAAE,EAAE;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,oDAAoD,QAAQ,yBAAyB,CACtF,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC,QAA6B,CAAC,CAAC;IAClD,CAAC;CACF,CAAC,CAAC;AAEH,eAAe,GAAG,CAAC"}
package/dist/index.js CHANGED
@@ -1,51 +1,121 @@
1
1
  #!/usr/bin/env node
2
- import { KafkaJS } from "@confluentinc/kafka-javascript";
3
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
- import { parseCliArgs } from "./cli.js";
3
+ import { getFilteredToolNames, getPackageVersion, parseCliArgs, } from "./cli.js";
6
4
  import { DefaultClientManager } from "./confluent/client-manager.js";
7
5
  import { ToolFactory } from "./confluent/tools/tool-factory.js";
8
6
  import { ToolName } from "./confluent/tools/tool-name.js";
9
7
  import { initEnv } from "./env.js";
8
+ import { logger } from "./logger.js";
9
+ import { TransportManager } from "./mcp/transports/index.js";
10
10
  // Parse command line arguments and load environment variables if --env-file is specified
11
- parseCliArgs();
11
+ const cliOptions = parseCliArgs();
12
12
  async function main() {
13
13
  try {
14
14
  // Initialize environment after CLI args are processed
15
15
  const env = await initEnv();
16
+ // Merge environment variables with kafka config from CLI
17
+ // some additional configurations could be set in the client manager
18
+ // like separating groupIds by sessionId
16
19
  const kafkaClientConfig = {
17
- kafkaJS: {
18
- brokers: env.BOOTSTRAP_SERVERS?.split(",") ?? [],
19
- clientId: "mcp-client",
20
- ssl: true,
21
- sasl: {
22
- mechanism: "plain",
23
- username: env.KAFKA_API_KEY,
24
- password: env.KAFKA_API_SECRET,
20
+ // Base configuration from environment variables
21
+ "bootstrap.servers": env.BOOTSTRAP_SERVERS,
22
+ "client.id": "mcp-confluent",
23
+ ...(env.KAFKA_API_KEY && env.KAFKA_API_SECRET
24
+ ? {
25
+ "security.protocol": "sasl_ssl",
26
+ "sasl.mechanisms": "PLAIN",
27
+ "sasl.username": env.KAFKA_API_KEY,
28
+ "sasl.password": env.KAFKA_API_SECRET,
29
+ }
30
+ : {}),
31
+ // Merge any additional properties from the kafka config file
32
+ ...cliOptions.kafkaConfig,
33
+ };
34
+ const clientManager = new DefaultClientManager({
35
+ kafka: kafkaClientConfig,
36
+ endpoints: {
37
+ cloud: env.CONFLUENT_CLOUD_REST_ENDPOINT,
38
+ flink: env.FLINK_REST_ENDPOINT,
39
+ schemaRegistry: env.SCHEMA_REGISTRY_ENDPOINT,
40
+ kafka: env.KAFKA_REST_ENDPOINT,
41
+ },
42
+ auth: {
43
+ cloud: {
44
+ apiKey: env.CONFLUENT_CLOUD_API_KEY,
45
+ apiSecret: env.CONFLUENT_CLOUD_API_SECRET,
46
+ },
47
+ flink: {
48
+ apiKey: env.FLINK_API_KEY,
49
+ apiSecret: env.FLINK_API_SECRET,
50
+ },
51
+ schemaRegistry: {
52
+ apiKey: env.SCHEMA_REGISTRY_API_KEY,
53
+ apiSecret: env.SCHEMA_REGISTRY_API_SECRET,
54
+ },
55
+ kafka: {
56
+ apiKey: env.KAFKA_API_KEY,
57
+ apiSecret: env.KAFKA_API_SECRET,
25
58
  },
26
- logLevel: KafkaJS.logLevel.ERROR,
27
59
  },
28
- };
29
- const clientManager = new DefaultClientManager(kafkaClientConfig, env.CONFLUENT_CLOUD_REST_ENDPOINT, env.FLINK_REST_ENDPOINT, env.SCHEMA_REGISTRY_ENDPOINT, env.KAFKA_REST_ENDPOINT);
60
+ });
61
+ const filteredToolNames = getFilteredToolNames(cliOptions);
62
+ // If --list-tools is set, print tool names with descriptions and exit
63
+ if (cliOptions.listTools) {
64
+ const MAX_DESC_LENGTH = 120;
65
+ filteredToolNames.forEach((toolName) => {
66
+ const config = ToolFactory.getToolConfig(toolName);
67
+ let desc = config.description.replace(/\s+/g, " ").trim();
68
+ if (desc.length > MAX_DESC_LENGTH) {
69
+ desc = desc.slice(0, MAX_DESC_LENGTH - 3) + "...";
70
+ }
71
+ console.log(`\x1b[32m${config.name}\x1b[0m: ${desc}`);
72
+ });
73
+ process.exit(0);
74
+ }
30
75
  const toolHandlers = new Map();
31
- // TODO: Should we have the enabled tools come from configuration?
32
- const enabledTools = new Set(Object.values(ToolName));
33
- enabledTools.forEach((toolName) => {
34
- toolHandlers.set(toolName, ToolFactory.createToolHandler(toolName));
76
+ // Initialize tools and check their requirements
77
+ Object.values(ToolName).forEach((toolName) => {
78
+ if (!filteredToolNames.includes(toolName)) {
79
+ logger.warn(`Tool ${toolName} disabled due to allow/block list rules`);
80
+ return;
81
+ }
82
+ const handler = ToolFactory.createToolHandler(toolName);
83
+ // Skip cloud-only tools if disabled by CLI/env
84
+ if (cliOptions.disableConfluentCloudTools &&
85
+ handler.isConfluentCloudOnly()) {
86
+ logger.warn(`Tool ${toolName} disabled due to --disable-confluent-cloud-tools flag or DISABLE_CONFLUENT_CLOUD_TOOLS env var`);
87
+ return;
88
+ }
89
+ const missingVars = handler
90
+ .getRequiredEnvVars()
91
+ .filter((varName) => !env[varName]);
92
+ if (missingVars.length === 0) {
93
+ toolHandlers.set(toolName, handler);
94
+ logger.info(`Tool ${toolName} enabled`);
95
+ }
96
+ else {
97
+ logger.warn(`Tool ${toolName} disabled due to missing environment variables: ${missingVars.join(", ")}`);
98
+ }
35
99
  });
36
100
  const server = new McpServer({
37
101
  name: "confluent",
38
- version: process.env.npm_package_version ?? "dev",
102
+ version: getPackageVersion(),
39
103
  });
40
104
  toolHandlers.forEach((handler, name) => {
41
105
  const config = handler.getToolConfig();
42
- server.tool(name, config.description, config.inputSchema, async (args) => {
43
- return await handler.handle(clientManager, args);
106
+ server.tool(name, config.description, config.inputSchema, async (args, context) => {
107
+ const sessionId = context?.sessionId;
108
+ return await handler.handle(clientManager, args, sessionId);
44
109
  });
45
110
  });
111
+ const transportManager = new TransportManager(server);
112
+ // Start all transports with a single call
113
+ logger.info(`Starting transports: ${cliOptions.transports.join(", ")}`);
114
+ await transportManager.start(cliOptions.transports, env.HTTP_PORT, env.HTTP_HOST);
46
115
  // Set up cleanup handlers
47
116
  const performCleanup = async () => {
48
- console.error("Shutting down...");
117
+ logger.info("Shutting down...");
118
+ await transportManager.stop();
49
119
  await clientManager.disconnect();
50
120
  await server.close();
51
121
  process.exit(0);
@@ -54,17 +124,14 @@ async function main() {
54
124
  process.on("SIGTERM", performCleanup);
55
125
  process.on("SIGQUIT", performCleanup);
56
126
  process.on("SIGUSR2", performCleanup);
57
- const transport = new StdioServerTransport();
58
- await server.connect(transport);
59
- console.error("Confluent MCP Server running on stdio");
60
127
  }
61
128
  catch (error) {
62
- console.error("Error starting server:", error);
129
+ logger.error({ error }, "Error starting server");
63
130
  process.exit(1);
64
131
  }
65
132
  }
66
133
  main().catch((error) => {
67
- console.error("Error starting server:", error);
134
+ logger.error({ error }, "Error starting server");
68
135
  process.exit(1);
69
136
  });
70
137
  //# 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":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,yFAAyF;AACzF,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;AAElC,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,sDAAsD;QACtD,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAE5B,yDAAyD;QACzD,oEAAoE;QACpE,wCAAwC;QACxC,MAAM,iBAAiB,GAAiB;YACtC,gDAAgD;YAChD,mBAAmB,EAAE,GAAG,CAAC,iBAAkB;YAC3C,WAAW,EAAE,eAAe;YAC5B,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,gBAAgB;gBAC3C,CAAC,CAAC;oBACE,mBAAmB,EAAE,UAAU;oBAC/B,iBAAiB,EAAE,OAAO;oBAC1B,eAAe,EAAE,GAAG,CAAC,aAAc;oBACnC,eAAe,EAAE,GAAG,CAAC,gBAAiB;iBACvC;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,6DAA6D;YAC7D,GAAG,UAAU,CAAC,WAAW;SAC1B,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC;YAC7C,KAAK,EAAE,iBAAiB;YACxB,SAAS,EAAE;gBACT,KAAK,EAAE,GAAG,CAAC,6BAA6B;gBACxC,KAAK,EAAE,GAAG,CAAC,mBAAmB;gBAC9B,cAAc,EAAE,GAAG,CAAC,wBAAwB;gBAC5C,KAAK,EAAE,GAAG,CAAC,mBAAmB;aAC/B;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL,MAAM,EAAE,GAAG,CAAC,uBAAwB;oBACpC,SAAS,EAAE,GAAG,CAAC,0BAA2B;iBAC3C;gBACD,KAAK,EAAE;oBACL,MAAM,EAAE,GAAG,CAAC,aAAc;oBAC1B,SAAS,EAAE,GAAG,CAAC,gBAAiB;iBACjC;gBACD,cAAc,EAAE;oBACd,MAAM,EAAE,GAAG,CAAC,uBAAwB;oBACpC,SAAS,EAAE,GAAG,CAAC,0BAA2B;iBAC3C;gBACD,KAAK,EAAE;oBACL,MAAM,EAAE,GAAG,CAAC,aAAc;oBAC1B,SAAS,EAAE,GAAG,CAAC,gBAAiB;iBACjC;aACF;SACF,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAE3D,sEAAsE;QACtE,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,GAAG,CAAC;YAC5B,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACrC,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACnD,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1D,IAAI,IAAI,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;oBAClC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBACpD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;QAEtD,gDAAgD;QAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,QAAQ,QAAQ,yCAAyC,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACxD,+CAA+C;YAC/C,IACE,UAAU,CAAC,0BAA0B;gBACrC,OAAO,CAAC,oBAAoB,EAAE,EAC9B,CAAC;gBACD,MAAM,CAAC,IAAI,CACT,QAAQ,QAAQ,gGAAgG,CACjH,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,WAAW,GAAG,OAAO;iBACxB,kBAAkB,EAAE;iBACpB,MAAM,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAE9C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,QAAQ,QAAQ,UAAU,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CACT,QAAQ,QAAQ,mDAAmD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5F,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC3B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,iBAAiB,EAAE;SAC7B,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAEvC,MAAM,CAAC,IAAI,CACT,IAAc,EACd,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,WAAW,EAClB,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;gBACtB,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;gBACrC,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC9D,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEtD,0CAA0C;QAC1C,MAAM,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,gBAAgB,CAAC,KAAK,CAC1B,UAAU,CAAC,UAAU,EACrB,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,SAAS,CACd,CAAC;QAEF,0BAA0B;QAC1B,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAChC,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACrC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACtC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACtC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,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;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"}
package/dist/lazy.js CHANGED
@@ -3,6 +3,7 @@
3
3
  * It defers the initialization of a value until it's first requested.
4
4
  * @template T The type of value to be lazily loaded
5
5
  */
6
+ import { logger } from "./logger.js";
6
7
  export class Lazy {
7
8
  /** The cached instance of the lazily loaded value */
8
9
  instance;
@@ -27,7 +28,7 @@ export class Lazy {
27
28
  get() {
28
29
  try {
29
30
  this.instance = this.supplier();
30
- console.error(`Lazy instance created with type ${this.instance?.constructor.name || typeof this.instance}`);
31
+ logger.debug(`Lazy instance created with type ${this.instance?.constructor.name || typeof this.instance}`);
31
32
  }
32
33
  catch (error) {
33
34
  throw new Error(`Failed to initialize lazy instance: ${error}`);
@@ -42,9 +43,9 @@ export class Lazy {
42
43
  close() {
43
44
  if (this.instance) {
44
45
  if (this.closeHandler) {
45
- console.error(`Initiating close handler for lazy instance of type ${typeof this.instance}`);
46
+ logger.debug(`Initiating close handler for lazy instance of type ${typeof this.instance}`);
46
47
  this.closeHandler(this.instance);
47
- console.error(`Lazy instance closed with type ${typeof this.instance}`);
48
+ logger.debug(`Lazy instance closed with type ${typeof this.instance}`);
48
49
  }
49
50
  this.instance = undefined;
50
51
  }
@@ -85,7 +86,7 @@ export class AsyncLazy {
85
86
  }
86
87
  this.instance = await this.initializationPromise;
87
88
  }
88
- console.error(`Async Lazy instance created with type ${this.instance?.constructor.name || typeof this.instance}`);
89
+ logger.debug(`Async Lazy instance created with type ${this.instance?.constructor.name || typeof this.instance}`);
89
90
  return this.instance;
90
91
  }
91
92
  /**
@@ -96,9 +97,9 @@ export class AsyncLazy {
96
97
  async close() {
97
98
  if (this.instance) {
98
99
  if (this.closeHandler) {
99
- console.error(`Initiating close handler for lazy instance of type ${typeof this.instance}`);
100
+ logger.debug(`Initiating close handler for lazy instance of type ${typeof this.instance}`);
100
101
  await this.closeHandler(this.instance);
101
- console.error(`Lazy instance closed with type ${typeof this.instance}`);
102
+ logger.debug(`Lazy instance closed with type ${typeof this.instance}`);
102
103
  }
103
104
  }
104
105
  }
package/dist/lazy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../src/lazy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,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,OAAO,CAAC,KAAK,CACX,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,OAAO,CAAC,KAAK,CACX,sDAAsD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAC7E,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,kCAAkC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1E,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,OAAO,CAAC,KAAK,CACX,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,OAAO,CAAC,KAAK,CACX,sDAAsD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAC7E,CAAC;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,OAAO,CAAC,KAAK,CAAC,kCAAkC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
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"}
@@ -0,0 +1,13 @@
1
+ import { KafkaJS } from "@confluentinc/kafka-javascript";
2
+ export declare const logger: import("pino").Logger<never, boolean>;
3
+ export declare const kafkaLogger: KafkaJS.Logger;
4
+ export declare const logLevels: {
5
+ readonly fatal: 60;
6
+ readonly error: 50;
7
+ readonly warn: 40;
8
+ readonly info: 30;
9
+ readonly debug: 20;
10
+ readonly trace: 10;
11
+ };
12
+ export type LogLevel = keyof typeof logLevels;
13
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAMzD,eAAO,MAAM,MAAM,uCAclB,CAAC;AA4CF,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,MAA2C,CAAC;AAG9E,eAAO,MAAM,SAAS;;;;;;;CAOZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAC"}
package/dist/logger.js ADDED
@@ -0,0 +1,61 @@
1
+ import { KafkaJS } from "@confluentinc/kafka-javascript";
2
+ import { pino } from "pino";
3
+ const logLevel = process.env.LOG_LEVEL || "info";
4
+ // Create logger with stderr destination
5
+ export const logger = pino({
6
+ level: logLevel,
7
+ timestamp: pino.stdTimeFunctions.isoTime,
8
+ name: "mcp-confluent",
9
+ formatters: {
10
+ level: (label) => {
11
+ return {
12
+ level: label,
13
+ };
14
+ },
15
+ },
16
+ }, pino.destination(2));
17
+ // Map Kafka log levels to Pino levels
18
+ const levelMap = {
19
+ [KafkaJS.logLevel.NOTHING]: "trace",
20
+ [KafkaJS.logLevel.ERROR]: "error",
21
+ [KafkaJS.logLevel.WARN]: "warn",
22
+ [KafkaJS.logLevel.INFO]: "info",
23
+ [KafkaJS.logLevel.DEBUG]: "debug",
24
+ };
25
+ // Create a logger with the given namespace and level
26
+ const createKafkaLogger = (baseLogger, namespace, logLevel) => {
27
+ const childLogger = baseLogger.child({ namespace });
28
+ if (logLevel) {
29
+ childLogger.level = levelMap[logLevel] || "info";
30
+ }
31
+ return {
32
+ namespace: (subNamespace, subLogLevel) => createKafkaLogger(childLogger, subNamespace, subLogLevel),
33
+ error: (message, ...args) => {
34
+ childLogger.error({ args }, message);
35
+ },
36
+ warn: (message, ...args) => {
37
+ childLogger.warn({ args }, message);
38
+ },
39
+ info: (message, ...args) => {
40
+ childLogger.info({ args }, message);
41
+ },
42
+ debug: (message, ...args) => {
43
+ childLogger.debug({ args }, message);
44
+ },
45
+ setLogLevel: (level) => {
46
+ childLogger.level = levelMap[level] || "info";
47
+ },
48
+ };
49
+ };
50
+ // Create the root Kafka logger
51
+ export const kafkaLogger = createKafkaLogger(logger, "kafka");
52
+ // Export log levels for type safety
53
+ export const logLevels = {
54
+ fatal: 60,
55
+ error: 50,
56
+ warn: 40,
57
+ info: 30,
58
+ debug: 20,
59
+ trace: 10,
60
+ };
61
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;AAEjD,wCAAwC;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CACxB;IACE,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;IACxC,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE;QACV,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,OAAO;gBACL,KAAK,EAAE,KAAK;aACb,CAAC;QACJ,CAAC;KACF;CACF,EACD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CACpB,CAAC;AAEF,sCAAsC;AACtC,MAAM,QAAQ,GAAyC;IACrD,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;IACnC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;IACjC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IAC/B,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IAC/B,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;CAClC,CAAC;AAEF,qDAAqD;AACrD,MAAM,iBAAiB,GAAG,CACxB,UAAuB,EACvB,SAAiB,EACjB,QAA2B,EACX,EAAE;IAClB,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;IACnD,CAAC;IAED,OAAO;QACL,SAAS,EAAE,CAAC,YAAoB,EAAE,WAA8B,EAAE,EAAE,CAClE,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC;QAC3D,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;YAC7C,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;YAC5C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;YAC5C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;YAC7C,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,WAAW,EAAE,CAAC,KAAuB,EAAE,EAAE;YACvC,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAmB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9E,oCAAoC;AACpC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;CACD,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { HttpServer } from "./server.js";
3
+ import { Transport } from "./types.js";
4
+ export declare class HttpTransport implements Transport {
5
+ private server;
6
+ private httpServer;
7
+ private sessions;
8
+ constructor(server: McpServer, httpServer: HttpServer);
9
+ connect(): Promise<void>;
10
+ disconnect(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBvC,qBAAa,aAAc,YAAW,SAAS;IAI3C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAJpB,OAAO,CAAC,QAAQ,CAAqD;gBAG3D,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU;IAG1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyHxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAWlC"}