@confluentinc/mcp-confluent 1.0.1 → 1.0.3

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 +76 -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 +98 -24
  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 +40 -30
  141. package/dist/env-schema.d.ts.map +1 -1
  142. package/dist/env-schema.js +36 -12
  143. package/dist/env-schema.js.map +1 -1
  144. package/dist/env.d.ts +12 -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 +96 -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 +14 -0
  154. package/dist/logger.d.ts.map +1 -0
  155. package/dist/logger.js +65 -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
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # mcp-confluent
2
2
 
3
- An MCP server implementation that enables AI assistants to interact with Confluent Kafka and Confluent Cloud REST APIs. This server allows AI tools like Claude Desktop and Goose CLI to manage Kafka topics, connectors, and Flink SQL statements through natural language interactions.
3
+ An MCP server implementation that enables AI assistants to interact with Confluent Cloud REST APIs. This server allows AI tools like Claude Desktop and Goose CLI to manage Kafka topics, connectors, and Flink SQL statements through natural language interactions.
4
+
5
+ <a href="https://glama.ai/mcp/servers/@confluentinc/mcp-confluent">
6
+ <img width="380" height="200" src="https://glama.ai/mcp/servers/@confluentinc/mcp-confluent/badge" alt="mcp-confluent MCP server" />
7
+ </a>
4
8
 
5
9
  ## Demo
6
10
 
