@confluentinc/mcp-confluent 1.2.0 → 1.2.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 (208) hide show
  1. package/README.md +60 -655
  2. package/dist/build-config.d.ts +2 -0
  3. package/dist/build-config.d.ts.map +1 -0
  4. package/dist/build-config.js +2 -0
  5. package/dist/build-config.js.map +1 -0
  6. package/dist/confluent/client-manager.d.ts +0 -17
  7. package/dist/confluent/client-manager.d.ts.map +1 -1
  8. package/dist/confluent/client-manager.js +0 -29
  9. package/dist/confluent/client-manager.js.map +1 -1
  10. package/dist/confluent/node-deps.d.ts +3 -0
  11. package/dist/confluent/node-deps.d.ts.map +1 -1
  12. package/dist/confluent/node-deps.js +2 -0
  13. package/dist/confluent/node-deps.js.map +1 -1
  14. package/dist/confluent/telemetry.d.ts.map +1 -1
  15. package/dist/confluent/telemetry.js +13 -16
  16. package/dist/confluent/telemetry.js.map +1 -1
  17. package/dist/confluent/tools/base-tools.d.ts +18 -19
  18. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  19. package/dist/confluent/tools/base-tools.js +15 -10
  20. package/dist/confluent/tools/base-tools.js.map +1 -1
  21. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +1 -1
  22. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
  23. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +5 -13
  24. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  25. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +1 -1
  26. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  27. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +5 -13
  28. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  29. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +1 -1
  30. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  31. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +5 -13
  32. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  33. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +1 -1
  34. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  35. package/dist/confluent/tools/handlers/catalog/delete-tag.js +5 -13
  36. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  37. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +2 -2
  38. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  39. package/dist/confluent/tools/handlers/catalog/list-tags.js +6 -18
  40. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  41. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +1 -1
  42. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  43. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +5 -13
  44. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  45. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +1 -1
  46. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  47. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +5 -13
  48. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  49. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  50. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +3 -13
  51. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  52. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +1 -1
  53. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  54. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +5 -14
  55. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  56. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +1 -1
  57. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  58. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +5 -14
  59. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  60. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +1 -1
  61. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +1 -1
  62. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +5 -14
  63. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +1 -1
  64. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +1 -1
  65. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  66. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +5 -13
  67. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  68. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +1 -1
  69. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  70. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +5 -13
  71. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  72. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +1 -1
  73. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  74. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +6 -14
  75. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  76. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +1 -1
  77. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  78. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +6 -14
  79. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  80. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +1 -1
  81. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  82. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +5 -11
  83. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  84. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +1 -1
  85. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  86. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +5 -13
  87. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  88. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +1 -1
  89. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  90. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +5 -13
  91. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  92. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +1 -1
  93. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  94. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +5 -12
  95. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  96. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +1 -1
  97. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  98. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +5 -14
  99. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  100. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +1 -1
  101. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  102. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +5 -13
  103. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  104. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +1 -1
  105. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  106. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +6 -13
  107. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  108. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +1 -1
  109. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  110. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +8 -18
  111. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  112. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +1 -1
  113. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  114. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +5 -13
  115. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  116. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +1 -1
  117. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  118. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +5 -12
  119. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  120. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +1 -1
  121. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +1 -1
  122. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js +5 -13
  123. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +1 -1
  124. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +1 -1
  125. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  126. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +5 -13
  127. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  128. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  129. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +2 -1
  130. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  131. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  132. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +2 -1
  133. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  134. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  135. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +2 -1
  136. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  137. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +1 -1
  138. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  139. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +5 -13
  140. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  141. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  142. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +2 -1
  143. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  144. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  145. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +3 -2
  146. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  147. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +1 -1
  148. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  149. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +4 -2
  150. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  151. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +1 -1
  152. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  153. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +4 -2
  154. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  155. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
  156. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +3 -12
  157. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  158. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  159. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +2 -1
  160. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  161. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +1 -1
  162. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  163. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +5 -13
  164. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  165. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +1 -1
  166. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  167. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +5 -13
  168. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  169. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  170. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +3 -13
  171. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  172. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  173. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +3 -13
  174. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  175. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  176. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +3 -13
  177. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  178. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  179. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +3 -13
  180. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  181. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  182. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +3 -13
  183. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  184. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  185. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +3 -13
  186. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  187. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  188. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +3 -13
  189. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  190. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  191. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +3 -13
  192. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  193. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  194. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +3 -13
  195. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  196. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  197. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +3 -13
  198. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  199. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  200. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +3 -13
  201. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  202. package/dist/env-schema.d.ts +5 -0
  203. package/dist/env-schema.d.ts.map +1 -1
  204. package/dist/env-schema.js +34 -0
  205. package/dist/env-schema.js.map +1 -1
  206. package/dist/index.js +5 -1
  207. package/dist/index.js.map +1 -1
  208. package/package.json +3 -2
