@confluentinc/mcp-confluent 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +174 -791
- package/assets/oauth-templates/callback-failure.html +22 -0
- package/assets/oauth-templates/callback-success.html +19 -0
- package/assets/oauth-templates/logo.html +91 -0
- package/assets/oauth-templates/styles.html +49 -0
- package/config.example.yaml +149 -0
- package/config.oauth.example.yaml +45 -0
- package/dist/cli.d.ts +59 -12
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +131 -61
- package/dist/cli.js.map +1 -1
- package/dist/config/env-config.d.ts +33 -0
- package/dist/config/env-config.d.ts.map +1 -0
- package/dist/config/env-config.js +473 -0
- package/dist/config/env-config.js.map +1 -0
- package/dist/config/index.d.ts +31 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +76 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/interpolation.d.ts +9 -0
- package/dist/config/interpolation.d.ts.map +1 -0
- package/dist/config/interpolation.js +51 -0
- package/dist/config/interpolation.js.map +1 -0
- package/dist/config/models.d.ts +396 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +401 -0
- package/dist/config/models.js.map +1 -0
- package/dist/config/validation.d.ts +9 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +46 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/confluent/base-client-manager.d.ts +100 -0
- package/dist/confluent/base-client-manager.d.ts.map +1 -0
- package/dist/confluent/base-client-manager.js +188 -0
- package/dist/confluent/base-client-manager.js.map +1 -0
- package/dist/confluent/client-manager.d.ts +42 -94
- package/dist/confluent/client-manager.d.ts.map +1 -1
- package/dist/confluent/client-manager.js +5 -242
- package/dist/confluent/client-manager.js.map +1 -1
- package/dist/confluent/config-telemetry.d.ts +41 -0
- package/dist/confluent/config-telemetry.d.ts.map +1 -0
- package/dist/confluent/config-telemetry.js +17 -0
- package/dist/confluent/config-telemetry.js.map +1 -0
- package/dist/confluent/direct-client-manager.d.ts +43 -0
- package/dist/confluent/direct-client-manager.d.ts.map +1 -0
- package/dist/confluent/direct-client-manager.js +146 -0
- package/dist/confluent/direct-client-manager.js.map +1 -0
- package/dist/confluent/middleware.d.ts +32 -4
- package/dist/confluent/middleware.d.ts.map +1 -1
- package/dist/confluent/middleware.js +46 -2
- package/dist/confluent/middleware.js.map +1 -1
- package/dist/confluent/node-deps.d.ts +32 -39
- package/dist/confluent/node-deps.d.ts.map +1 -1
- package/dist/confluent/node-deps.js +42 -7
- package/dist/confluent/node-deps.js.map +1 -1
- package/dist/confluent/oauth/auth-context.d.ts +94 -0
- package/dist/confluent/oauth/auth-context.d.ts.map +1 -0
- package/dist/confluent/oauth/auth-context.js +323 -0
- package/dist/confluent/oauth/auth-context.js.map +1 -0
- package/dist/confluent/oauth/auth0-config.d.ts +12 -0
- package/dist/confluent/oauth/auth0-config.d.ts.map +1 -0
- package/dist/confluent/oauth/auth0-config.js +43 -0
- package/dist/confluent/oauth/auth0-config.js.map +1 -0
- package/dist/confluent/oauth/callback-pages.d.ts +5 -0
- package/dist/confluent/oauth/callback-pages.d.ts.map +1 -0
- package/dist/confluent/oauth/callback-pages.js +38 -0
- package/dist/confluent/oauth/callback-pages.js.map +1 -0
- package/dist/confluent/oauth/crypto-utils.d.ts +16 -0
- package/dist/confluent/oauth/crypto-utils.d.ts.map +1 -0
- package/dist/confluent/oauth/crypto-utils.js +23 -0
- package/dist/confluent/oauth/crypto-utils.js.map +1 -0
- package/dist/confluent/oauth/errors.d.ts +27 -0
- package/dist/confluent/oauth/errors.d.ts.map +1 -0
- package/dist/confluent/oauth/errors.js +6 -0
- package/dist/confluent/oauth/errors.js.map +1 -0
- package/dist/confluent/oauth/oauth-holder.d.ts +34 -0
- package/dist/confluent/oauth/oauth-holder.d.ts.map +1 -0
- package/dist/confluent/oauth/oauth-holder.js +155 -0
- package/dist/confluent/oauth/oauth-holder.js.map +1 -0
- package/dist/confluent/oauth/pkce-login.d.ts +26 -0
- package/dist/confluent/oauth/pkce-login.d.ts.map +1 -0
- package/dist/confluent/oauth/pkce-login.js +161 -0
- package/dist/confluent/oauth/pkce-login.js.map +1 -0
- package/dist/confluent/oauth/token-chain.d.ts +53 -0
- package/dist/confluent/oauth/token-chain.d.ts.map +1 -0
- package/dist/confluent/oauth/token-chain.js +141 -0
- package/dist/confluent/oauth/token-chain.js.map +1 -0
- package/dist/confluent/oauth/token-lifetimes.d.ts +13 -0
- package/dist/confluent/oauth/token-lifetimes.d.ts.map +1 -0
- package/dist/confluent/oauth/token-lifetimes.js +13 -0
- package/dist/confluent/oauth/token-lifetimes.js.map +1 -0
- package/dist/confluent/oauth/types.d.ts +68 -0
- package/dist/confluent/oauth/types.d.ts.map +1 -0
- package/dist/confluent/oauth/types.js +2 -0
- package/dist/confluent/oauth/types.js.map +1 -0
- package/dist/confluent/oauth-client-manager.d.ts +78 -0
- package/dist/confluent/oauth-client-manager.d.ts.map +1 -0
- package/dist/confluent/oauth-client-manager.js +265 -0
- package/dist/confluent/oauth-client-manager.js.map +1 -0
- package/dist/confluent/oauth-resource-resolvers.d.ts +6 -0
- package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -0
- package/dist/confluent/oauth-resource-resolvers.js +65 -0
- package/dist/confluent/oauth-resource-resolvers.js.map +1 -0
- package/dist/confluent/telemetry.d.ts +32 -1
- package/dist/confluent/telemetry.d.ts.map +1 -1
- package/dist/confluent/telemetry.js +31 -8
- package/dist/confluent/telemetry.js.map +1 -1
- package/dist/confluent/tools/base-tools.d.ts +108 -34
- package/dist/confluent/tools/base-tools.d.ts.map +1 -1
- package/dist/confluent/tools/base-tools.js +73 -10
- package/dist/confluent/tools/base-tools.js.map +1 -1
- package/dist/confluent/tools/cluster-arg-resolvers.d.ts +75 -0
- package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -0
- package/dist/confluent/tools/cluster-arg-resolvers.js +127 -0
- package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -0
- package/dist/confluent/tools/connection-predicates.d.ts +168 -0
- package/dist/confluent/tools/connection-predicates.d.ts.map +1 -0
- package/dist/confluent/tools/connection-predicates.js +273 -0
- package/dist/confluent/tools/connection-predicates.js.map +1 -0
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +3 -5
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +7 -19
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +4 -5
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +7 -19
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +4 -5
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +7 -19
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +4 -5
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.js +7 -19
- package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +4 -5
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.js +7 -23
- package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +4 -5
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +7 -19
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +3 -5
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +11 -22
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +21 -0
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +22 -0
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +11 -7
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js +23 -33
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +6 -7
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +12 -26
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +6 -7
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +17 -28
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +6 -7
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +12 -26
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +57 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +122 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +17 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js +234 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +13 -0
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js +285 -0
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +3 -5
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js +7 -19
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +3 -5
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js +7 -19
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +16 -9
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +18 -12
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +17 -31
- package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts +14 -0
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js +15 -0
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +17 -31
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +14 -28
- package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +14 -30
- package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +14 -38
- package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +20 -32
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +9 -24
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +9 -23
- package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +11 -25
- package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts +2 -2
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +7 -7
- package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +13 -29
- package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +2 -2
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +21 -0
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +31 -0
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +9 -23
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +11 -25
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js +9 -23
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +3 -5
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +22 -29
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +5 -4
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +25 -17
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +3 -4
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +52 -15
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +3 -4
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +26 -8
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +3 -5
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js +21 -28
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +3 -4
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +25 -10
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +3 -4
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +54 -34
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +4 -5
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +6 -8
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +22 -5
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +88 -52
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +49 -0
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +115 -0
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +3 -4
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +13 -18
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +3 -4
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +13 -7
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +4 -5
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +7 -19
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +4 -5
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +7 -19
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +16 -22
- package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +8 -24
- package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +9 -25
- package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +8 -24
- package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +7 -21
- package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +20 -32
- package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +25 -0
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +27 -0
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +16 -22
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +8 -24
- package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +9 -25
- package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +8 -24
- package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts +5 -7
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +7 -21
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/tool-availability.d.ts +74 -0
- package/dist/confluent/tools/tool-availability.d.ts.map +1 -0
- package/dist/confluent/tools/tool-availability.js +121 -0
- package/dist/confluent/tools/tool-availability.js.map +1 -0
- package/dist/confluent/tools/tool-name.d.ts +5 -1
- package/dist/confluent/tools/tool-name.d.ts.map +1 -1
- package/dist/confluent/tools/tool-name.js +4 -0
- package/dist/confluent/tools/tool-name.js.map +1 -1
- package/dist/confluent/tools/tool-registry.d.ts +18 -0
- package/dist/confluent/tools/tool-registry.d.ts.map +1 -0
- package/dist/confluent/tools/{tool-factory.js → tool-registry.js} +32 -19
- package/dist/confluent/tools/tool-registry.js.map +1 -0
- package/dist/env-schema.d.ts +5 -2
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +20 -5
- package/dist/env-schema.js.map +1 -1
- package/dist/env.d.ts +16 -7
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +16 -6
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +74 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +279 -162
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +21 -20
- package/dist/logger.js.map +1 -1
- package/dist/mcp/server.d.ts +29 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +52 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/transports/auth.d.ts +20 -4
- package/dist/mcp/transports/auth.d.ts.map +1 -1
- package/dist/mcp/transports/auth.js +27 -7
- package/dist/mcp/transports/auth.js.map +1 -1
- package/dist/mcp/transports/http.d.ts +8 -2
- package/dist/mcp/transports/http.d.ts.map +1 -1
- package/dist/mcp/transports/http.js +57 -42
- package/dist/mcp/transports/http.js.map +1 -1
- package/dist/mcp/transports/manager.d.ts +23 -9
- package/dist/mcp/transports/manager.d.ts.map +1 -1
- package/dist/mcp/transports/manager.js +27 -24
- package/dist/mcp/transports/manager.js.map +1 -1
- package/dist/mcp/transports/server.d.ts +1 -1
- package/dist/mcp/transports/server.d.ts.map +1 -1
- package/dist/mcp/transports/server.js +17 -5
- package/dist/mcp/transports/server.js.map +1 -1
- package/dist/mcp/transports/session-registry.d.ts +33 -0
- package/dist/mcp/transports/session-registry.d.ts.map +1 -0
- package/dist/mcp/transports/session-registry.js +65 -0
- package/dist/mcp/transports/session-registry.js.map +1 -0
- package/dist/mcp/transports/sse.d.ts +13 -2
- package/dist/mcp/transports/sse.d.ts.map +1 -1
- package/dist/mcp/transports/sse.js +58 -46
- package/dist/mcp/transports/sse.js.map +1 -1
- package/dist/server-runtime.d.ts +28 -0
- package/dist/server-runtime.d.ts.map +1 -0
- package/dist/server-runtime.js +73 -0
- package/dist/server-runtime.js.map +1 -0
- package/package.json +25 -9
- package/dist/confluent/helpers.d.ts +0 -11
- package/dist/confluent/helpers.d.ts.map +0 -1
- package/dist/confluent/helpers.js +0 -17
- package/dist/confluent/helpers.js.map +0 -1
- package/dist/confluent/tools/tool-factory.d.ts +0 -9
- package/dist/confluent/tools/tool-factory.d.ts.map +0 -1
- package/dist/confluent/tools/tool-factory.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,547 +1,214 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Confluent MCP Server
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@confluentinc/mcp-confluent)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
An [MCP server](https://modelcontextprotocol.io/) that enables AI assistants to interact with Confluent Cloud
|
|
6
|
+
An open-source [MCP server](https://modelcontextprotocol.io/) that enables AI assistants to interact with Confluent Cloud, Confluent Platform, and standalone Apache Kafka deployments through natural language.
|
|
7
|
+
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.
|
|
7
8
|
|
|
8
|
-
|
|
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
|
-
[](https://deepwiki.com/confluentinc/mcp-confluent)
|
|
13
|
-
|
|
14
|
-
## Demo
|
|
15
|
-
|
|
16
|
-
### Goose CLI
|
|
17
|
-
|
|
18
|
-

|
|
9
|
+
## Quick Start
|
|
19
10
|
|
|
20
|
-
|
|
11
|
+
> **Prerequisites:** [Node.js 22+](https://nodejs.org/).
|
|
12
|
+
> If you want to interact with [Confluent Cloud](https://confluent.cloud/), you need to create an account first.
|
|
21
13
|
|
|
22
|
-
|
|
14
|
+
1. Generate a quick `config.yaml` file in your project root:
|
|
23
15
|
|
|
24
|
-
|
|
16
|
+
```bash
|
|
17
|
+
npx @confluentinc/mcp-confluent --init-config
|
|
18
|
+
```
|
|
25
19
|
|
|
26
|
-
|
|
20
|
+
2. Edit the `config.yaml` file with your connection details, then:
|
|
27
21
|
|
|
28
22
|
```bash
|
|
29
|
-
|
|
30
|
-
npx -y @confluentinc/mcp-confluent -e /path/to/.env
|
|
23
|
+
npx @confluentinc/mcp-confluent --config ./config.yaml
|
|
31
24
|
```
|
|
32
25
|
|
|
33
|
-
|
|
26
|
+
See [Getting Started](#getting-started) for full setup instructions and [Configuring MCP Clients](#configuring-mcp-clients) for integration with your preferred AI tool.
|
|
34
27
|
|
|
35
28
|
## Table of Contents
|
|
36
29
|
|
|
37
30
|
- [Quick Start](#quick-start)
|
|
38
31
|
- [Available Tools](#available-tools)
|
|
32
|
+
- [Always Available](#always-available-tools)
|
|
39
33
|
- [Confluent Cloud](#available-tools-for-confluent-cloud)
|
|
40
|
-
- [Local
|
|
41
|
-
- [
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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)
|
|
34
|
+
- [Local deployments](#available-tools-for-local-deployments)
|
|
35
|
+
- [Getting Started](#getting-started)
|
|
36
|
+
- [Configuration](#configuration)
|
|
37
|
+
- [OAuth Authentication for Confluent Cloud](#oauth-authentication-for-confluent-cloud)
|
|
38
|
+
- [CLI Usage](#cli-usage)
|
|
39
|
+
- [Configuring MCP Clients](#configuring-mcp-clients)
|
|
40
|
+
- [Telemetry](#telemetry)
|
|
52
41
|
- [Troubleshooting](#troubleshooting)
|
|
42
|
+
- [Contributing](#contributing)
|
|
53
43
|
|
|
54
44
|
## Available Tools
|
|
55
45
|
|
|
56
|
-
|
|
46
|
+
Tools are auto-enabled based on which service blocks are present in your resolved configuration; see [CONFIGURATION.md](CONFIGURATION.md#tool-enablement-which-block-lights-up-what) for the full block-to-tool mapping.
|
|
47
|
+
|
|
48
|
+
You can list all available tools via the CLI:
|
|
57
49
|
|
|
58
50
|
```bash
|
|
59
51
|
npx -y @confluentinc/mcp-confluent --list-tools
|
|
60
52
|
```
|
|
61
53
|
|
|
54
|
+
### Always-Available Tools
|
|
55
|
+
|
|
56
|
+
These tools need no service blocks or authentication — they're enabled even on a bare config, regardless of which deployment the rest of your config targets.
|
|
57
|
+
|
|
58
|
+
| Category | Tools | Description |
|
|
59
|
+
| ----------------- | --------------------------------------------- | --------------------------------------------------------- |
|
|
60
|
+
| **Documentation** | `search-product-docs`, `get-product-doc-page` | Search Confluent product docs and fetch full page content |
|
|
61
|
+
| **Diagnostics** | `explain-disabled-tools` | Explain why specific tools are absent from `tools/list` |
|
|
62
|
+
|
|
62
63
|
### Available Tools for Confluent Cloud
|
|
63
64
|
|
|
64
|
-
These tools require endpoints and authentication against specific Confluent Cloud components.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
| **
|
|
71
|
-
| **Flink
|
|
72
|
-
| **
|
|
73
|
-
| **
|
|
74
|
-
| **
|
|
75
|
-
| **
|
|
76
|
-
| **
|
|
77
|
-
| **
|
|
78
|
-
| **
|
|
79
|
-
| **
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
65
|
+
These tools require endpoints and authentication against specific Confluent Cloud components.
|
|
66
|
+
Refer to [`config.example.yaml`](config.example.yaml) for the full set of configuration variables.
|
|
67
|
+
Categories marked with ¹ also work with [OAuth authentication](#oauth-authentication-for-confluent-cloud) — sign in via your browser instead of provisioning API keys.
|
|
68
|
+
|
|
69
|
+
| Category | Tools | Description |
|
|
70
|
+
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
|
|
71
|
+
| **Kafka** ¹ | `list-topics`, `create-topics`, `delete-topics`, `produce-message`, `consume-messages`, `alter-topic-config`, `get-topic-config` | Manage topics, produce/consume messages, configure topic settings |
|
|
72
|
+
| **Flink SQL** | `create-flink-statement`, `list-flink-statements`, `read-flink-statement`, `delete-flink-statements`, `get-flink-statement-exceptions` | Create and manage Flink SQL statements |
|
|
73
|
+
| **Flink Catalog** | `list-flink-catalogs`, `list-flink-databases`, `list-flink-tables`, `describe-flink-table`, `get-flink-table-info` | Explore Flink catalogs, databases, and table schemas |
|
|
74
|
+
| **Flink Diagnostics** | `check-flink-statement-health`, `detect-flink-statement-issues`, `get-flink-statement-profile` | Health checks, issue detection, and query profiling |
|
|
75
|
+
| **Connectors** | `list-connectors`, `read-connector`, `create-connector`, `delete-connector` | Manage Kafka Connect connectors |
|
|
76
|
+
| **Schema Registry** ¹ | `list-schemas`, `delete-schema` | List, inspect, and delete data schemas |
|
|
77
|
+
| **Catalog & Tags** | `search-topics-by-tag`, `search-topics-by-name`, `create-topic-tags`, `delete-tag`, `remove-tag-from-entity`, `add-tags-to-topic`, `list-tags` | Organize and search topics using tags |
|
|
78
|
+
| **Organizations, Environments & Clusters** ¹ | `list-organizations`, `list-environments`, `read-environment`, `list-clusters` | Discover Confluent Cloud resources |
|
|
79
|
+
| **Tableflow** | `create-tableflow-topic`, `list-tableflow-topics`, `read-tableflow-topic`, `update-tableflow-topic`, `delete-tableflow-topic`, `list-tableflow-regions` | Manage Tableflow-enabled topics |
|
|
80
|
+
| **Tableflow Catalog** | `create-tableflow-catalog-integration`, `list-tableflow-catalog-integrations`, `read-tableflow-catalog-integration`, `update-tableflow-catalog-integration`, `delete-tableflow-catalog-integration` | Manage Tableflow catalog integrations (e.g., AWS Glue) |
|
|
81
|
+
| **Metrics** | `list-available-metrics`, `query-metrics` | Discover and query Confluent Cloud operational metrics |
|
|
82
|
+
| **Billing** ¹ | `list-billing-costs` | Query billing and cost data |
|
|
83
|
+
|
|
84
|
+
¹ Also available under OAuth — see [OAuth Authentication for Confluent Cloud](#oauth-authentication-for-confluent-cloud) for setup and caveats.
|
|
85
|
+
Categories not marked currently require a `direct` connection with static API keys; OAuth migration is in progress.
|
|
86
|
+
|
|
87
|
+
### Available Tools for local deployments
|
|
88
|
+
|
|
89
|
+
These tools only require Kafka or Schema Registry endpoints - no Confluent Cloud API key/secret is needed.
|
|
90
|
+
Ideal for local development with self-managed clusters, including Confluent Platform.
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
# minimal config.yaml for local development
|
|
94
|
+
connections:
|
|
95
|
+
local:
|
|
96
|
+
type: direct
|
|
97
|
+
kafka:
|
|
98
|
+
bootstrap_servers: "localhost:9092"
|
|
99
|
+
schema_registry:
|
|
100
|
+
endpoint: "http://localhost:8081"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Ready-to-use variants live in [`sample_configs/`](sample_configs/).
|
|
90
104
|
|
|
91
105
|
| Category | Tools | Description |
|
|
92
106
|
| ------------------- | -------------------------------------------------------------------------------------- | --------------------------------------- |
|
|
93
107
|
| **Kafka** | `list-topics`, `create-topics`, `delete-topics`, `produce-message`, `consume-messages` | Manage topics, produce/consume messages |
|
|
94
108
|
| **Schema Registry** | `list-schemas`, `delete-schema` | List, inspect, and delete data schemas |
|
|
95
109
|
|
|
96
|
-
##
|
|
97
|
-
|
|
98
|
-
### Getting Started
|
|
110
|
+
## Getting Started
|
|
99
111
|
|
|
100
|
-
|
|
112
|
+
### Prerequisites
|
|
101
113
|
|
|
102
114
|
- **Node.js 22 or later** -- we recommend using [NVM](https://github.com/nvm-sh/nvm) to manage versions:
|
|
103
115
|
```bash
|
|
104
116
|
nvm install 22
|
|
105
117
|
nvm use 22
|
|
106
118
|
```
|
|
107
|
-
- A **Confluent Cloud** account with appropriate API keys
|
|
108
|
-
|
|
109
|
-
#### Setup
|
|
110
|
-
|
|
111
|
-
1. **Create a `.env` file:** Copy the provided `.env.example` file to `.env` in the root of your project:
|
|
112
|
-
```bash
|
|
113
|
-
cp .env.example .env
|
|
114
|
-
```
|
|
115
|
-
2. **Populate the `.env` file:** Fill in the necessary values for your Confluent Cloud environment. See the [Configuration](#configuration) section for details on each variable.
|
|
116
|
-
|
|
117
|
-
### Configuration
|
|
118
|
-
|
|
119
|
-
Copy `.env.example` to `.env` in the root directory and fill in your values. See the example structure below:
|
|
120
|
-
|
|
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>
|
|
151
|
-
|
|
152
|
-
#### Prerequisites & Setup for Tableflow Commands
|
|
153
|
-
|
|
154
|
-
In order to leverage **Tableflow commands** to interact with your data ecosystem and successfully execute these Tableflow commands and manage resources (e.g., interacting with data storage like AWS S3 and metadata catalogs like AWS Glue), certain **IAM (Identity and Access Management) permissions** and configurations are essential.
|
|
155
|
-
|
|
156
|
-
It is crucial to set up the necessary roles and policies in your cloud environment (e.g., AWS) and link them correctly within Confluent Cloud. This ensures your Flink SQL cluster, which powers Tableflow, has the required authorization to perform operations on your behalf.
|
|
157
|
-
|
|
158
|
-
Please refer to the following Confluent Cloud documentation for detailed instructions on setting up these permissions and integrating with custom storage and Glue:
|
|
119
|
+
- A local environment with Kafka or Schema Registry running, or a **Confluent Cloud** account with appropriate API keys or login credentials if [using OAuth to authenticate](#oauth-authentication-for-confluent-cloud).
|
|
159
120
|
|
|
160
|
-
|
|
161
|
-
[https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-custom-storage-glue.html](https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-custom-storage-glue.html)
|
|
121
|
+
### General Setup Steps
|
|
162
122
|
|
|
163
|
-
|
|
123
|
+
This MCP server is designed to be used with various MCP clients, such as Claude Desktop, Copilot, or Goose CLI/Desktop.
|
|
124
|
+
The specific configuration and interaction will depend on the client you are using.
|
|
164
125
|
|
|
165
|
-
|
|
126
|
+
The MCP server can authenticate to Confluent Cloud via **OAuth (PKCE)** in addition to static API keys defined in the YAML config.
|
|
127
|
+
See [OAuth Authentication For Confluent Cloud](#oauth-authentication-for-confluent-cloud) for more details.
|
|
166
128
|
|
|
167
|
-
|
|
129
|
+
The general steps to configure (if not using OAuth) and run this MCP are:
|
|
168
130
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
Generate a secure API key using the built-in utility:
|
|
131
|
+
1. **Create a configuration file:** Copy the provided [`config.yaml` example](https://github.com/confluentinc/mcp-confluent/blob/main/config.example.yaml) file to the root of your project.
|
|
132
|
+
You can use the CLI to bootstrap one in your current directory — no git checkout required:
|
|
172
133
|
|
|
173
134
|
```bash
|
|
174
|
-
npx @confluentinc/mcp-confluent --
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
This will output a 64-character key generated using secure cryptography:
|
|
178
|
-
|
|
179
|
-
```
|
|
180
|
-
Generated MCP API Key:
|
|
181
|
-
================================================================
|
|
182
|
-
a1b2c3d4e5f6...your-64-char-key-here...
|
|
183
|
-
================================================================
|
|
184
|
-
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
#### Configuring Authentication
|
|
188
|
-
|
|
189
|
-
Add the generated key to your `.env` file:
|
|
190
|
-
|
|
191
|
-
```properties
|
|
192
|
-
# MCP Server Authentication (required for HTTP/SSE transports)
|
|
193
|
-
MCP_API_KEY=your-generated-64-char-key-here
|
|
135
|
+
npx @confluentinc/mcp-confluent --init-config
|
|
194
136
|
```
|
|
195
137
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
Include the API key in the `cflt-mcp-api-Key` header for all HTTP/SSE requests:
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
curl -H "cflt-mcp-api-Key: your-api-key" http://localhost:8080/mcp
|
|
202
|
-
```
|
|
138
|
+
2. **Populate the file:** Fill in the necessary values for your Confluent Cloud environment.
|
|
139
|
+
See [CONFIGURATION.md](CONFIGURATION.md) for the full reference; only fill in the service blocks you need (each one enables a group of tools).
|
|
203
140
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
- **Host Header Validation**: Only requests with allowed Host headers are accepted
|
|
209
|
-
|
|
210
|
-
Configure allowed hosts if needed:
|
|
211
|
-
|
|
212
|
-
```properties
|
|
213
|
-
# Allow additional hosts (comma-separated)
|
|
214
|
-
MCP_ALLOWED_HOSTS=localhost,127.0.0.1,myhost.local
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
#### Additional security to prevent internet exposure of MCP server
|
|
218
|
-
|
|
219
|
-
- **Localhost Binding**: Server binds to `127.0.0.1` by default (not `0.0.0.0`)
|
|
220
|
-
|
|
221
|
-
#### Disabling Authentication (Development Only)
|
|
222
|
-
|
|
223
|
-
For local development, you can disable authentication:
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
# Via CLI flag
|
|
227
|
-
npx @confluentinc/mcp-confluent -e .env --transport http --disable-auth
|
|
228
|
-
|
|
229
|
-
# Or via environment variable
|
|
230
|
-
MCP_AUTH_DISABLED=true
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
> [!WARNING]
|
|
234
|
-
> Never disable authentication in production or when the server is network-accessible.
|
|
235
|
-
|
|
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
|
-
### Usage
|
|
276
|
-
|
|
277
|
-
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
|
-
|
|
279
|
-
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:
|
|
141
|
+
3. **Start the Server:** You can run the MCP server in one of two ways:
|
|
142
|
+
- **From source:** Follow the instructions in the [Contributing Guide](CONTRIBUTING.md) to build and run the server from source.
|
|
143
|
+
This typically involves:
|
|
281
144
|
- Installing dependencies (`npm install`)
|
|
282
145
|
- Building the project (`npm run build` or `npm run dev`)
|
|
283
|
-
- **With npx:** You can start the server directly using npx
|
|
146
|
+
- **With npx:** You can start the server directly using npx, no build required:
|
|
284
147
|
|
|
285
148
|
```bash
|
|
286
|
-
npx
|
|
149
|
+
npx @confluentinc/mcp-confluent --config /path/to/myconfig.yaml
|
|
287
150
|
```
|
|
288
151
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
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
|
-
|
|
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
|
-

|
|
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>
|
|
152
|
+
4. **Configure your MCP Client:** Each client (e.g., Claude, Goose) will have its own way of specifying the MCP server's address and any required credentials.
|
|
153
|
+
You'll need to [configure your client](#configuring-mcp-clients) to connect to the address where this server is running (likely `localhost` with a specific port).
|
|
154
|
+
The port the server runs on is set via `server.http.port` in `config.yaml`.
|
|
386
155
|
|
|
387
|
-
|
|
388
|
-
|
|
156
|
+
5. **Start your MCP Client:** Once your client is configured to connect to the MCP server, you can start your MCP client and on startup it will stand up an instance of this MCP server locally.
|
|
157
|
+
This instance will be responsible for managing data schemas and interacting with resources on your behalf.
|
|
389
158
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
```
|
|
159
|
+
6. **Interact with your resources through the Client:** Once the client is connected and configured, you can use the client's interface to interact with Confluent Cloud or local resources.
|
|
160
|
+
The client will send requests to this MCP server, which will then interact with the available connections on your behalf.
|
|
393
161
|
|
|
394
|
-
|
|
162
|
+
## Configuration
|
|
395
163
|
|
|
396
|
-
|
|
164
|
+
The full configuration reference — YAML schema, every service block, env-var interpolation, OAuth and HTTP/SSE auth setup, the (deprecated) legacy env-var table, and tool-to-block mapping — lives in [CONFIGURATION.md](CONFIGURATION.md).
|
|
397
165
|
|
|
398
|
-
|
|
166
|
+
> **Compatibility note.** This release ships full parity between YAML (`-c config.yaml`) and the legacy env-var path (`-e config.env`) for a single connection.
|
|
167
|
+
> The env-var-only path will emit a startup warning in a near-future release and be removed a release or two later.
|
|
168
|
+
> Multi-connection support (next release) will be YAML-only.
|
|
169
|
+
> See [CONFIGURATION.md → Two paths, one configuration](CONFIGURATION.md#two-paths-one-configuration).
|
|
399
170
|
|
|
400
|
-
###
|
|
171
|
+
### Prerequisites & setup for Tableflow commands
|
|
401
172
|
|
|
402
|
-
|
|
173
|
+
Tableflow tools interact with cloud storage (e.g. AWS S3) and a metadata catalog (e.g. AWS Glue) on your behalf via the Flink runtime in Confluent Cloud.
|
|
174
|
+
The Flink runtime needs IAM permissions on your cloud account, and those have to be granted and linked into Confluent Cloud before any Tableflow tool will succeed.
|
|
403
175
|
|
|
404
|
-
|
|
405
|
-
-
|
|
176
|
+
Follow the **[Tableflow quick start with custom storage & Glue](https://docs.confluent.io/cloud/current/topics/tableflow/get-started/quick-start-custom-storage-glue.html)** to set up the roles, policies, and provider integrations.
|
|
177
|
+
Skipping this step leads to authorization errors when mcp-confluent tries to provision or manage Tableflow-enabled tables.
|
|
406
178
|
|
|
407
|
-
|
|
179
|
+
## OAuth Authentication for Confluent Cloud
|
|
408
180
|
|
|
409
|
-
|
|
410
|
-
|
|
181
|
+
The MCP server can authenticate to Confluent Cloud via **OAuth (PKCE)** instead of static API keys.
|
|
182
|
+
On the first tool call that needs Confluent access, the server opens your browser to the Confluent Cloud sign-in page; subsequent tool calls reuse the resulting session.
|
|
183
|
+
No API keys to provision.
|
|
411
184
|
|
|
412
|
-
|
|
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:
|
|
185
|
+
### Setup
|
|
469
186
|
|
|
470
187
|
```bash
|
|
471
|
-
|
|
188
|
+
npx @confluentinc/mcp-confluent --init-oauth-config
|
|
189
|
+
# edit ./config.yaml if needed, then:
|
|
190
|
+
npx @confluentinc/mcp-confluent --config ./config.yaml
|
|
472
191
|
```
|
|
473
192
|
|
|
474
|
-
|
|
193
|
+
`--init-oauth-config` drops a starter [`config.oauth.example.yaml`](config.oauth.example.yaml) into `./config.yaml`.
|
|
194
|
+
The whole file is essentially:
|
|
475
195
|
|
|
476
|
-
```
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
"command": "npx",
|
|
481
|
-
"args": ["-y", "@confluentinc/mcp-confluent", "-e", "/path/to/.env"]
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
}
|
|
196
|
+
```yaml
|
|
197
|
+
connections:
|
|
198
|
+
ccloud-oauth:
|
|
199
|
+
type: oauth
|
|
485
200
|
```
|
|
486
201
|
|
|
487
|
-
|
|
202
|
+
See [CONFIGURATION.md → Authentication modes](CONFIGURATION.md#authentication-modes) for the full schema and ergonomics.
|
|
488
203
|
|
|
489
|
-
|
|
204
|
+
The ¹-marked categories in [Available Tools for Confluent Cloud](#available-tools-for-confluent-cloud) work under OAuth today; everything else still needs a `direct` connection with static API keys.
|
|
490
205
|
|
|
491
|
-
|
|
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.
|
|
206
|
+
## CLI Usage
|
|
503
207
|
|
|
504
|
-
|
|
208
|
+
The MCP server provides a flexible command line interface (CLI) for advanced control.
|
|
209
|
+
The CLI lets you pick the config file, transports, and fine-tune which tools are enabled or blocked.
|
|
505
210
|
|
|
506
|
-
|
|
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
|
|
541
|
-
|
|
542
|
-
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
|
-
|
|
544
|
-
#### Basic Usage
|
|
211
|
+
### Basic Usage
|
|
545
212
|
|
|
546
213
|
You can view all CLI options and help with:
|
|
547
214
|
|
|
@@ -567,7 +234,6 @@ Options:
|
|
|
567
234
|
--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.
|
|
568
235
|
--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.
|
|
569
236
|
--list-tools Print the final set of enabled tool names (with descriptions) after allow/block filtering and exit. Does not start the server.
|
|
570
|
-
--disable-confluent-cloud-tools Disable all tools that require Confluent Cloud REST APIs (cloud-only tools).
|
|
571
237
|
--disable-auth Disable authentication for HTTP/SSE transports. WARNING: Only use in development environments.
|
|
572
238
|
--allowed-hosts <hosts> Comma-separated list of allowed Host header values for DNS rebinding protection.
|
|
573
239
|
--generate-key Generate a secure API key for MCP_API_KEY and print it to stdout, then exit.
|
|
@@ -576,10 +242,10 @@ Options:
|
|
|
576
242
|
|
|
577
243
|
</details>
|
|
578
244
|
|
|
579
|
-
|
|
245
|
+
### Example: Deploy using all transports
|
|
580
246
|
|
|
581
247
|
```bash
|
|
582
|
-
npx @confluentinc/mcp-confluent -
|
|
248
|
+
npx @confluentinc/mcp-confluent -c config.yaml --transport http,sse,stdio
|
|
583
249
|
```
|
|
584
250
|
|
|
585
251
|
<details>
|
|
@@ -598,31 +264,31 @@ npx @confluentinc/mcp-confluent -e .env --transport http,sse,stdio
|
|
|
598
264
|
|
|
599
265
|
</details>
|
|
600
266
|
|
|
601
|
-
|
|
267
|
+
### Example: Allow Only Specific Tools
|
|
602
268
|
|
|
603
269
|
```bash
|
|
604
|
-
npx @confluentinc/mcp-confluent -
|
|
270
|
+
npx @confluentinc/mcp-confluent -c config.yaml --allow-tools produce-message,consume-messages
|
|
605
271
|
```
|
|
606
272
|
|
|
607
273
|
Only the specified tools will be enabled; all others will be disabled.
|
|
608
274
|
|
|
609
|
-
|
|
275
|
+
### Example: Block Certain Tools
|
|
610
276
|
|
|
611
277
|
```bash
|
|
612
|
-
npx @confluentinc/mcp-confluent -
|
|
278
|
+
npx @confluentinc/mcp-confluent -c config.yaml --block-tools produce-message,consume-messages
|
|
613
279
|
```
|
|
614
280
|
|
|
615
281
|
All tools except the specified ones will be enabled.
|
|
616
282
|
|
|
617
|
-
|
|
283
|
+
### Example: Use Tool Lists from Files
|
|
618
284
|
|
|
619
285
|
You can also maintain allow/block lists in files (one tool name per line):
|
|
620
286
|
|
|
621
287
|
```bash
|
|
622
|
-
npx -y @confluentinc/mcp-confluent -
|
|
288
|
+
npx -y @confluentinc/mcp-confluent -c config.yaml --allow-tools-file allow.txt --block-tools-file block.txt
|
|
623
289
|
```
|
|
624
290
|
|
|
625
|
-
|
|
291
|
+
### Example: List All Available Tools
|
|
626
292
|
|
|
627
293
|
```bash
|
|
628
294
|
npx -y @confluentinc/mcp-confluent --list-tools
|
|
@@ -678,340 +344,57 @@ list-tableflow-catalog-integrations: Retrieve a sorted, filtered, paginated list
|
|
|
678
344
|
read-tableflow-catalog-integration: Make a request to read a catalog integration.
|
|
679
345
|
update-tableflow-catalog-integration: Make a request to update a catalog integration.
|
|
680
346
|
delete-tableflow-catalog-integration: Make a request to delete a tableflow catalog integration.
|
|
347
|
+
list-organizations: List Confluent Cloud organizations the current credentials can see. Paginated; if the response includes a nextPageToken, pass it back as pageToken to fetch additional pages.
|
|
348
|
+
explain-disabled-tools: Call when the user asks why a tool is missing or unavailable (e.g., "why can't I list Kafka topics?", "where are the Flink tools?"). Returns disabled tools grouped by the config gap each one is waiting on, so you can tell the user the exact YAML block or field to add. Prefer this over guessing about credentials, network, or auth.
|
|
681
349
|
```
|
|
682
350
|
|
|
683
351
|
</details>
|
|
684
352
|
|
|
685
|
-
> **Tip:** The allow-list is applied before the block-list.
|
|
686
|
-
|
|
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
|
|
852
|
-
|
|
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`
|
|
854
|
-
|
|
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.**
|
|
353
|
+
> **Tip:** The allow-list is applied before the block-list.
|
|
354
|
+
> If neither is provided, all tools are enabled by default.
|
|
866
355
|
|
|
867
|
-
|
|
356
|
+
## Configuring MCP Clients
|
|
868
357
|
|
|
869
|
-
|
|
870
|
-
docker build -t mcp-server .
|
|
871
|
-
```
|
|
358
|
+
Please refer to the following guides for step-by-step instructions on setting up and using this MCP server with your preferred client:
|
|
872
359
|
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
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
|
-
```
|
|
360
|
+
- [Claude Code](docs/configuring-claude-code.md)
|
|
361
|
+
- [Claude Desktop](docs/configuring-claude-desktop.md)
|
|
362
|
+
- [Cursor](docs/configuring-cursor.md)
|
|
363
|
+
- [Gemini CLI](docs/configuring-gemini-cli.md)
|
|
364
|
+
- [Goose CLI](docs/configuring-goose-cli.md)
|
|
365
|
+
- [VS Code](docs/configuring-vs-code.md)
|
|
366
|
+
- [Windsurf](docs/configuring-windsurf.md)
|
|
998
367
|
|
|
999
368
|
## Telemetry
|
|
1000
369
|
|
|
1001
|
-
This MCP server collects
|
|
370
|
+
This MCP server collects usage data to help make improvements.
|
|
371
|
+
You can opt out by setting `DO_NOT_TRACK=true` in your environment.
|
|
372
|
+
See [telemetry.md](telemetry.md) for full details on what is collected.
|
|
1002
373
|
|
|
1003
374
|
## Troubleshooting
|
|
1004
375
|
|
|
1005
|
-
**"Node.js version not supported"** -- This project requires Node.js 22 or later.
|
|
376
|
+
**"Node.js version not supported"** -- This project requires Node.js 22 or later.
|
|
377
|
+
Check your version with `node -v` and upgrade if needed.
|
|
378
|
+
|
|
379
|
+
**Tools not appearing** -- Each tool requires specific service blocks in your `config.yaml`.
|
|
380
|
+
Run `--list-tools` to see which tools are active, or invoke the `explain-disabled-tools` MCP tool from your client for a per-tool reason.
|
|
381
|
+
The block-to-tool mapping lives in [CONFIGURATION.md](CONFIGURATION.md#tool-enablement-which-block-lights-up-what).
|
|
382
|
+
|
|
383
|
+
**Authentication errors on HTTP/SSE** -- Generate an API key with `npx @confluentinc/mcp-confluent --generate-key` and add it to your `config.yaml` under `server.auth.api_key`.
|
|
384
|
+
See [CONFIGURATION.md → HTTP/SSE transport security](CONFIGURATION.md#httpsse-transport-security).
|
|
1006
385
|
|
|
1007
|
-
**
|
|
386
|
+
**Connection refused / port conflicts** -- The default HTTP port is 8080.
|
|
387
|
+
Set `server.http.port` in your `config.yaml` to change it.
|
|
1008
388
|
|
|
1009
|
-
**
|
|
389
|
+
**Tableflow authorization errors** -- Tableflow tools require specific IAM permissions in your cloud environment.
|
|
390
|
+
See [Prerequisites & setup for Tableflow commands](#prerequisites--setup-for-tableflow-commands).
|
|
1010
391
|
|
|
1011
|
-
|
|
392
|
+
## Contributing
|
|
1012
393
|
|
|
1013
|
-
|
|
394
|
+
Bug reports and feedback is appreciated in the form of Github Issues.
|
|
395
|
+
For guidelines on contributing please see [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
1014
396
|
|
|
1015
|
-
###
|
|
397
|
+
### Pre-release testing
|
|
1016
398
|
|
|
1017
|
-
|
|
399
|
+
To run the MCP server against a pre-release version for beta testing or early feedback, download the release tarball file to a local directory.
|
|
400
|
+
Then, when running any of the `npx` commands above, replace `@confluentinc/mcp-confluent` with the path to that tarball, e.g. `npx @~path/to/my/tarball --list-tools`
|