@@ -26,6 +30,13 @@ An MCP server implementation that enables AI assistants to interact with Conflue
26
30
  - [Usage](#usage)
27
31
  - [Configuring Claude Desktop](#configuring-claude-desktop)
28
32
  - [Configuring Goose CLI](#configuring-goose-cli)
33
+ - [mcp-confluent CLI Usage](#mcp-confluent-cli-usage)
34
+ - [Basic Usage](#basic-usage)
35
+ - [Example: Deploy using all transports](#example-deploy-using-all-transports)
36
+ - [Example: Allow Only Specific Tools](#example-allow-only-specific-tools)
37
+ - [Example: Block Certain Tools](#example-block-certain-tools)
38
+ - [Example: Use Tool Lists from Files](#example-use-tool-lists-from-files)
39
+ - [Example: List All Available Tools](#example-list-all-available-tools)
29
40
  - [Developer Guide](#developer-guide)
30
41
  - [Project Structure](#project-structure)
31
42
  - [Building and Running](#building-and-running)
@@ -80,41 +91,49 @@ SCHEMA_REGISTRY_API_KEY="..."
80
91
  SCHEMA_REGISTRY_API_SECRET="..."
81
92
  SCHEMA_REGISTRY_ENDPOINT="https://psrc-zv01y.northamerica-northeast2.gcp.confluent.cloud"
82
93
  ```
94
+
83
95
  </details>
84
96
 
85
97
  ### Environment Variables Reference
86
98
 
87
99
  | Variable | Description | Default Value | Required |
88
100
  | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------- |
89
- | BOOTSTRAP_SERVERS | List of Kafka broker addresses in the format host1:port1,host2:port2 used to establish initial connection to the Kafka cluster (string) | | Yes |
90
- | CONFIG_PATH | File system path to store and retrieve conversation-based configurations for session persistence (Future Implementation) (string) | | Yes |
91
- | CONFLUENT_CLOUD_API_KEY | Master API key for Confluent Cloud platform administration, enabling management of resources across your organization (string (min: 1)) | | Yes |
92
- | CONFLUENT_CLOUD_API_SECRET | Master API secret paired with CONFLUENT_CLOUD_API_KEY for comprehensive Confluent Cloud platform administration (string (min: 1)) | | Yes |
93
- | FLINK_API_KEY | Authentication key for accessing Confluent Cloud's Flink services, including compute pools and SQL statement management (string (min: 1)) | | Yes |
94
- | FLINK_API_SECRET | Secret token paired with FLINK_API_KEY for authenticated access to Confluent Cloud's Flink services (string (min: 1)) | | Yes |
95
- | KAFKA_API_KEY | Authentication credential (username) required to establish secure connection with the Kafka cluster (string (min: 1)) | | Yes |
96
- | KAFKA_API_SECRET | Authentication credential (password) paired with KAFKA_API_KEY for secure Kafka cluster access (string (min: 1)) | | Yes |
97
- | SCHEMA_REGISTRY_API_KEY | Authentication key for accessing Schema Registry services to manage and validate data schemas (string (min: 1)) | | Yes |
98
- | SCHEMA_REGISTRY_API_SECRET | Authentication secret paired with SCHEMA_REGISTRY_API_KEY for secure Schema Registry access (string (min: 1)) | | Yes |
101
+ | HTTP_HOST | Host to bind for HTTP transport (string) | "localhost" | Yes |
102
+ | HTTP_PORT | Port to use for HTTP transport (number (min: 0)) | 3000 | Yes |
103
+ | BOOTSTRAP_SERVERS | List of Kafka broker addresses in the format host1:port1,host2:port2 used to establish initial connection to the Kafka cluster (string) | | No |
104
+ | CONFLUENT_CLOUD_API_KEY | Master API key for Confluent Cloud platform administration, enabling management of resources across your organization (string (min: 1)) | | No |
105
+ | CONFLUENT_CLOUD_API_SECRET | Master API secret paired with CONFLUENT_CLOUD_API_KEY for comprehensive Confluent Cloud platform administration (string (min: 1)) | | No |
99
106
  | CONFLUENT_CLOUD_REST_ENDPOINT | Base URL for Confluent Cloud's REST API services (default) | | No |
107
+ | FLINK_API_KEY | Authentication key for accessing Confluent Cloud's Flink services, including compute pools and SQL statement management (string (min: 1)) | | No |
108
+ | FLINK_API_SECRET | Secret token paired with FLINK_API_KEY for authenticated access to Confluent Cloud's Flink services (string (min: 1)) | | No |
100
109
  | FLINK_COMPUTE_POOL_ID | Unique identifier for the Flink compute pool, must start with 'lfcp-' prefix (string) | | No |
101
110
  | FLINK_DATABASE_NAME | Name of the associated Kafka cluster used as a database reference in Flink SQL operations (string (min: 1)) | | No |
102
111
  | FLINK_ENV_ID | Unique identifier for the Flink environment, must start with 'env-' prefix (string) | | No |
103
112
  | FLINK_ENV_NAME | Human-readable name for the Flink environment used for identification and display purposes (string (min: 1)) | | No |
104
113
  | FLINK_ORG_ID | Organization identifier within Confluent Cloud for Flink resource management (string (min: 1)) | | No |
105
114
  | FLINK_REST_ENDPOINT | Base URL for Confluent Cloud's Flink REST API endpoints used for SQL statement and compute pool management (string) | | No |
115
+ | KAFKA_API_KEY | Authentication credential (username) required to establish secure connection with the Kafka cluster (string (min: 1)) | | No |
116
+ | KAFKA_API_SECRET | Authentication credential (password) paired with KAFKA_API_KEY for secure Kafka cluster access (string (min: 1)) | | No |
106
117
  | KAFKA_CLUSTER_ID | Unique identifier for the Kafka cluster within Confluent Cloud ecosystem (string (min: 1)) | | No |
107
118
  | KAFKA_ENV_ID | Environment identifier for Kafka cluster, must start with 'env-' prefix (string) | | No |
108
119
  | KAFKA_REST_ENDPOINT | REST API endpoint for Kafka cluster management and administration (string) | | No |
120
+ | SCHEMA_REGISTRY_API_KEY | Authentication key for accessing Schema Registry services to manage and validate data schemas (string (min: 1)) | | No |
121
+ | SCHEMA_REGISTRY_API_SECRET | Authentication secret paired with SCHEMA_REGISTRY_API_KEY for secure Schema Registry access (string (min: 1)) | | No |
109
122
  | SCHEMA_REGISTRY_ENDPOINT | URL endpoint for accessing Schema Registry services to manage data schemas (string) | | No |
110
123
 
111
124
  ### Usage
112
125
 
113
126
  This MCP server is designed to be used with various MCP clients, such as Claude Desktop or Goose CLI/Desktop. The specific configuration and interaction will depend on the client you are using. However, the general steps are:
114
127
 
115
- 1. **Build:** Follow the instructions in the [Developer Guide](#developer-guide) to build and run the server from source. This typically involves:
116
- - Installing dependencies (`npm install`)
117
- - Building the project (`npm run build` or `npm run dev`)
128
+ 1. **Start the Server:** You can run the MCP server in one of two ways:
129
+ - **From source:** Follow the instructions in the [Developer Guide](#developer-guide) to build and run the server from source. This typically involves:
130
+ - Installing dependencies (`npm install`)
131
+ - Building the project (`npm run build` or `npm run dev`)
132
+ - **With npx:** You can start the server directly using npx (no build required):
133
+
134
+ ```bash
135
+ npx -y @confluentinc/mcp-confluent -e /path/to/confluent-mcp-server/.env
136
+ ```
118
137
 
119
138
  2. **Configure your MCP Client:** Each client will have its own way of specifying the MCP server's address and any required credentials. You'll need to configure your client (e.g., Claude, Goose) to connect to the address where this server is running (likely `localhost` with a specific port). The port the server runs on may be configured by an environment variable.
120
139
 
@@ -145,14 +164,15 @@ To configure Claude Desktop to use this MCP server:
145
164
  "confluent": {
146
165
  "command": "node",
147
166
  "args": [
148
- "--env-file",
167
+ "/path/to/confluent-mcp-server/dist/index.js",
168
+ "--env-file",
149
169
  "/path/to/confluent-mcp-server/.env",
150
- "/path/to/confluent-mcp-server/dist/index.js"
151
170
  ]
152
171
  }
153
172
  }
154
173
  }
155
174
  ```
175
+
156
176
  </details>
157
177
 
158
178
  <details>
@@ -173,6 +193,7 @@ To configure Claude Desktop to use this MCP server:
173
193
  }
174
194
  }
175
195
  ```
196
+
176
197
  </details>
177
198
 
178
199
  Replace `/path/to/confluent-mcp-server/` with the actual path where you've installed this MCP server.
@@ -192,6 +213,7 @@ See [here](https://block.github.io/goose/docs/quickstart#install-an-extension) f
192
213
  Once installed, follow these steps:
193
214
 
194
215
  1. **Run the Configuration Command:**
216
+
195
217
  ```bash
196
218
  goose configure
197
219
  ```
@@ -206,8 +228,9 @@ Once installed, follow these steps:
206
228
  <summary>Option 1: Run from source</summary>
207
229
 
208
230
  ```bash
209
- node --env-file /path/to/confluent-mcp-server/.env /path/to/confluent-mcp-server/dist/index.js
231
+ node /path/to/confluent-mcp-server/dist/index.js --env-file /path/to/confluent-mcp-server/.env
210
232
  ```
233
+
211
234
  </details>
212
235
 
213
236
  <details>
@@ -216,14 +239,242 @@ Once installed, follow these steps:
216
239
  ```bash
217
240
  npx -y @confluentinc/mcp-confluent -e /path/to/confluent-mcp-server/.env
218
241
  ```
219
- </details>
220
242
 
221
- - When asked about requiring sudo/admin privileges, select `No`
243
+ </details>
222
244
 
223
245
  Replace `/path/to/confluent-mcp-server/` with the actual path where you've installed this MCP server.
224
246
 
225
247
  ![Goose Configure](assets/goose-configure.png)
226
248
 
249
+ ### mcp-confluent CLI Usage
250
+
251
+ The MCP server provides a flexible command line interface (CLI) for advanced configuration and control. The CLI allows you to specify environment files, transports, and fine-tune which tools are enabled or blocked.
252
+
253
+ #### Basic Usage
254
+
255
+ You can view all CLI options and help with:
256
+
257
+ ```bash
258
+ npx @confluentinc/mcp-confluent --help
259
+ ```
260
+
261
+ <details>
262
+ <summary>Show output</summary>
263
+
264
+ ```bash
265
+ Usage: mcp-confluent [options]
266
+
267
+ Confluent MCP Server - Model Context Protocol implementation for Confluent Cloud
268
+
269
+ Options:
270
+ -V, --version output the version number
271
+ -e, --env-file <path> Load environment variables from file
272
+ -k, --kafka-config-file <file> Path to a properties file for configuring kafka clients
273
+ -t, --transport <types> Transport types (comma-separated list) (choices: "http", "sse", "stdio", default: "stdio")
274
+ --allow-tools <tools> Comma-separated list of tool names to allow. If provided, takes precedence over --allow-tools-file. Allow-list is applied before block-list.
275
+ --block-tools <tools> Comma-separated list of tool names to block. If provided, takes precedence over --block-tools-file. Block-list is applied after allow-list.
276
+ --allow-tools-file <file> File with tool names to allow (one per line). Used only if --allow-tools is not provided. Allow-list is applied before block-list.
277
+ --block-tools-file <file> File with tool names to block (one per line). Used only if --block-tools is not provided. Block-list is applied after allow-list.
278
+ --list-tools Print the final set of enabled tool names (with descriptions) after allow/block filtering and exit. Does not start the server.
279
+ --disable-confluent-cloud-tools Disable all tools that require Confluent Cloud REST APIs (cloud-only tools).
280
+ -h, --help display help for command
281
+ ```
282
+
283
+ </details>
284
+
285
+ #### Example: Deploy using all transports
286
+
287
+ ```bash
288
+ npx @confluentinc/mcp-confluent -e .env --transport http,sse,stdio
289
+ ```
290
+
291
+ <details>
292
+ <summary>Show output</summary>
293
+
294
+ ```json
295
+ ...
296
+ {"level":"info","time":"2025-05-14T17:03:02.883Z","pid":47959,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Starting transports: http, sse, stdio"}
297
+ {"level":"info","time":"2025-05-14T17:03:02.971Z","pid":47959,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"HTTP transport routes registered"}
298
+ {"level":"info","time":"2025-05-14T17:03:02.972Z","pid":47959,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"SSE transport routes registered"}
299
+ {"level":"info","time":"2025-05-14T17:03:02.972Z","pid":47959,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"STDIO transport connected"}
300
+ {"level":"info","time":"2025-05-14T17:03:03.012Z","pid":47959,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Server listening at http://[::1]:3000"}
301
+ {"level":"info","time":"2025-05-14T17:03:03.013Z","pid":47959,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Server listening at http://127.0.0.1:3000"}
302
+ {"level":"info","time":"2025-05-14T17:03:03.013Z","pid":47959,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"All transports started successfully"}
303
+ ```
304
+
305
+ </details>
306
+
307
+ #### Example: Allow Only Specific Tools
308
+
309
+ ```bash
310
+ npx @confluentinc/mcp-confluent -e .env --allow-tools produce-message,consume-messages
311
+ ```
312
+
313
+ <details>
314
+ <summary>Show output</summary>
315
+
316
+ ```json
317
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-topics disabled due to allow/block list rules"}
318
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-topics disabled due to allow/block list rules"}
319
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-topics disabled due to allow/block list rules"}
320
+ {"level":"info","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool produce-message enabled"}
321
+ {"level":"info","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool consume-messages enabled"}
322
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-flink-statements disabled due to allow/block list rules"}
323
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-flink-statement disabled due to allow/block list rules"}
324
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-flink-statement disabled due to allow/block list rules"}
325
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-flink-statements disabled due to allow/block list rules"}
326
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-connectors disabled due to allow/block list rules"}
327
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-connector disabled due to allow/block list rules"}
328
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-connector disabled due to allow/block list rules"}
329
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-connector disabled due to allow/block list rules"}
330
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool search-topics-by-tag disabled due to allow/block list rules"}
331
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool search-topics-by-name disabled due to allow/block list rules"}
332
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-topic-tags disabled due to allow/block list rules"}
333
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-tag disabled due to allow/block list rules"}
334
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool remove-tag-from-entity disabled due to allow/block list rules"}
335
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool add-tags-to-topic disabled due to allow/block list rules"}
336
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-tags disabled due to allow/block list rules"}
337
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool alter-topic-config disabled due to allow/block list rules"}
338
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-clusters disabled due to allow/block list rules"}
339
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-environments disabled due to allow/block list rules"}
340
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-environment disabled due to allow/block list rules"}
341
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-schemas disabled due to allow/block list rules"}
342
+ {"level":"warn","time":"2025-05-14T16:52:34.923Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool get-topic-config disabled due to allow/block list rules"}
343
+ {"level":"info","time":"2025-05-14T16:52:34.924Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Starting transports: stdio on localhost:3000"}
344
+ {"level":"info","time":"2025-05-14T16:52:34.924Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"STDIO transport connected"}
345
+ {"level":"info","time":"2025-05-14T16:52:34.924Z","pid":46818,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"All transports started successfully"}
346
+ ```
347
+
348
+ </details>
349
+
350
+ #### Example: Block Certain Tools
351
+
352
+ ```bash
353
+ npx @confluentinc/mcp-confluent -e .env --block-tools produce-message,consume-messages
354
+ ```
355
+
356
+ <details>
357
+ <summary>Show output</summary>
358
+
359
+ ```json
360
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-topics enabled"}
361
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-topics enabled"}
362
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-topics enabled"}
363
+ {"level":"warn","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool produce-message disabled due to allow/block list rules"}
364
+ {"level":"warn","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool consume-messages disabled due to allow/block list rules"}
365
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-flink-statements enabled"}
366
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-flink-statement enabled"}
367
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-flink-statement enabled"}
368
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-flink-statements enabled"}
369
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-connectors enabled"}
370
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-connector enabled"}
371
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-connector enabled"}
372
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-connector enabled"}
373
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool search-topics-by-tag enabled"}
374
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool search-topics-by-name enabled"}
375
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-topic-tags enabled"}
376
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-tag enabled"}
377
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool remove-tag-from-entity enabled"}
378
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool add-tags-to-topic enabled"}
379
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-tags enabled"}
380
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool alter-topic-config enabled"}
381
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-clusters enabled"}
382
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-environments enabled"}
383
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-environment enabled"}
384
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-schemas enabled"}
385
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool get-topic-config enabled"}
386
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Starting transports: stdio"}
387
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"STDIO transport connected"}
388
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"All transports started successfully"}
389
+ ```
390
+
391
+ </details>
392
+
393
+ #### Example: Use Tool Lists from Files
394
+
395
+ ```bash
396
+ npx -y @confluentinc/mcp-confluent -e .env --allow-tools-file allow.txt --block-tools-file block.txt
397
+ ```
398
+
399
+ <details>
400
+ <summary>Show output</summary>
401
+
402
+ ```json
403
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-topics enabled"}
404
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-topics enabled"}
405
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-topics enabled"}
406
+ {"level":"warn","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool produce-message disabled due to allow/block list rules"}
407
+ {"level":"warn","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool consume-messages disabled due to allow/block list rules"}
408
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-flink-statements enabled"}
409
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-flink-statement enabled"}
410
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-flink-statement enabled"}
411
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-flink-statements enabled"}
412
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-connectors enabled"}
413
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-connector enabled"}
414
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-connector enabled"}
415
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-connector enabled"}
416
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool search-topics-by-tag enabled"}
417
+ {"level":"info","time":"2025-05-14T16:55:45.910Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool search-topics-by-name enabled"}
418
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool create-topic-tags enabled"}
419
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool delete-tag enabled"}
420
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool remove-tag-from-entity enabled"}
421
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool add-tags-to-topic enabled"}
422
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-tags enabled"}
423
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool alter-topic-config enabled"}
424
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-clusters enabled"}
425
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-environments enabled"}
426
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool read-environment enabled"}
427
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool list-schemas enabled"}
428
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Tool get-topic-config enabled"}
429
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"Starting transports: stdio"}
430
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"STDIO transport connected"}
431
+ {"level":"info","time":"2025-05-14T16:55:45.911Z","pid":47344,"hostname":"G9PW1FJH64","name":"mcp-confluent","msg":"All transports started successfully"}
432
+ ```
433
+
434
+ </details>
435
+
436
+ #### Example: List All Available Tools
437
+
438
+ ```bash
439
+ npx -y @confluentinc/mcp-confluent --list-tools
440
+ ```
441
+
442
+ <details>
443
+ <summary>Show output</summary>
444
+
445
+ ```text
446
+ add-tags-to-topic: Assign existing tags to Kafka topics in Confluent Cloud.
447
+ alter-topic-config: Alter topic configuration in Confluent Cloud.
448
+ consume-messages: Consumes messages from one or more Kafka topics. Supports automatic deserialization of Schema Registry encoded messag...
449
+ create-connector: Create a new connector. Returns the new connector information if successful.
450
+ create-flink-statement: Make a request to create a statement.
451
+ create-topic-tags: Create new tag definitions in Confluent Cloud.
452
+ create-topics: Create one or more Kafka topics.
453
+ delete-connector: Delete an existing connector. Returns success message if deletion was successful.
454
+ delete-flink-statements: Make a request to delete a statement.
455
+ delete-tag: Delete a tag definition from Confluent Cloud.
456
+ delete-topics: Delete the topic with the given names.
457
+ get-topic-config: Retrieve configuration details for a specific Kafka topic.
458
+ list-clusters: Get all clusters in the Confluent Cloud environment
459
+ list-connectors: Retrieve a list of "names" of the active connectors. You can then make a read request for a specific connector by name.
460
+ list-environments: Get all environments in Confluent Cloud with pagination support
461
+ list-flink-statements: Retrieve a sorted, filtered, paginated list of all statements.
462
+ list-schemas: List all schemas in the Schema Registry.
463
+ list-tags: Retrieve all tags with definitions from Confluent Cloud Schema Registry.
464
+ list-topics: List all topics in the Kafka cluster.
465
+ produce-message: Produce records to a Kafka topic. Supports Confluent Schema Registry serialization (AVRO, JSON, PROTOBUF) for both ke...
466
+ read-connector: Get information about the connector.
467
+ read-environment: Get details of a specific environment by ID
468
+ read-flink-statement: Make a request to read a statement and its results
469
+ remove-tag-from-entity: Remove tag from an entity in Confluent Cloud.
470
+ search-topics-by-name: List all topics in the Kafka cluster matching the specified name.
471
+ search-topics-by-tag: List all topics in the Kafka cluster with the specified tag.
472
+ ```
473
+
474
+ </details>
475
+
476
+ > **Tip:** The allow-list is applied before the block-list. If neither is provided, all tools are enabled by default.
477
+
227
478
  ## Developer Guide
228
479
 
229
480
  ### Project Structure
@@ -231,11 +482,12 @@ Replace `/path/to/confluent-mcp-server/` with the actual path where you've insta
231
482
  ```sh
232
483
  /
233
484
  ├── src/ # Source code
234
- │ ├── confluent/ # Code related to Confluent integration (API clients, etc.)
235
- │ ├── tools/ # Tool implementations (each tool in a separate file)
236
- │ ├── index.ts # Main entry point for the server
485
+ │ ├── confluent/ # Confluent integration (API clients, etc.)
486
+ │ │ └── tools/ # Tool implementations
487
+ │ ├── mcp/ # MCP protocol and transport logic
488
+ │ │ └── transports/
237
489
  │ └── ... # Other server logic, utilities, etc.
238
- ├── dist/ # Compiled output (TypeScript -> JavaScript)
490
+ ├── dist/ # Compiled output
239
491
  ├── openapi.json # OpenAPI specification for Confluent Cloud
240
492
  ├── .env # Environment variables (example - should be copied and filled)
241
493
  ├── README.md # This file
@@ -278,7 +530,7 @@ For testing MCP servers, you can use [MCP Inspector](https://modelcontextprotoco
278
530
 
279
531
  ```bash
280
532
  # make sure you've already built the project either in dev mode or by running npm run build
281
- npx @modelcontextprotocol/inspector node --env-file $PATH_TO_PROJECT/.env /$PATH_TO_PROJECT/dist/index.js
533
+ npx @modelcontextprotocol/inspector node $PATH_TO_PROJECT/dist/index.js --env-file $PATH_TO_PROJECT/.env
282
534
  ```
283
535
 
284
536
  ### Adding a New Tool
@@ -299,4 +551,4 @@ npx openapi-typescript ./openapi.json -o ./src/confluent/openapi-schema.d.ts --e
299
551
 
300
552
  ### Contributing
301
553
 
302
- Bug reports and feedback is appreciated in the form of Github Issues. For guidelines on contributing please see [CONTRIBUTING.md](CONTRIBUTING.MD)
554
+ Bug reports and feedback is appreciated in the form of Github Issues. For guidelines on contributing please see [CONTRIBUTING.md](CONTRIBUTING.MD)
package/dist/cli.d.ts CHANGED
@@ -1,14 +1,53 @@
1
+ import { ToolName } from "./confluent/tools/tool-name.js";
2
+ import { TransportType } from "./mcp/transports/types.js";
3
+ import { KeyValuePairObject } from "properties-file";
1
4
  export interface CLIOptions {
2
5
  envFile?: string;
6
+ transports: TransportType[];
7
+ allowTools?: string[];
8
+ blockTools?: string[];
9
+ listTools?: boolean;
10
+ disableConfluentCloudTools?: boolean;
11
+ kafkaConfig: KeyValuePairObject;
3
12
  }
13
+ /**
14
+ * Get the package version from package.json
15
+ * @returns Package version string
16
+ */
17
+ export declare function getPackageVersion(): string;
4
18
  /**
5
19
  * Parse command line arguments with strong typing
6
20
  * @returns Parsed CLI options
7
21
  */
8
22
  export declare function parseCliArgs(): CLIOptions;
9
23
  /**
10
- * Load environment variables from file if specified in options
11
- * @param options CLI options containing envFile path
24
+ * Load environment variables from file
25
+ * @param envFile Path to the environment file
26
+ */
27
+ export declare function loadEnvironmentVariables(envFile: string): void;
28
+ /**
29
+ * Filters and returns a sorted list of enabled ToolNames based on CLI allow/block options.
30
+ *
31
+ * This function determines which tools should be enabled for the server by applying
32
+ * the following logic:
33
+ * 1. If an allow list (`cliOptions.allowTools`) is provided and non-empty, only those
34
+ * tool names present in the allow list (and valid) will be enabled. Any invalid
35
+ * tool names in the allow list are ignored and a warning is logged.
36
+ * 2. If a block list (`cliOptions.blockTools`) is provided and non-empty, any tool
37
+ * names present in the block list (and valid) will be removed from the enabled
38
+ * set. Any invalid tool names in the block list are ignored and a warning is logged.
39
+ * 3. If neither allow nor block lists are provided, all available tools are enabled.
40
+ *
41
+ * The returned list is always sorted alphabetically.
42
+ *
43
+ * @param cliOptions - The parsed CLI options containing allow/block tool lists.
44
+ * @returns An alphabetically sorted array of enabled ToolNames.
45
+ */
46
+ export declare function getFilteredToolNames(cliOptions: CLIOptions): ToolName[];
47
+ /**
48
+ * Loads configuration from a properties file
49
+ * @param filePath - Path to the properties file
50
+ * @returns configuration object
12
51
  */
13
- export declare function loadEnvironmentVariables(options: CLIOptions): void;
52
+ export declare function parsePropertiesFile(filePath: string): KeyValuePairObject;
14
53
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,UAAU,CAwBzC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAsBlE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAI7D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIpE,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAiED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,UAAU,CAuGzC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAgB9D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,EAAE,CA6CvE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAexE"}