package/README.md CHANGED
@@ -1,55 +1,37 @@
1
- # mcp-confluent
1
+ # Confluent MCP Server
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@confluentinc/mcp-confluent.svg)](https://www.npmjs.com/package/@confluentinc/mcp-confluent)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
5
 
6
- An [MCP server](https://modelcontextprotocol.io/) that enables AI assistants to interact with Confluent Cloud through natural language. It provides 37+ tools across Kafka, Flink SQL, Schema Registry, Connectors, Tableflow, and more -- usable from any MCP-compatible client including Claude Desktop, Claude Code, Cursor, VS Code, Goose, and Gemini CLI.
7
-
8
- <a href="https://glama.ai/mcp/servers/@confluentinc/mcp-confluent">
9
- <img width="380" height="200" src="https://glama.ai/mcp/servers/@confluentinc/mcp-confluent/badge" alt="mcp-confluent MCP server" />
10
- </a>
11
-
12
- [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/confluentinc/mcp-confluent)
13
-
14
- ## Demo
15
-
16
- ### Goose CLI
17
-
18
- ![Goose CLI Demo](assets/goose-cli-demo.gif)
19
-
20
- ### Claude Desktop
21
-
22
- ![Claude Desktop Demo](assets/claude-desktop-demo.gif)
6
+ An open-source [MCP server](https://modelcontextprotocol.io/) that enables AI assistants to interact with Confluent Cloud and Confluent Local through natural language. It provides 50+ tools across Kafka, Flink SQL, Schema Registry, Connectors, Tableflow, and more -- usable from any MCP-compatible client including Claude Desktop, Claude Code, Cursor, VS Code, Goose, and Gemini CLI.
23
7
 
24
8
  ## Quick Start
25
9
 
26
- > **Prerequisites:** [Node.js 22+](https://nodejs.org/) and a [Confluent Cloud](https://confluent.cloud/) account.
10
+ > **Prerequisites:** [Node.js 22+](https://nodejs.org/). If you want to interact with [Confluent Cloud](https://confluent.cloud/), you need to create an account first.
27
11
 
28
12
  ```bash
29
13
  # Install and run
30
14
  npx -y @confluentinc/mcp-confluent -e /path/to/.env
31
15
  ```
32
16
 
33
- Or install the [npm package](https://www.npmjs.com/package/@confluentinc/mcp-confluent) directly. See [Getting Started](#getting-started) for full setup instructions and [Configuring MCP Clients](#configuring-claude-desktop) for integration with your preferred AI tool.
17
+ Or install the [npm package](https://www.npmjs.com/package/@confluentinc/mcp-confluent) directly. See [Getting Started](#getting-started) for full setup instructions and [Configuring MCP Clients](#configuring-mcp-clients) for integration with your preferred AI tool.
34
18
 
35
19
  ## Table of Contents
36
20
 
37
21
  - [Quick Start](#quick-start)
38
22
  - [Available Tools](#available-tools)
39
23
  - [Confluent Cloud](#available-tools-for-confluent-cloud)
40
- - [Local Confluent](#available-tools-for-local-confluent)
24
+ - [Confluent Local](#available-tools-for-confluent-local)
41
25
  - [User Guide](#user-guide)
42
26
  - [Getting Started](#getting-started)
43
27
  - [Configuration](#configuration)
44
28
  - [Authentication for HTTP/SSE Transports](#authentication-for-httpsse-transports)
45
- - [Environment Variables Reference](#environment-variables-reference)
46
29
  - [Usage](#usage)
47
- - [Configuring MCP Clients](#configuring-claude-desktop)
48
- - [CLI Usage](#mcp-confluent-cli-usage)
49
- - [Flink Example Workflows](#flink-example-workflows)
50
- - [Developer Guide](#developer-guide)
51
- - [Local Development with an MCP Client](#local-development-with-an-mcp-client)
30
+ - [CLI Usage](#cli-usage)
31
+ - [Configuring MCP Clients](#configuring-mcp-clients)
32
+ - [Telemetry](#telemetry)
52
33
  - [Troubleshooting](#troubleshooting)
34
+ - [Contributing](#contributing)
53
35
 
54
36
  ## Available Tools
55
37
 
@@ -78,7 +60,7 @@ These tools require endpoints and authentication against specific Confluent Clou
78
60
  | **Metrics** | `list-available-metrics`, `query-metrics` | Discover and query Confluent Cloud operational metrics |
79
61
  | **Billing** | `list-billing-costs` | Query billing and cost data |
80
62
 
81
- ### Available Tools for Local Confluent
63
+ ### Available Tools for Confluent Local
82
64
 
83
65
  These tools only require Kafka or Schema Registry endpoints - no Confluent Cloud API key/secret is needed. Ideal for local development with Docker Compose or self-managed clusters.
84
66
 
@@ -116,38 +98,45 @@ SCHEMA_REGISTRY_ENDPOINT="http://localhost:8081"
116
98
 
117
99
  ### Configuration
118
100
 
119
- Copy `.env.example` to `.env` in the root directory and fill in your values. See the example structure below:
101
+ You can configure the MCP server using the following environment variables:
120
102
 
121
- <details>
122
- <summary>Example .env file structure</summary>
123
-
124
- ```properties
125
- # .env file
126
- BOOTSTRAP_SERVERS="pkc-v12gj.us-east4.gcp.confluent.cloud:9092"
127
- KAFKA_API_KEY="..."
128
- KAFKA_API_SECRET="..."
129
- KAFKA_REST_ENDPOINT="https://pkc-v12gj.us-east4.gcp.confluent.cloud:443"
130
- KAFKA_CLUSTER_ID=""
131
- KAFKA_ENV_ID="env-..."
132
- FLINK_ENV_ID="env-..."
133
- FLINK_ORG_ID=""
134
- FLINK_REST_ENDPOINT="https://flink.us-east4.gcp.confluent.cloud"
135
- FLINK_ENV_NAME=""
136
- FLINK_DATABASE_NAME=""
137
- FLINK_API_KEY=""
138
- FLINK_API_SECRET=""
139
- FLINK_COMPUTE_POOL_ID="lfcp-..."
140
- TABLEFLOW_API_KEY=""
141
- TABLEFLOW_API_SECRET=""
142
- CONFLUENT_CLOUD_API_KEY=""
143
- CONFLUENT_CLOUD_API_SECRET=""
144
- CONFLUENT_CLOUD_REST_ENDPOINT="https://api.confluent.cloud"
145
- SCHEMA_REGISTRY_API_KEY="..."
146
- SCHEMA_REGISTRY_API_SECRET="..."
147
- SCHEMA_REGISTRY_ENDPOINT="https://psrc-zv01y.northamerica-northeast2.gcp.confluent.cloud"
148
- ```
149
-
150
- </details>
103
+ | Variable | Description | Default Value | Required |
104
+ | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | -------- |
105
+ | HTTP_HOST | Host to bind for HTTP transport. Defaults to localhost only for security. | "127.0.0.1" | Yes |
106
+ | HTTP_MCP_ENDPOINT_PATH | HTTP endpoint path for MCP transport (e.g., '/mcp') (string) | "/mcp" | Yes |
107
+ | HTTP_PORT | Port to use for HTTP transport (number (min: 0)) | 8080 | Yes |
108
+ | LOG_LEVEL | Log level for application logging (trace, debug, info, warn, error, fatal) | "info" | Yes |
109
+ | MCP_API_KEY | API key for HTTP/SSE authentication. Generate using `--generate-key`. Required when auth is enabled. | | No\* |
110
+ | MCP_AUTH_DISABLED | Disable authentication for HTTP/SSE transports. WARNING: Only use in development environments. | false | No |
111
+ | MCP_ALLOWED_HOSTS | Comma-separated list of allowed Host header values for DNS rebinding protection. | "localhost,127.0.0.1" | No |
112
+ | SSE_MCP_ENDPOINT_PATH | SSE endpoint path for establishing SSE connections (e.g., '/sse', '/events') (string) | "/sse" | Yes |
113
+ | SSE_MCP_MESSAGE_ENDPOINT_PATH | SSE message endpoint path for receiving messages (e.g., '/messages', '/events/messages') (string) | "/messages" | Yes |
114
+ | 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 |
115
+ | CONFLUENT_CLOUD_API_KEY | Master API key for Confluent Cloud platform administration, enabling management of resources across your organization (string (min: 1)) | | No |
116
+ | CONFLUENT_CLOUD_API_SECRET | Master API secret paired with CONFLUENT_CLOUD_API_KEY for comprehensive Confluent Cloud platform administration (string (min: 1)) | | No |
117
+ | CONFLUENT_CLOUD_REST_ENDPOINT | Base URL for Confluent Cloud's REST API services (default) | https://api.confluent.cloud | No |
118
+ | FLINK_API_KEY | Authentication key for accessing Confluent Cloud's Flink services, including compute pools and SQL statement management (string (min: 1)) | | No |
119
+ | FLINK_API_SECRET | Secret token paired with FLINK_API_KEY for authenticated access to Confluent Cloud's Flink services (string (min: 1)) | | No |
120
+ | FLINK_COMPUTE_POOL_ID | Unique identifier for the Flink compute pool, must start with 'lfcp-' prefix (string) | | No |
121
+ | FLINK_DATABASE_NAME | Name of the associated Kafka cluster used as a database reference in Flink SQL operations (string (min: 1)) | | No |
122
+ | FLINK_ENV_ID | Unique identifier for the Flink environment, must start with 'env-' prefix (string) | | No |
123
+ | FLINK_ENV_NAME | Human-readable name for the Flink environment used for identification and display purposes (string (min: 1)) | | No |
124
+ | FLINK_ORG_ID | Organization identifier within Confluent Cloud for Flink resource management (string (min: 1)) | | No |
125
+ | FLINK_REST_ENDPOINT | Base URL for Confluent Cloud's Flink REST API endpoints used for SQL statement and compute pool management (string) | | No |
126
+ | KAFKA_API_KEY | Authentication credential (username) required to establish secure connection with the Kafka cluster (string (min: 1)) | | No |
127
+ | KAFKA_API_SECRET | Authentication credential (password) paired with KAFKA_API_KEY for secure Kafka cluster access (string (min: 1)) | | No |
128
+ | KAFKA_CLUSTER_ID | Unique identifier for the Kafka cluster within Confluent Cloud ecosystem (string (min: 1)) | | No |
129
+ | KAFKA_ENV_ID | Environment identifier for Kafka cluster, must start with 'env-' prefix (string) | | No |
130
+ | KAFKA_REST_ENDPOINT | REST API endpoint for Kafka cluster management and administration (string) | | No |
131
+ | SCHEMA_REGISTRY_API_KEY | Authentication key for accessing Schema Registry services to manage and validate data schemas (string (min: 1)) | | No |
132
+ | SCHEMA_REGISTRY_API_SECRET | Authentication secret paired with SCHEMA_REGISTRY_API_KEY for secure Schema Registry access (string (min: 1)) | | No |
133
+ | SCHEMA_REGISTRY_ENDPOINT | URL endpoint for accessing Schema Registry services to manage data schemas (string) | | No |
134
+ | TABLEFLOW_API_KEY | Authentication key for accessing Confluent Cloud's Tableflow services (string (min: 1)) | | No |
135
+ | TABLEFLOW_API_SECRET | Authentication secret paired with TABLEFLOW_API_KEY for secure Tableflow access (string (min: 1)) | | No |
136
+ | TELEMETRY_ENDPOINT | Base URL for Confluent Cloud Telemetry API (metrics) | "https://api.telemetry.confluent.cloud" | No |
137
+ | TELEMETRY_API_KEY | Optional API key for telemetry access. Falls back to CONFLUENT_CLOUD_API_KEY if not set. (See [Metrics API authentication docs](https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#create-an-api-key-to-authenticate-to-the-metrics-api).) | | No |
138
+ | TELEMETRY_API_SECRET | Optional API secret for telemetry access. Falls back to CONFLUENT_CLOUD_API_SECRET if not set. (See [Metrics API authentication docs](https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#create-an-api-key-to-authenticate-to-the-metrics-api).) | | No |
139
+ | DO_NOT_TRACK | Set to `true` to opt out of anonymous telemetry data collection. See [Telemetry](#telemetry) for details. | | No |
151
140
 
152
141
  #### Prerequisites & Setup for Tableflow Commands
153
142
 
@@ -233,51 +222,12 @@ MCP_AUTH_DISABLED=true
233
222
  > [!WARNING]
234
223
  > Never disable authentication in production or when the server is network-accessible.
235
224
 
236
- ### Environment Variables Reference
237
-
238
- | Variable | Description | Default Value | Required |
239
- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | -------- |
240
- | HTTP_HOST | Host to bind for HTTP transport. Defaults to localhost only for security. | "127.0.0.1" | Yes |
241
- | HTTP_MCP_ENDPOINT_PATH | HTTP endpoint path for MCP transport (e.g., '/mcp') (string) | "/mcp" | Yes |
242
- | HTTP_PORT | Port to use for HTTP transport (number (min: 0)) | 8080 | Yes |
243
- | LOG_LEVEL | Log level for application logging (trace, debug, info, warn, error, fatal) | "info" | Yes |
244
- | MCP_API_KEY | API key for HTTP/SSE authentication. Generate using `--generate-key`. Required when auth is enabled. | | No\* |
245
- | MCP_AUTH_DISABLED | Disable authentication for HTTP/SSE transports. WARNING: Only use in development environments. | false | No |
246
- | MCP_ALLOWED_HOSTS | Comma-separated list of allowed Host header values for DNS rebinding protection. | "localhost,127.0.0.1" | No |
247
- | SSE_MCP_ENDPOINT_PATH | SSE endpoint path for establishing SSE connections (e.g., '/sse', '/events') (string) | "/sse" | Yes |
248
- | SSE_MCP_MESSAGE_ENDPOINT_PATH | SSE message endpoint path for receiving messages (e.g., '/messages', '/events/messages') (string) | "/messages" | Yes |
249
- | 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 |
250
- | CONFLUENT_CLOUD_API_KEY | Master API key for Confluent Cloud platform administration, enabling management of resources across your organization (string (min: 1)) | | No |
251
- | CONFLUENT_CLOUD_API_SECRET | Master API secret paired with CONFLUENT_CLOUD_API_KEY for comprehensive Confluent Cloud platform administration (string (min: 1)) | | No |
252
- | CONFLUENT_CLOUD_REST_ENDPOINT | Base URL for Confluent Cloud's REST API services (default) | | No |
253
- | FLINK_API_KEY | Authentication key for accessing Confluent Cloud's Flink services, including compute pools and SQL statement management (string (min: 1)) | | No |
254
- | FLINK_API_SECRET | Secret token paired with FLINK_API_KEY for authenticated access to Confluent Cloud's Flink services (string (min: 1)) | | No |
255
- | FLINK_COMPUTE_POOL_ID | Unique identifier for the Flink compute pool, must start with 'lfcp-' prefix (string) | | No |
256
- | FLINK_DATABASE_NAME | Name of the associated Kafka cluster used as a database reference in Flink SQL operations (string (min: 1)) | | No |
257
- | FLINK_ENV_ID | Unique identifier for the Flink environment, must start with 'env-' prefix (string) | | No |
258
- | FLINK_ENV_NAME | Human-readable name for the Flink environment used for identification and display purposes (string (min: 1)) | | No |
259
- | FLINK_ORG_ID | Organization identifier within Confluent Cloud for Flink resource management (string (min: 1)) | | No |
260
- | FLINK_REST_ENDPOINT | Base URL for Confluent Cloud's Flink REST API endpoints used for SQL statement and compute pool management (string) | | No |
261
- | KAFKA_API_KEY | Authentication credential (username) required to establish secure connection with the Kafka cluster (string (min: 1)) | | No |
262
- | KAFKA_API_SECRET | Authentication credential (password) paired with KAFKA_API_KEY for secure Kafka cluster access (string (min: 1)) | | No |
263
- | KAFKA_CLUSTER_ID | Unique identifier for the Kafka cluster within Confluent Cloud ecosystem (string (min: 1)) | | No |
264
- | KAFKA_ENV_ID | Environment identifier for Kafka cluster, must start with 'env-' prefix (string) | | No |
265
- | KAFKA_REST_ENDPOINT | REST API endpoint for Kafka cluster management and administration (string) | | No |
266
- | SCHEMA_REGISTRY_API_KEY | Authentication key for accessing Schema Registry services to manage and validate data schemas (string (min: 1)) | | No |
267
- | SCHEMA_REGISTRY_API_SECRET | Authentication secret paired with SCHEMA_REGISTRY_API_KEY for secure Schema Registry access (string (min: 1)) | | No |
268
- | SCHEMA_REGISTRY_ENDPOINT | URL endpoint for accessing Schema Registry services to manage data schemas (string) | | No |
269
- | TABLEFLOW_API_KEY | Authentication key for accessing Confluent Cloud's Tableflow services (string (min: 1)) | | No |
270
- | TABLEFLOW_API_SECRET | Authentication secret paired with TABLEFLOW_API_KEY for secure Tableflow access (string (min: 1)) | | No |
271
- | TELEMETRY_ENDPOINT | Base URL for Confluent Cloud Telemetry API (metrics) | "https://api.telemetry.confluent.cloud" | No |
272
- | TELEMETRY_API_KEY | Optional API key for telemetry access. Falls back to CONFLUENT_CLOUD_API_KEY if not set. (See [Metrics API authentication docs](https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#create-an-api-key-to-authenticate-to-the-metrics-api).) | | No |
273
- | TELEMETRY_API_SECRET | Optional API secret for telemetry access. Falls back to CONFLUENT_CLOUD_API_SECRET if not set. (See [Metrics API authentication docs](https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#create-an-api-key-to-authenticate-to-the-metrics-api).) | | No |
274
-
275
225
  ### Usage
276
226
 
277
227
  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:
278
228
 
279
229
  1. **Start the Server:** You can run the MCP server in one of two ways:
280
- - **From source:** Follow the instructions in the [Developer Guide](#developer-guide) to build and run the server from source. This typically involves:
230
+ - **From source:** Follow the instructions in the [Contributing Guide](CONTRIBUTING.md) to build and run the server from source. This typically involves:
281
231
  - Installing dependencies (`npm install`)
282
232
  - Building the project (`npm run build` or `npm run dev`)
283
233
  - **With npx:** You can start the server directly using npx (no build required):
@@ -292,252 +242,7 @@ This MCP server is designed to be used with various MCP clients, such as Claude
292
242
 
293
243
  4. **Interact with Confluent through the Client:** Once the client is connected, you can use the client's interface to interact with Confluent Cloud resources. The client will send requests to this MCP server, which will then interact with Confluent Cloud on your behalf.
294
244
 
295
- ### Configuring Claude Desktop
296
-
297
- See [here](https://modelcontextprotocol.io/quickstart/user) for more details about installing Claude Desktop and MCP servers.
298
-
299
- To configure Claude Desktop to use this MCP server:
300
-
301
- 1. **Open Claude Desktop Configuration**
302
- - On Mac: `~/Library/Application\ Support/Claude/claude_desktop_config.json`
303
- - On Windows: `%APPDATA%\Claude\claude_desktop_config.json`
304
-
305
- 2. **Edit Configuration File**
306
- - Open the config file in your preferred text editor
307
- - Add or modify the configuration using one of the following methods:
308
-
309
- <details>
310
- <summary>Option 1: Run from source</summary>
311
-
312
- ```json
313
- {
314
- "mcpServers": {
315
- "confluent": {
316
- "command": "node",
317
- "args": [
318
- "/path/to/confluent-mcp-server/dist/index.js",
319
- "--env-file",
320
- "/path/to/confluent-mcp-server/.env"
321
- ]
322
- }
323
- }
324
- }
325
- ```
326
-
327
- </details>
328
-
329
- <details>
330
- <summary>Option 2: Run from npx</summary>
331
-
332
- ```json
333
- {
334
- "mcpServers": {
335
- "confluent": {
336
- "command": "npx",
337
- "args": [
338
- "-y",
339
- "@confluentinc/mcp-confluent",
340
- "-e",
341
- "/path/to/confluent-mcp-server/.env"
342
- ]
343
- }
344
- }
345
- }
346
- ```
347
-
348
- </details>
349
-
350
- Replace `/path/to/confluent-mcp-server/` with the actual path where you've installed this MCP server.
351
-
352
- 3. **Restart Claude Desktop**
353
- - Close and reopen Claude Desktop for the changes to take effect
354
- - The MCP server will automatically start when Claude Desktop launches
355
-
356
- Now Claude Desktop will be configured to use your local MCP server for Confluent interactions.
357
-
358
- ![Claude Tools](assets/claude-tools.png)
359
-
360
- ### Configuring Goose CLI
361
-
362
- See [here](https://block.github.io/goose/docs/quickstart#install-an-extension) for detailed instructions on how to install the Goose CLI.
363
-
364
- Once installed, follow these steps:
365
-
366
- 1. **Run the Configuration Command:**
367
-
368
- ```bash
369
- goose configure
370
- ```
371
-
372
- 2. **Follow the Interactive Prompts:**
373
- - Select `Add extension`
374
- - Choose `Command-line Extension`
375
- - Enter `mcp-confluent` as the extension name
376
- - Choose one of the following configuration methods:
377
-
378
- <details>
379
- <summary>Option 1: Run from source</summary>
380
-
381
- ```bash
382
- node /path/to/confluent-mcp-server/dist/index.js --env-file /path/to/confluent-mcp-server/.env
383
- ```
384
-
385
- </details>
386
-
387
- <details>
388
- <summary>Option 2: Run from npx</summary>
389
-
390
- ```bash
391
- npx -y @confluentinc/mcp-confluent -e /path/to/confluent-mcp-server/.env
392
- ```
393
-
394
- </details>
395
-
396
- Replace `/path/to/confluent-mcp-server/` with the actual path where you've installed this MCP server.
397
-
398
- ![Goose Configure](assets/goose-configure.png)
399
-
400
- ### Configuring Gemini CLI
401
-
402
- For detailed information about Gemini CLI extensions and MCP servers, please refer to the official documentation:
403
-
404
- - [Gemini CLI Extensions](https://github.com/google-gemini/gemini-cli/blob/main/docs/extension.md)
405
- - [Gemini CLI MCP Server Tools](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md)
406
-
407
- Here's how to get `mcp-confluent` running with Gemini CLI:
408
-
409
- 1. **Install Gemini CLI:**
410
- If you haven't already, install the Gemini CLI. You can find installation instructions on the [official GitHub repository](https://github.com/google-gemini/gemini-cli).
411
-
412
- 2. **Install the `mcp-confluent` Extension:**
413
-
414
- ```bash
415
- gemini extensions install https://github.com/confluentinc/mcp-confluent
416
- # Navigate to the root directory of this project (where `gemini-extension.json` is located) and run:
417
- # gemini extensions install .
418
- ```
419
-
420
- This command registers the `mcp-confluent` server with Gemini CLI and creates a dedicated directory for it under `~/.gemini/extensions/mcp-confluent`.
421
-
422
- 3. **Provide Environment Variables:**
423
- The extension requires your Confluent Cloud credentials and configuration to be available in a `.env` file.
424
- - First, ensure you have a correctly populated `.env` file in the root of this project. For instructions, see the [Configuration](#configuration) section.
425
- - Next, copy your `.env` file into the extension's directory so Gemini CLI can access it (the Gemini extension expects the `.env` file at `${extensionPath}${pathSeparator}.env`; see [the variables documentation](https://github.com/google-gemini/gemini-cli/blob/main/docs/extensions/reference.md#variables) for details):
426
-
427
- ```bash
428
- cp .env ~/.gemini/extensions/mcp-confluent/.env
429
- ```
430
-
431
- 4. **Verify and Use:**
432
- You can now start using the Confluent tools via Gemini CLI. To verify that the tools are available, you can list them:
433
-
434
- ```bash
435
- gemini -l
436
- # or `gemini extensions list`
437
- ```
438
-
439
- And here's an example of invoking a tool:
440
-
441
- ```bash
442
-
443
- gemini
444
- ....
445
-
446
- 🟢 mcp-confluent (from mcp-confluent) - Ready (24 tools)
447
- ....
448
-
449
- Using: 1 MCP server (ctrl+t to toggle)
450
- ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
451
- │ > list topics │
452
- ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
453
-
454
- ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
455
- │ ✓ list-topics (mcp-confluent MCP Server) {} │
456
- │ │
457
- │ Kafka topics: │
458
- │ products_summarized,products,topic_8,products_summarized_with_embeddings,elastic_minimized,user_message_related_products,user_message_embeddin │
459
- │ gs,dlq-lcc-d3738o,user_message,elastic │
460
- ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
461
- ✦ Okay, I see the following topics: products_summarized, products, topic_8, products_summarized_with_embeddings, elastic_minimized,
462
- user_message_related_products, user_message_embeddings, dlq-lcc-d3738o, user_message, and elastic.
463
-
464
- ```
465
-
466
- ### Configuring Claude Code
467
-
468
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) supports MCP servers natively. Add the server to your project configuration:
469
-
470
- ```bash
471
- claude mcp add confluent -- npx -y @confluentinc/mcp-confluent -e /path/to/.env
472
- ```
473
-
474
- Or add it to your `.mcp.json` file directly:
475
-
476
- ```json
477
- {
478
- "mcpServers": {
479
- "confluent": {
480
- "command": "npx",
481
- "args": ["-y", "@confluentinc/mcp-confluent", "-e", "/path/to/.env"]
482
- }
483
- }
484
- }
485
- ```
486
-
487
- ### Configuring Cursor
488
-
489
- Add the MCP server to your Cursor configuration at `~/.cursor/mcp.json`:
490
-
491
- ```json
492
- {
493
- "mcpServers": {
494
- "confluent": {
495
- "command": "npx",
496
- "args": ["-y", "@confluentinc/mcp-confluent", "-e", "/path/to/.env"]
497
- }
498
- }
499
- }
500
- ```
501
-
502
- See the [Cursor MCP documentation](https://docs.cursor.com/context/model-context-protocol) for more details.
503
-
504
- ### Configuring VS Code
505
-
506
- Add the MCP server to your VS Code user settings (`settings.json`) or workspace `.vscode/mcp.json`:
507
-
508
- ```json
509
- {
510
- "mcp": {
511
- "servers": {
512
- "confluent": {
513
- "command": "npx",
514
- "args": ["-y", "@confluentinc/mcp-confluent", "-e", "/path/to/.env"]
515
- }
516
- }
517
- }
518
- }
519
- ```
520
-
521
- See the [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more details.
522
-
523
- ### Configuring Windsurf
524
-
525
- Add the MCP server to your Windsurf configuration at `~/.codeium/windsurf/mcp_config.json`:
526
-
527
- ```json
528
- {
529
- "mcpServers": {
530
- "confluent": {
531
- "command": "npx",
532
- "args": ["-y", "@confluentinc/mcp-confluent", "-e", "/path/to/.env"]
533
- }
534
- }
535
- }
536
- ```
537
-
538
- See the [Windsurf MCP documentation](https://docs.windsurf.com/windsurf/mcp) for more details.
539
-
540
- ### mcp-confluent CLI Usage
245
+ ### CLI Usage
541
246
 
542
247
  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.
543
248
 
@@ -684,317 +389,17 @@ delete-tableflow-catalog-integration: Make a request to delete a tableflow catal
684
389
 
685
390
  > **Tip:** The allow-list is applied before the block-list. If neither is provided, all tools are enabled by default.
686
391
 
687
- ## Flink Example Workflows
688
-
689
- Examples of how the Flink tools (see [Available Tools](#available-tools)) work together in practice.
690
-
691
- #### Deduplication Workflow
692
-
693
- ```
694
- User: "I want to deduplicate events from my_topic"
695
- ↓
696
- Claude: Uses describe-flink-table → gets schema (event_id, user_id, ...)
697
- ↓
698
- Claude: "Which field should I deduplicate on?"
699
- ↓
700
- User: "event_id"
701
- ↓
702
- Claude: Generates SQL using ROW_NUMBER() pattern
703
- ↓
704
- Claude: Uses create-flink-statement → submits query
705
- ↓
706
- Claude: Uses check-flink-statement-health → monitors status
707
- ↓
708
- Claude: "Running successfully!"
709
- ```
710
-
711
- #### Debugging a Failed Statement
712
-
713
- ```
714
- User: "My statement xyz is failing. What's wrong?"
715
- ↓
716
- Claude: Uses get-flink-statement-exceptions → gets error details
717
- ↓
718
- Claude: Uses detect-flink-statement-issues → analyzes status, exceptions, metrics
719
- ↓
720
- Claude: Uses get-flink-statement-profile → gets task-level metrics
721
- ↓
722
- Claude: "The statement has high backpressure on task 'Sink'. Try increasing parallelism..."
723
- ```
724
-
725
- ## Metrics Example Workflows
726
-
727
- The `list-available-metrics` and `query-metrics` tools work together to let AI assistants monitor your Confluent Cloud resources. The discovery tool ensures the assistant uses valid metric names and filter fields rather than guessing.
728
-
729
- #### Kafka Topic Throughput
730
-
731
- ```
732
- User: "What's the throughput on topic sensor-readings over the last hour?"
733
- ↓
734
- Claude: Uses list-available-metrics(resource_type: "kafka") → discovers metric names & filters
735
- ↓
736
- Claude: Uses query-metrics(metric: "io.confluent.kafka.server/received_bytes",
737
- filter: {"metric.topic": "sensor-readings"}) → gets time-series data
738
- ↓
739
- Claude: "sensor-readings is receiving ~14.3 KB/min steadily over the last hour."
740
- ```
741
-
742
- #### Flink Compute Pool Utilization
743
-
744
- ```
745
- User: "How many CFUs is my Flink compute pool using?"
746
- ↓
747
- Claude: Uses list-available-metrics(resource_type: "compute_pool") → discovers CFU metrics
748
- ↓
749
- Claude: Uses query-metrics(metric: "io.confluent.flink/compute_pool_utilization/current_cfus",
750
- filter: {"resource.compute_pool.id": "lfcp-..."}, granularity: "PT1H",
751
- interval: "<7-day range>") → gets usage trend
752
- ↓
753
- Claude: "Your compute pool is using 1 CFU consistently."
754
- ```
755
-
756
- #### Consumer Lag Monitoring
757
-
758
- ```
759
- User: "Is there any consumer lag on the sensor-readings topic?"
760
- ↓
761
- Claude: Uses query-metrics(metric: "io.confluent.kafka.server/consumer_lag_offsets",
762
- filter: {"metric.topic": "sensor-readings"},
763
- group_by: ["metric.consumer_group_id"]) → gets lag per consumer group
764
- ↓
765
- Claude: "Consumer group 'analytics' has 1,200 offsets of lag."
766
- ```
767
-
768
- > **Note:** Kafka server metrics (e.g., `io.confluent.kafka.server/received_bytes`) require `CONFLUENT_CLOUD_API_KEY` and `CONFLUENT_CLOUD_API_SECRET`. The `KAFKA_CLUSTER_ID` environment variable is auto-injected as a filter when querying Kafka metrics. Flink compute pool metrics report at hourly granularity, so queries may need a wider time window than the default 1 hour.
769
-
770
- ## Developer Guide
771
-
772
- ### Project Structure
773
-
774
- ```sh
775
- /
776
- ├── src/ # Source code
777
- │ ├── index.ts # Main entry point
778
- │ ├── cli.ts # CLI argument parsing
779
- │ ├── env.ts # Environment initialization
780
- │ ├── env-schema.ts # Environment variable schema (Zod)
781
- │ ├── logger.ts # Logger configuration
782
- │ ├── confluent/ # Confluent integration
783
- │ │ ├── client-manager.ts # API client management
784
- │ │ ├── schema-registry-helper.ts
785
- │ │ └── tools/
786
- │ │ ├── base-tools.ts # Base handler class
787
- │ │ ├── tool-factory.ts # Tool registry
788
- │ │ ├── tool-name.ts # Tool name enum
789
- │ │ └── handlers/
790
- │ │ ├── billing/ # Billing tools
791
- │ │ ├── catalog/ # Catalog & tag tools
792
- │ │ ├── clusters/ # Cluster tools
793
- │ │ ├── connect/ # Connector tools
794
- │ │ ├── environments/ # Environment tools
795
- │ │ ├── flink/ # Flink SQL, catalog & diagnostics tools
796
- │ │ ├── kafka/ # Kafka topic & message tools
797
- │ │ ├── metrics/ # Telemetry API metrics tools
798
- │ │ ├── schema/ # Schema Registry tools
799
- │ │ ├── search/ # Search tools
800
- │ │ └── tableflow/ # Tableflow topic & catalog tools
801
- │ └── mcp/ # MCP protocol and transport logic
802
- │ └── transports/
803
- │ ├── http.ts # HTTP transport
804
- │ ├── sse.ts # SSE transport
805
- │ ├── stdio.ts # STDIO transport
806
- │ ├── auth.ts # Authentication middleware
807
- │ └── manager.ts # Transport manager
808
- ├── dist/ # Compiled output
809
- ├── openapi.json # OpenAPI specification for Confluent Cloud
810
- ├── .env.example # Example environment variables
811
- ├── README.md # This file
812
- └── package.json # Node.js project metadata and dependencies
813
- ```
814
-
815
- ### Building and Running
816
-
817
- 1. **Install Dependencies:**
818
-
819
- ```bash
820
- npm install
821
- ```
822
-
823
- 2. **Development Mode (watch for changes):**
824
-
825
- ```bash
826
- npm run dev
827
- ```
828
-
829
- This command compiles the TypeScript code to JavaScript and automatically rebuilds when changes are detected in the `src/` directory.
830
-
831
- 3. **Production Build (one-time compilation):**
832
-
833
- ```bash
834
- npm run build
835
- ```
836
-
837
- 4. **Start the Server:**
838
-
839
- ```bash
840
- npm run start
841
- ```
842
-
843
- ### Docker
844
-
845
- #### Prerequisites
846
-
847
- Before you begin, ensure you have the following installed on your system:
848
-
849
- Docker Desktop (or Docker Engine and Docker Compose): <https://www.docker.com/products/docker-desktop>
850
-
851
- ##### Environment Variables
392
+ ### Configuring MCP Clients
852
393
 
853
- The MCP server requires several environment variables to connect to Confluent Cloud and other relevant services. These should be provided in the `.env` file in the root directory of this project. Or you can add them directly in the `docker-compose.yml`
394
+ Please refer to the following guides for step-by-step instructions on setting up and using this MCP server with your preferred client:
854
395
 
855
- #### Building and Running with Docker
856
-
857
- Here's how to build your Docker image and run it in different modes.
858
-
859
- 1. **Navigate to your project directory.** Open your terminal or command prompt and change to the directory containing the `Dockerfile`.
860
-
861
- ```bash
862
- cd /path/to/repo/mcp-confluent
863
- ```
864
-
865
- 2. **Build the Docker image.**
866
-
867
- This command creates the `mcp-server` image based on the `Dockerfile` in the current directory.
868
-
869
- ```bash
870
- docker build -t mcp-server .
871
- ```
872
-
873
- 3. **Run the container**
874
- - `--rm`: **Automatically removes the container** when it exits. This helps keep your system clean.
875
- - `-i`: Keeps **STDIN open** (runs the server using stdio transport by default).
876
- - `-d`: Runs the container in **detached mode** (in the background).
877
- - `-p 8080:8080`: **Maps port 8080** on your host machine to port 8080 inside the container. The default HTTP_PORT is 8080; adjust if you've configured a different port.
878
-
879
- ```bash
880
- docker run --rm -i -d -p 8080:8080 mcp-server
881
- ```
882
-
883
- (Optional)
884
- - `-t` **Transport Mode** to enable http transport
885
-
886
- ```bash
887
- docker run --rm -d -p 8080:8080 mcp-server -t http
888
- ```
889
-
890
- #### Building and Running with Docker Compose
891
-
892
- 1. **Navigate to the project root:**
893
- Open your terminal or command prompt and change to the directory containing Dockerfile and docker-compose.yml.
894
-
895
- ```bash
896
- cd /path/to/repo/mcp-confluent
897
- ```
898
-
899
- 2. **Build and run the service:**
900
- Docker Compose will build the Docker image (if not already built) and start the mcp-server service.
901
-
902
- ```bash
903
- docker compose up --build
904
- ```
905
-
906
- The --build flag ensures that Docker Compose rebuilds the image before starting the container. You can omit this flag on subsequent runs if you haven't changed the Dockerfile or source code.
907
-
908
- The server will be accessible on <http://localhost:8080> (or the port specified in HTTP_PORT in your .env file).
909
-
910
- 3. **Stopping the Server**
911
- To stop the running MCP server and remove the containers, press Ctrl+C in the terminal where docker compose up is running.
912
-
913
- Alternatively, in a new terminal from the project root, you can run:
914
-
915
- ```bash
916
- docker compose down
917
- ```
918
-
919
- This command stops and removes the containers, networks, and volumes created by docker compose up.
920
-
921
- ### Testing
922
-
923
- #### MCP Inspector
924
-
925
- For testing MCP servers, you can use [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) which is an interactive developer tool for testing and debugging MCP servers.
926
-
927
- ```bash
928
- # make sure you've already built the project either in dev mode or by running npm run build
929
- npx @modelcontextprotocol/inspector node $PATH_TO_PROJECT/dist/index.js --env-file $PATH_TO_PROJECT/.env
930
- ```
931
-
932
- ### Local Development with an MCP Client
933
-
934
- While the [MCP Inspector](#mcp-inspector) is useful for ad-hoc tool testing, this setup lets you develop against a real MCP client (Claude Code, Cursor, etc.) with full server log visibility. By default, MCP clients spawn the server as a child process using stdio transport, which makes server logs difficult to observe. Running the server in HTTP mode gives you direct access to logs while the client interacts with it normally.
935
-
936
- After building the project (see [Building and Running](#building-and-running)):
937
-
938
- #### 1. Start the server in HTTP mode
939
-
940
- ```bash
941
- npm run start:http -- --disable-auth
942
- ```
943
-
944
- > [!WARNING]
945
- > Never disable authentication in production or when the server is network-accessible.
946
-
947
- This starts the server on `http://127.0.0.1:8080/mcp` (the defaults for `HTTP_HOST`, `HTTP_PORT`, and `HTTP_MCP_ENDPOINT_PATH`) with authentication disabled for local development.
948
-
949
- #### 2. Point your MCP client at the running server
950
-
951
- Instead of the default stdio configuration, configure your assistant's MCP settings to connect via HTTP. For example, in `.mcp.json`:
952
-
953
- ```json
954
- {
955
- "mcpServers": {
956
- "confluent-dev": {
957
- "type": "http",
958
- "url": "http://127.0.0.1:8080/mcp"
959
- }
960
- }
961
- }
962
- ```
963
-
964
- This replaces the typical `command`/`args` config that spawns a stdio child process.
965
-
966
- > [!IMPORTANT]
967
- > After restarting the MCP server, you may also need to restart or reconnect your MCP client so it picks up the new server process. For example, in Claude Code use the `/mcp` command to reconnect.
968
-
969
- #### 3. Observe server logs
970
-
971
- All server logs are written to stderr via pino and will appear directly in the terminal where you started the server. Set `LOG_LEVEL=debug` for more verbose output. To capture logs to a file instead:
972
-
973
- ```bash
974
- npm run start:http -- --disable-auth 2>server.log
975
- ```
976
-
977
- Then tail in a separate terminal:
978
-
979
- ```bash
980
- tail -f server.log
981
- ```
982
-
983
- ### Adding a New Tool
984
-
985
- 1. Add a new enum to the enum class `ToolName`.
986
- 2. Add your new tool to the handlers map in the `ToolFactory` class.
987
- 3. Create a new file, exporting the class that extends `BaseToolHandler`.
988
- 1. Implement the `handle` method of the base class.
989
- 2. Implement the `getToolConfig` method of the base class.
990
- 4. Once satisfied, add it to the set of `enabledTools` in `index.ts`.
991
-
992
- ### Generating Types
993
-
994
- ```bash
995
- # as of v7.5.2 there is a bug when using allOf w/ required https://github.com/openapi-ts/openapi-typescript/issues/1474. need --empty-objects-unknown flag to avoid it
996
- npx openapi-typescript ./openapi.json -o ./src/confluent/openapi-schema.d.ts --empty-objects-unknown
997
- ```
396
+ - [Claude Code](docs/configuring-claude-code.md)
397
+ - [Claude Desktop](docs/configuring-claude-desktop.md)
398
+ - [Cursor](docs/configuring-cursor.md)
399
+ - [Gemini CLI](docs/configuring-gemini-cli.md)
400
+ - [Goose CLI](docs/configuring-goose-cli.md)
401
+ - [VS Code](docs/configuring-vs-code.md)
402
+ - [Windsurf](docs/configuring-windsurf.md)
998
403
 
999
404
  ## Telemetry
1000
405
 
@@ -1012,6 +417,6 @@ This MCP server collects anonymous usage data to help make improvements. No pers
1012
417
 
1013
418
  **Tableflow authorization errors** -- Tableflow tools require specific IAM permissions in your cloud environment. See [Prerequisites & Setup for Tableflow Commands](#prerequisites--setup-for-tableflow-commands).
1014
419
 
1015
- ### Contributing
420
+ ## Contributing
1016
421
 
1017
422
  Bug reports and feedback is appreciated in the form of Github Issues. For guidelines on contributing please see [CONTRIBUTING.md](CONTRIBUTING.md)