@confluentinc/mcp-confluent 1.4.0 → 1.6.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 +57 -34
- package/config.example.yaml +36 -7
- package/config.oauth.example.yaml +14 -1
- package/dist/build-config.d.ts +1 -0
- package/dist/build-config.d.ts.map +1 -1
- package/dist/build-config.js +1 -0
- package/dist/build-config.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +128 -94
- package/dist/cli.js.map +1 -1
- package/dist/config/env-config.d.ts +9 -3
- package/dist/config/env-config.d.ts.map +1 -1
- package/dist/config/env-config.js +15 -34
- package/dist/config/env-config.js.map +1 -1
- package/dist/config/models.d.ts +105 -13
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +49 -37
- package/dist/config/models.js.map +1 -1
- package/dist/confluent/base-client-manager.d.ts +3 -1
- package/dist/confluent/base-client-manager.d.ts.map +1 -1
- package/dist/confluent/base-client-manager.js +5 -1
- package/dist/confluent/base-client-manager.js.map +1 -1
- package/dist/confluent/client-manager.d.ts +15 -1
- package/dist/confluent/client-manager.d.ts.map +1 -1
- package/dist/confluent/direct-client-manager.d.ts +1 -1
- package/dist/confluent/direct-client-manager.d.ts.map +1 -1
- package/dist/confluent/middleware.d.ts +1 -1
- package/dist/confluent/middleware.d.ts.map +1 -1
- package/dist/confluent/node-deps.d.ts +8 -0
- package/dist/confluent/node-deps.d.ts.map +1 -1
- package/dist/confluent/node-deps.js +9 -2
- package/dist/confluent/node-deps.js.map +1 -1
- package/dist/confluent/oauth/auth0-config.d.ts +26 -4
- package/dist/confluent/oauth/auth0-config.d.ts.map +1 -1
- package/dist/confluent/oauth/auth0-config.js +59 -19
- package/dist/confluent/oauth/auth0-config.js.map +1 -1
- package/dist/confluent/oauth/pkce-login.d.ts.map +1 -1
- package/dist/confluent/oauth/pkce-login.js +180 -150
- package/dist/confluent/oauth/pkce-login.js.map +1 -1
- package/dist/confluent/oauth/types.d.ts +1 -2
- package/dist/confluent/oauth/types.d.ts.map +1 -1
- package/dist/confluent/oauth-client-manager.d.ts +6 -3
- package/dist/confluent/oauth-client-manager.d.ts.map +1 -1
- package/dist/confluent/oauth-client-manager.js +28 -6
- package/dist/confluent/oauth-client-manager.js.map +1 -1
- package/dist/confluent/oauth-resource-resolvers.d.ts +11 -0
- package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -1
- package/dist/confluent/oauth-resource-resolvers.js +24 -0
- package/dist/confluent/oauth-resource-resolvers.js.map +1 -1
- package/dist/confluent/schema-registry-helper.d.ts +131 -7
- package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
- package/dist/confluent/schema-registry-helper.js +336 -40
- package/dist/confluent/schema-registry-helper.js.map +1 -1
- package/dist/confluent/schema.d.ts +2 -2
- package/dist/confluent/schema.d.ts.map +1 -1
- package/dist/confluent/sentry-redact.d.ts +5 -0
- package/dist/confluent/sentry-redact.d.ts.map +1 -0
- package/dist/confluent/sentry-redact.js +64 -0
- package/dist/confluent/sentry-redact.js.map +1 -0
- package/dist/confluent/sentry.d.ts +23 -0
- package/dist/confluent/sentry.d.ts.map +1 -0
- package/dist/confluent/sentry.js +68 -0
- package/dist/confluent/sentry.js.map +1 -0
- package/dist/confluent/tools/base-tools.d.ts +169 -24
- package/dist/confluent/tools/base-tools.d.ts.map +1 -1
- package/dist/confluent/tools/base-tools.js +225 -21
- package/dist/confluent/tools/base-tools.js.map +1 -1
- package/dist/confluent/tools/cluster-arg-resolvers.d.ts +22 -1
- package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -1
- package/dist/confluent/tools/cluster-arg-resolvers.js +50 -4
- package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -1
- package/dist/confluent/tools/connection-predicates.d.ts +70 -7
- package/dist/confluent/tools/connection-predicates.d.ts.map +1 -1
- package/dist/confluent/tools/connection-predicates.js +69 -6
- package/dist/confluent/tools/connection-predicates.js.map +1 -1
- package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +9 -3
- 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 +77 -62
- 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 +5 -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 +9 -5
- 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 +5 -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 +9 -5
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +5 -5
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.js +9 -5
- package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +6 -6
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.js +14 -6
- package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +5 -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 +9 -5
- 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 +4 -3
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +1 -1
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +8 -8
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +9 -10
- package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +2 -3
- package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +171 -100
- package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +3 -3
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +1 -2
- package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts +43 -0
- package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js +297 -0
- package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts +32 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js +116 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts +52 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-fields.js +114 -0
- package/dist/confluent/tools/handlers/diagnostics/describe-fields.js.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +22 -44
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +95 -81
- package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts +28 -0
- package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js +93 -0
- package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +9 -3
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js +68 -46
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js +2 -2
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +12 -6
- 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 +3 -3
- 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 +24 -21
- 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 +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +3 -3
- 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 +24 -21
- 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 +3 -3
- 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 +9 -7
- 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 +3 -3
- 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 -12
- 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 +3 -3
- 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 -12
- 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 +3 -3
- 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 +27 -22
- 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 +3 -3
- 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 +20 -12
- 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 +3 -3
- 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 +20 -12
- 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 +3 -3
- 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 +203 -156
- 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 +12 -8
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js +346 -377
- 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 +3 -3
- 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 +374 -317
- 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 +4 -3
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.js +133 -57
- package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +27 -6
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +37 -7
- package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +3 -3
- 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 +20 -12
- package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts +9 -0
- package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.js → get-flink-statement-results-handler.js} +30 -22
- package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts +11 -0
- package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js +118 -0
- package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +3 -3
- 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 +19 -17
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +1 -1
- 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 +21 -10
- 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 +136 -73
- 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 +4 -3
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +12 -3
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +6 -41
- package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +6 -10
- package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +1 -1
- package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +1 -1
- package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +1 -1
- package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +12 -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 +140 -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 +5 -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 +105 -60
- package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +5 -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 +75 -57
- package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/metrics/telemetry-error.d.ts +9 -0
- package/dist/confluent/tools/handlers/metrics/telemetry-error.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/metrics/telemetry-error.js +38 -0
- package/dist/confluent/tools/handlers/metrics/telemetry-error.js.map +1 -0
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +2 -1
- package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts +11 -0
- package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/schema/create-schema-handler.js +76 -0
- package/dist/confluent/tools/handlers/schema/create-schema-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +1 -1
- package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +4 -3
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +101 -72
- 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 +5 -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 +9 -5
- 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 +5 -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 +9 -5
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +1 -1
- 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 +3 -3
- 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 +1 -1
- 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 +15 -10
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +17 -14
- package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +1 -1
- package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
- package/dist/confluent/tools/pagination.d.ts +31 -0
- package/dist/confluent/tools/pagination.d.ts.map +1 -0
- package/dist/confluent/tools/pagination.js +40 -0
- package/dist/confluent/tools/pagination.js.map +1 -0
- package/dist/confluent/tools/tool-availability.d.ts +63 -32
- package/dist/confluent/tools/tool-availability.d.ts.map +1 -1
- package/dist/confluent/tools/tool-availability.js +101 -69
- package/dist/confluent/tools/tool-availability.js.map +1 -1
- package/dist/confluent/tools/tool-input-error.d.ts +17 -0
- package/dist/confluent/tools/tool-input-error.d.ts.map +1 -0
- package/dist/confluent/tools/tool-input-error.js +23 -0
- package/dist/confluent/tools/tool-input-error.js.map +1 -0
- package/dist/confluent/tools/tool-metadata-handler.d.ts +52 -0
- package/dist/confluent/tools/tool-metadata-handler.d.ts.map +1 -0
- package/dist/confluent/tools/tool-metadata-handler.js +61 -0
- package/dist/confluent/tools/tool-metadata-handler.js.map +1 -0
- package/dist/confluent/tools/tool-name.d.ts +7 -2
- package/dist/confluent/tools/tool-name.d.ts.map +1 -1
- package/dist/confluent/tools/tool-name.js +6 -1
- package/dist/confluent/tools/tool-name.js.map +1 -1
- package/dist/confluent/tools/tool-registry.d.ts +1 -1
- package/dist/confluent/tools/tool-registry.d.ts.map +1 -1
- package/dist/confluent/tools/tool-registry.js +24 -2
- package/dist/confluent/tools/tool-registry.js.map +1 -1
- package/dist/env-schema.d.ts +0 -1
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +0 -7
- package/dist/env-schema.js.map +1 -1
- package/dist/env.d.ts +1 -2
- package/dist/env.d.ts.map +1 -1
- package/dist/index.d.ts +54 -64
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +78 -324
- package/dist/index.js.map +1 -1
- package/dist/lazy.d.ts +4 -2
- package/dist/lazy.d.ts.map +1 -1
- package/dist/lazy.js +27 -12
- package/dist/lazy.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/mcp/server.d.ts +6 -4
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +19 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/transports/auth.d.ts +1 -1
- package/dist/mcp/transports/auth.d.ts.map +1 -1
- package/dist/mcp/transports/http.d.ts +3 -3
- package/dist/mcp/transports/http.d.ts.map +1 -1
- package/dist/mcp/transports/manager.d.ts +1 -1
- package/dist/mcp/transports/manager.d.ts.map +1 -1
- package/dist/mcp/transports/manager.js.map +1 -1
- package/dist/mcp/transports/ping.d.ts +1 -1
- package/dist/mcp/transports/ping.d.ts.map +1 -1
- package/dist/mcp/transports/server.d.ts +3 -3
- package/dist/mcp/transports/server.d.ts.map +1 -1
- package/dist/mcp/transports/server.js +1 -1
- package/dist/mcp/transports/server.js.map +1 -1
- package/dist/mcp/transports/sse.d.ts +3 -3
- package/dist/mcp/transports/sse.d.ts.map +1 -1
- package/dist/mcp/transports/stdio.d.ts +2 -2
- package/dist/mcp/transports/stdio.d.ts.map +1 -1
- package/dist/preflight.d.ts +33 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +68 -0
- package/dist/preflight.js.map +1 -0
- package/dist/print-md-schema.js +21 -18
- package/dist/print-md-schema.js.map +1 -1
- package/dist/server-main.d.ts +104 -0
- package/dist/server-main.d.ts.map +1 -0
- package/dist/server-main.js +410 -0
- package/dist/server-main.js.map +1 -0
- package/dist/server-runtime.d.ts +22 -7
- package/dist/server-runtime.d.ts.map +1 -1
- package/dist/server-runtime.js +45 -28
- package/dist/server-runtime.js.map +1 -1
- package/dist/utils/quote-join-ids.d.ts +9 -0
- package/dist/utils/quote-join-ids.d.ts.map +1 -0
- package/dist/utils/quote-join-ids.js +11 -0
- package/dist/utils/quote-join-ids.js.map +1 -0
- package/package.json +37 -35
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +0 -9
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +0 -1
- package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +0 -18
- package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/kafka/topic-metadata.js +0 -18
- package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +0 -1
package/README.md
CHANGED
|
@@ -6,9 +6,17 @@
|
|
|
6
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
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.
|
|
8
8
|
|
|
9
|
+
> [!TIP]
|
|
10
|
+
> **Already a Confluent Cloud customer?**
|
|
11
|
+
> Confluent offers a [fully managed MCP server](https://docs.confluent.io/cloud/current/ai/ai-tools/managed-mcp-server.html) with no local server to run and no dependencies to install.
|
|
12
|
+
> It provides access to your Confluent Cloud resources with AI-powered connector diagnostics, governed by your existing RBAC permissions.
|
|
13
|
+
> Use this open-source server if you need Confluent Platform / self-managed Kafka support, or want to customize and extend the toolset.
|
|
14
|
+
>
|
|
15
|
+
> **NOTE:** The open-source MCP server is a community-supported project. Confluent doesn’t provide dedicated support for it, and support is best-effort only, with no service level commitments. If you run into an issue or want to contribute, open an issue or pull request directly in this repository.
|
|
16
|
+
|
|
9
17
|
## Quick Start
|
|
10
18
|
|
|
11
|
-
> **Prerequisites:** [Node.js 22+](https://nodejs.org/).
|
|
19
|
+
> **Prerequisites:** [Node.js 22.19.0+](https://nodejs.org/).
|
|
12
20
|
> If you want to interact with [Confluent Cloud](https://confluent.cloud/), you need to create an account first.
|
|
13
21
|
|
|
14
22
|
1. Generate a quick `config.yaml` file in your project root:
|
|
@@ -56,10 +64,10 @@ npx -y @confluentinc/mcp-confluent --list-tools
|
|
|
56
64
|
|
|
57
65
|
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.
|
|
58
66
|
|
|
59
|
-
| Category | Tools
|
|
60
|
-
| ----------------- |
|
|
61
|
-
| **Documentation** | `search-product-docs`, `get-product-doc-page`
|
|
62
|
-
| **Diagnostics** | `explain-disabled-tools`
|
|
67
|
+
| Category | Tools | Description |
|
|
68
|
+
| ----------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
69
|
+
| **Documentation** | `search-product-docs`, `get-product-doc-page` | Search Confluent product docs and fetch full page content |
|
|
70
|
+
| **Diagnostics** | `explain-disabled-tools`, `list-configured-connections`, `config-help`, `describe-configured-connection` | Explain why tools are absent, list configured connections and the tools enabled on each, suggest the YAML to enable a specific tool, and describe one connection's config and tool availability |
|
|
63
71
|
|
|
64
72
|
### Available Tools for Confluent Cloud
|
|
65
73
|
|
|
@@ -67,24 +75,26 @@ These tools require endpoints and authentication against specific Confluent Clou
|
|
|
67
75
|
Refer to [`config.example.yaml`](config.example.yaml) for the full set of configuration variables.
|
|
68
76
|
Categories marked with ¹ also work with [OAuth authentication](#oauth-authentication-for-confluent-cloud) — sign in via your browser instead of provisioning API keys.
|
|
69
77
|
|
|
70
|
-
| Category | Tools
|
|
71
|
-
| -------------------------------------------- |
|
|
72
|
-
| **Kafka** ¹ | `list-topics`, `create-topics`, `delete-topics`, `produce-message`, `consume-messages`, `list-consumer-groups`, `describe-consumer-group`, `get-consumer-group-lag`, `alter-topic-config`, `get-topic-config`
|
|
73
|
-
| **Flink SQL**
|
|
74
|
-
| **Flink Catalog**
|
|
75
|
-
| **Flink Diagnostics**
|
|
76
|
-
| **Connectors**
|
|
77
|
-
| **Schema Registry** ¹ | `list-schemas`, `delete-schema`
|
|
78
|
-
| **Catalog & Tags**
|
|
79
|
-
| **Organizations, Environments & Clusters** ¹ | `list-organizations`, `list-environments`, `read-environment`, `list-clusters`
|
|
80
|
-
| **Tableflow**
|
|
81
|
-
| **Tableflow Catalog**
|
|
82
|
-
| **Metrics**
|
|
83
|
-
| **Billing** ¹ | `list-billing-costs`
|
|
78
|
+
| Category | Tools | Description |
|
|
79
|
+
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
80
|
+
| **Kafka** ¹ | `list-topics`, `create-topics`, `delete-topics`, `produce-message`, `consume-messages`, `list-consumer-groups`, `describe-consumer-group`, `get-consumer-group-lag`, `alter-topic-config`, `get-topic-config` | Manage topics, produce/consume messages, inspect consumer groups, configure topic settings |
|
|
81
|
+
| **Flink SQL** ¹ | `create-flink-statement`, `list-flink-statements`, `get-flink-statement-results`, `delete-flink-statements`, `get-flink-statement-exceptions`, `list-compute-pools` | Create and manage Flink SQL statements; discover Flink compute pools |
|
|
82
|
+
| **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 |
|
|
83
|
+
| **Flink Diagnostics** ¹ | `check-flink-statement-health`, `detect-flink-statement-issues`, `get-flink-statement-profile` | Health checks, issue detection, and query profiling |
|
|
84
|
+
| **Connectors** ¹ | `list-connectors`, `get-connector-config`, `get-connector-offsets`, `get-connector-status`, `get-connector-tasks`, `get-connector-error-summary`, `get-connector-error-recommendations`, `get-connector-logs`, `create-connector` ², `delete-connector`, `pause-connector`, `resume-connector`, `restart-connector`, `update-connector-config` | Inspect and manage Kafka Connect connectors |
|
|
85
|
+
| **Schema Registry** ¹ | `list-schemas`, `create-schema`, `delete-schema` | List, inspect, create, and delete data schemas |
|
|
86
|
+
| **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 |
|
|
87
|
+
| **Organizations, Environments & Clusters** ¹ | `list-organizations`, `list-environments`, `read-environment`, `list-clusters` | Discover Confluent Cloud resources |
|
|
88
|
+
| **Tableflow** ¹ | `create-tableflow-topic`, `list-tableflow-topics`, `read-tableflow-topic`, `update-tableflow-topic`, `delete-tableflow-topic`, `list-tableflow-regions` | Manage Tableflow-enabled topics |
|
|
89
|
+
| **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) |
|
|
90
|
+
| **Metrics** ¹ | `list-available-metrics`, `query-metrics` | Discover and query Confluent Cloud operational metrics |
|
|
91
|
+
| **Billing** ¹ | `list-billing-costs` | Query billing and cost data |
|
|
84
92
|
|
|
85
93
|
¹ Also available under OAuth — see [OAuth Authentication for Confluent Cloud](#oauth-authentication-for-confluent-cloud) for setup and caveats.
|
|
86
94
|
Categories not marked currently require a `direct` connection with static API keys; OAuth migration is in progress.
|
|
87
95
|
|
|
96
|
+
² Individual tool not available under OAuth; requires a `direct` connection with static API keys.
|
|
97
|
+
|
|
88
98
|
### Available Tools for local deployments
|
|
89
99
|
|
|
90
100
|
These tools only require Kafka or Schema Registry endpoints - no Confluent Cloud API key/secret is needed.
|
|
@@ -106,7 +116,7 @@ Ready-to-use variants live in [`sample_configs/`](sample_configs/).
|
|
|
106
116
|
| Category | Tools | Description |
|
|
107
117
|
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
|
|
108
118
|
| **Kafka** | `list-topics`, `create-topics`, `delete-topics`, `produce-message`, `consume-messages`, `list-consumer-groups`, `describe-consumer-group`, `get-consumer-group-lag` | Manage topics, produce/consume messages, inspect consumer groups |
|
|
109
|
-
| **Schema Registry** | `list-schemas`, `delete-schema`
|
|
119
|
+
| **Schema Registry** | `list-schemas`, `create-schema`, `delete-schema` | List, inspect, create, and delete data schemas |
|
|
110
120
|
|
|
111
121
|
## Using with Confluent Platform
|
|
112
122
|
|
|
@@ -128,7 +138,7 @@ CP clusters frequently sit behind an internal CA.
|
|
|
128
138
|
If you see TLS handshake failures against the broker or Schema Registry, point Node at your CA bundle when starting the server:
|
|
129
139
|
|
|
130
140
|
```bash
|
|
131
|
-
NODE_EXTRA_CA_CERTS=/path/to/internal-ca.pem
|
|
141
|
+
NODE_EXTRA_CA_CERTS=/path/to/internal-ca.pem pnpm run start -- --config path/to/config.yaml
|
|
132
142
|
```
|
|
133
143
|
|
|
134
144
|
### End-to-end smoke test
|
|
@@ -140,21 +150,30 @@ The matching integration tests are tagged `@cp` and live next to their handlers
|
|
|
140
150
|
docker compose -f docker-compose.cp-test.yml up -d
|
|
141
151
|
# Wait ~30s for Kafka + SR to become ready, then:
|
|
142
152
|
CP_KAFKA_USERNAME=mcp CP_KAFKA_PASSWORD=mcp-secret \
|
|
143
|
-
|
|
153
|
+
pnpm run test:integration --tags-filter=@cp
|
|
144
154
|
docker compose -f docker-compose.cp-test.yml down -v
|
|
145
155
|
```
|
|
146
156
|
|
|
147
|
-
The tests skip cleanly when those env vars are unset, so `
|
|
157
|
+
The tests skip cleanly when those env vars are unset, so `pnpm run test:unit` and a default `pnpm run test:integration` against your real Confluent Cloud account are unaffected if you don't have the docker stack running.
|
|
148
158
|
|
|
149
159
|
## Getting Started
|
|
150
160
|
|
|
151
161
|
### Prerequisites
|
|
152
162
|
|
|
153
|
-
- **Node.js 22 or later** -- we recommend using [NVM](https://github.com/nvm-sh/nvm) to manage versions:
|
|
163
|
+
- **Node.js 22.19.0 or later** -- we recommend using [NVM](https://github.com/nvm-sh/nvm) to manage versions:
|
|
154
164
|
```bash
|
|
155
165
|
nvm install 22
|
|
156
166
|
nvm use 22
|
|
157
167
|
```
|
|
168
|
+
- **[pnpm](https://pnpm.io/installation)** -- only needed to build from source (the `npx` quick start above does not require it).
|
|
169
|
+
On macOS the simplest install is Homebrew; `npm` works cross-platform:
|
|
170
|
+
```bash
|
|
171
|
+
brew install pnpm # macOS
|
|
172
|
+
# or, cross-platform:
|
|
173
|
+
npm install -g pnpm
|
|
174
|
+
```
|
|
175
|
+
See pnpm's [installation guide](https://pnpm.io/installation) for other options.
|
|
176
|
+
The exact pnpm version is pinned in the `packageManager` field of `package.json`, and pnpm automatically runs that pinned version (via its built-in package-manager version management), so a recent pnpm install is all you need -- no separate Corepack setup required.
|
|
158
177
|
- 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
178
|
|
|
160
179
|
### General Setup Steps
|
|
@@ -180,8 +199,8 @@ npx @confluentinc/mcp-confluent --init-config
|
|
|
180
199
|
3. **Start the Server:** You can run the MCP server in one of two ways:
|
|
181
200
|
- **From source:** Follow the instructions in the [Contributing Guide](CONTRIBUTING.md) to build and run the server from source.
|
|
182
201
|
This typically involves:
|
|
183
|
-
- Installing dependencies (`
|
|
184
|
-
- Building the project (`
|
|
202
|
+
- Installing dependencies (`pnpm install`)
|
|
203
|
+
- Building the project (`pnpm run build` or `pnpm run dev`)
|
|
185
204
|
- **With npx:** You can start the server directly using npx, no build required:
|
|
186
205
|
|
|
187
206
|
```bash
|
|
@@ -204,8 +223,8 @@ The full configuration reference — YAML schema, every service block, env-var i
|
|
|
204
223
|
|
|
205
224
|
> **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.
|
|
206
225
|
> The env-var-only path will emit a startup warning in a near-future release and be removed a release or two later.
|
|
207
|
-
>
|
|
208
|
-
> See [CONFIGURATION.md → Two paths, one configuration](CONFIGURATION.md#two-paths-one-configuration).
|
|
226
|
+
> Defining multiple connections (or none) is YAML-only — the env-var path can express only a single connection.
|
|
227
|
+
> See [CONFIGURATION.md → Two paths, one configuration](CONFIGURATION.md#two-paths-one-configuration) and [CONFIGURATION.md → Multiple connections (and zero connections)](CONFIGURATION.md#multiple-connections-and-zero-connections).
|
|
209
228
|
|
|
210
229
|
### Prerequisites & setup for Tableflow commands
|
|
211
230
|
|
|
@@ -383,17 +402,18 @@ flink:
|
|
|
383
402
|
detect-flink-statement-issues: Detect issues for a Flink SQL statement by analyzing status, exceptions, and performance metrics. Identifies problems...
|
|
384
403
|
get-flink-statement-exceptions: Retrieve the 10 most recent exceptions for a Flink SQL statement. Useful for diagnosing failed or failing statements.
|
|
385
404
|
get-flink-statement-profile: Get Query Profiler data for a Flink SQL statement. Returns the task graph with human-readable task/operator names, pe...
|
|
405
|
+
get-flink-statement-results: Fetch the result rows produced by a Flink SQL statement.
|
|
386
406
|
get-flink-table-info: Get table metadata via INFORMATION_SCHEMA.TABLES. Returns watermark configuration, distribution info, and table type.
|
|
407
|
+
list-compute-pools: Get the Flink compute pools in the Confluent Cloud environment. Paginated; if the response includes a nextPageToken, pas...
|
|
387
408
|
list-flink-catalogs: List all catalogs available in the Flink environment via INFORMATION_SCHEMA.CATALOGS.
|
|
388
409
|
list-flink-databases: List all databases (schemas) in a Flink catalog via INFORMATION_SCHEMA.SCHEMATA. Returns catalog and database names.
|
|
389
410
|
list-flink-statements: Retrieve a sorted, filtered, paginated list of all statements.
|
|
390
411
|
list-flink-tables: List all tables in a Flink database via INFORMATION_SCHEMA.TABLES. Returns table names and types.
|
|
391
|
-
read-flink-statement: Make a request to read a statement and its results
|
|
392
412
|
|
|
393
413
|
kafka:
|
|
394
414
|
alter-topic-config: Alter topic configuration in Confluent Cloud.
|
|
395
415
|
consume-messages: Consume messages from Kafka topics. Optionally restrict to a partition, start from an offset, timestamp, earliest, la...
|
|
396
|
-
create-topics: Create one or more Kafka topics with an optional partition count.
|
|
416
|
+
create-topics: Create one or more Kafka topics with an optional partition count and replication factor.
|
|
397
417
|
delete-topics: Delete the topic with the given names.
|
|
398
418
|
describe-consumer-group: Describe a single consumer group on a Kafka cluster. Returns the group's state, type, protocol, partition assignor, c...
|
|
399
419
|
get-consumer-group-lag: Compute live offset lag for a single Kafka consumer group. Returns per-(topic, partition) {committedOffset, highWater...
|
|
@@ -404,13 +424,16 @@ kafka:
|
|
|
404
424
|
produce-message: Produce records to a Kafka topic. Supports Confluent Schema Registry serialization (AVRO, JSON, PROTOBUF) for both ke...
|
|
405
425
|
|
|
406
426
|
mcp-server-diagnostics:
|
|
427
|
+
config-help: Call when the user wants to enable or unlock a specific tool (e.g. "how do I enable the tableflow tools?", "what config does cr...
|
|
407
428
|
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 ...
|
|
429
|
+
list-configured-connections: List every configured connection and the connection-routable tools you can invoke against each. The connection id (th...
|
|
408
430
|
|
|
409
431
|
metrics:
|
|
410
432
|
list-available-metrics: List available Confluent Cloud metrics and their filter fields from the Telemetry API. Use this tool BEFORE query-met...
|
|
411
433
|
query-metrics: Query Confluent Cloud metrics from the Telemetry API. IMPORTANT: Use the list-available-metrics tool first to discove...
|
|
412
434
|
|
|
413
435
|
schema-registry:
|
|
436
|
+
create-schema: Register a new schema (or a new version of an existing schema) under a subject in the Schema Registry.
|
|
414
437
|
delete-schema: Delete a schema subject or a specific version from the Schema Registry. If version is omitted, all versions of the su...
|
|
415
438
|
list-schemas: List all schemas in the Schema Registry.
|
|
416
439
|
|
|
@@ -448,13 +471,13 @@ Please refer to the following guides for step-by-step instructions on setting up
|
|
|
448
471
|
|
|
449
472
|
## Telemetry
|
|
450
473
|
|
|
451
|
-
This MCP server collects usage data to help make improvements.
|
|
452
|
-
You can opt out by setting `DO_NOT_TRACK=true` in your environment.
|
|
453
|
-
See [telemetry.md](telemetry.md) for full details on what is collected.
|
|
474
|
+
This MCP server collects usage data and reports server-side runtime errors (via [Sentry](https://sentry.io)) to help make improvements.
|
|
475
|
+
You can opt out of both by setting `DO_NOT_TRACK=true` in your environment (or `server.do_not_track: true` in YAML).
|
|
476
|
+
See [telemetry.md](telemetry.md) for full details on what is collected and what is never sent.
|
|
454
477
|
|
|
455
478
|
## Troubleshooting
|
|
456
479
|
|
|
457
|
-
**"Node.js version not supported"** -- This project requires Node.js 22 or later.
|
|
480
|
+
**"Node.js version not supported"** -- This project requires Node.js 22.19.0 or later.
|
|
458
481
|
Check your version with `node -v` and upgrade if needed.
|
|
459
482
|
|
|
460
483
|
**Tools not appearing** -- Each tool requires specific service blocks in your `config.yaml`.
|
package/config.example.yaml
CHANGED
|
@@ -8,9 +8,11 @@
|
|
|
8
8
|
# rather than the YAML itself. Plain literal values are also fine when you do
|
|
9
9
|
# not need interpolation.
|
|
10
10
|
#
|
|
11
|
-
# Each
|
|
12
|
-
#
|
|
13
|
-
#
|
|
11
|
+
# Each service block under a `direct` connection (`kafka`, `schema_registry`,
|
|
12
|
+
# `confluent_cloud`, `flink`, `tableflow`, `telemetry`) is independently
|
|
13
|
+
# optional; remove the ones you do not need, but at least one must remain. An
|
|
14
|
+
# `oauth` connection carries no service blocks — see the commented-out example
|
|
15
|
+
# at the end of this file.
|
|
14
16
|
|
|
15
17
|
# --- Server ---
|
|
16
18
|
# MCP server transport, authentication, and logging settings.
|
|
@@ -64,13 +66,26 @@ server:
|
|
|
64
66
|
# disabled: true
|
|
65
67
|
|
|
66
68
|
connections:
|
|
67
|
-
# Connection
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
69
|
+
# Connection id is freeform. A config may define several connections
|
|
70
|
+
# and route each tool call to one by id — and may mix api-key (`direct`)
|
|
71
|
+
# connections with at most one browser-login (`oauth`) connection. See the
|
|
72
|
+
# commented-out OAuth connection at the end of this file.
|
|
71
73
|
default:
|
|
72
74
|
type: direct
|
|
73
75
|
|
|
76
|
+
# Optional human-readable label for this connection, echoed back by the
|
|
77
|
+
# `list-configured-connections` tool so an agent can tell your connections apart.
|
|
78
|
+
# A blank value is treated as no description.
|
|
79
|
+
description: "Primary Confluent Cloud connection"
|
|
80
|
+
|
|
81
|
+
# Read-only policy (default false). With `read_only: true`, every tool that
|
|
82
|
+
# mutates state is auto-disabled for this connection — only read-only tools
|
|
83
|
+
# stay enabled (a tool's posture comes from its `readOnlyHint` annotation).
|
|
84
|
+
# Use it to hand an agent a staging/prod connection while keeping full
|
|
85
|
+
# read/write on a dev one. Left at the default here so this connection
|
|
86
|
+
# stays read/write:
|
|
87
|
+
# read_only: true
|
|
88
|
+
|
|
74
89
|
# --- Kafka ---
|
|
75
90
|
# `bootstrap_servers` is required for any Kafka client (admin, producer,
|
|
76
91
|
# consumer). `rest_endpoint` + `cluster_id` + `env_id` are required for
|
|
@@ -147,3 +162,17 @@ connections:
|
|
|
147
162
|
# type: api_key
|
|
148
163
|
# key: "${TELEMETRY_API_KEY}"
|
|
149
164
|
# secret: "${TELEMETRY_API_SECRET}"
|
|
165
|
+
|
|
166
|
+
# --- OAuth connection (browser login instead of API keys) ---
|
|
167
|
+
# A config may pair any number of `direct` connections like the one above with
|
|
168
|
+
# at most one `oauth` connection. Uncomment to add one: on the first tool call
|
|
169
|
+
# needing Confluent Cloud access, the server opens the CCloud sign-in page
|
|
170
|
+
# (PKCE) and reuses that session for the rest of the process — no API keys to
|
|
171
|
+
# provision. OAuth connections carry no service blocks; resource IDs
|
|
172
|
+
# (cluster_id, environment_id, ...) are passed as tool arguments at call time.
|
|
173
|
+
# Not every tool is OAuth-eligible yet (see CONFIGURATION.md → Authentication
|
|
174
|
+
# modes). For an OAuth-only starter, run `--init-oauth-config` instead.
|
|
175
|
+
# ccloud:
|
|
176
|
+
# type: oauth
|
|
177
|
+
# description: "Confluent Cloud (OAuth login)"
|
|
178
|
+
# # read_only: true
|
|
@@ -32,11 +32,24 @@
|
|
|
32
32
|
# # disabled: true
|
|
33
33
|
|
|
34
34
|
connections:
|
|
35
|
-
# Connection
|
|
35
|
+
# Connection id is freeform. The `type: oauth` declaration is the only
|
|
36
36
|
# required field.
|
|
37
37
|
ccloud-oauth:
|
|
38
38
|
type: oauth
|
|
39
39
|
|
|
40
|
+
# Optional human-readable label for this connection, echoed back by the
|
|
41
|
+
# `list-configured-connections` tool so an agent can tell your connections apart.
|
|
42
|
+
# A blank value is treated as no description.
|
|
43
|
+
description: "Confluent Cloud (OAuth login)"
|
|
44
|
+
|
|
45
|
+
# Read-only policy (default false). With `read_only: true`, every tool that
|
|
46
|
+
# mutates state is auto-disabled for this connection — only read-only tools
|
|
47
|
+
# stay enabled (a tool's posture comes from its `readOnlyHint` annotation,
|
|
48
|
+
# so there is nothing to configure per-tool). This is the recommended
|
|
49
|
+
# posture for pointing an agent at a production Cloud login while keeping
|
|
50
|
+
# full read/write on a dev connection. Uncomment to lock this one down:
|
|
51
|
+
# read_only: true
|
|
52
|
+
|
|
40
53
|
# librdkafka `debug` contexts to emit on stderr for this OAuth connection's
|
|
41
54
|
# native Kafka client. Reach for it when an OAuth/OAUTHBEARER SASL handshake
|
|
42
55
|
# misbehaves and you need to see which side broke — works the same in
|
package/dist/build-config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,UAAU,KAAK,CAAC"}
|
package/dist/build-config.js
CHANGED
package/dist/build-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-config.js","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"build-config.js","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ToolName } from "./confluent/tools/tool-name.js";
|
|
2
2
|
import { TransportType } from "./mcp/transports/types.js";
|
|
3
|
-
import { KeyValuePairObject } from "properties-file";
|
|
3
|
+
import type { KeyValuePairObject } from "properties-file";
|
|
4
4
|
/**
|
|
5
5
|
* Thrown when Commander has already printed help or version text and the process
|
|
6
6
|
* should exit cleanly (code 0). Callers catch this to call process.exit(0)
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1D;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;;CAKxD;AAGD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAiRD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmBvD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBtE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,GACnB,QAAQ,EAAE,CAmBZ;AA6CD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAexE"}
|
package/dist/cli.js
CHANGED
|
@@ -73,6 +73,47 @@ function readFileLines(filePath) {
|
|
|
73
73
|
.filter((line) => line && !line.startsWith("#"));
|
|
74
74
|
return lines;
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Enforces the three post-parse mutual-exclusivity rules not already covered by
|
|
78
|
+
* `assertNoConfigConflicts` (which handles `--config`'s exclusivity with
|
|
79
|
+
* `--transport`, `--disable-auth`, `--allowed-hosts`, and `--kafka-config-file`).
|
|
80
|
+
*/
|
|
81
|
+
function assertNoMutuallyExclusiveOptions(opts) {
|
|
82
|
+
if (opts.ccloudEnv && !opts.oauth) {
|
|
83
|
+
throw new Error("--ccloud-env requires --oauth");
|
|
84
|
+
}
|
|
85
|
+
if (opts.oauth && opts.config) {
|
|
86
|
+
throw new Error("--oauth and --config cannot be combined: declare OAuth as a connection inside the YAML (type: oauth) instead of passing --oauth");
|
|
87
|
+
}
|
|
88
|
+
if (opts.initConfig && opts.initOauthConfig) {
|
|
89
|
+
throw new Error("--init-config and --init-oauth-config are mutually exclusive: pick one template to bootstrap.");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolves the shared allow/block-list precedence: an inline CLI value wins,
|
|
94
|
+
* otherwise fall back to reading the file, otherwise undefined.
|
|
95
|
+
*/
|
|
96
|
+
function resolveToolList(inlineValue, fileValue) {
|
|
97
|
+
if (inlineValue) {
|
|
98
|
+
return parseToolList(inlineValue);
|
|
99
|
+
}
|
|
100
|
+
if (fileValue) {
|
|
101
|
+
return readFileLines(fileValue);
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Translates a Commander parse failure into `DisplayedCommandLineUsageError`
|
|
107
|
+
* when Commander already printed help/version text, otherwise rethrows as-is.
|
|
108
|
+
*/
|
|
109
|
+
function rethrowCommanderError(error) {
|
|
110
|
+
if (error instanceof CommanderError &&
|
|
111
|
+
(error.code === "commander.helpDisplayed" ||
|
|
112
|
+
error.code === "commander.version")) {
|
|
113
|
+
throw new DisplayedCommandLineUsageError();
|
|
114
|
+
}
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
76
117
|
function assertNoConfigConflicts(config, kafkaConfigFile, disableAuth, allowedHosts, transportExplicitlySet) {
|
|
77
118
|
if (!config)
|
|
78
119
|
return;
|
|
@@ -94,21 +135,12 @@ function assertNoConfigConflicts(config, kafkaConfigFile, disableAuth, allowedHo
|
|
|
94
135
|
}
|
|
95
136
|
}
|
|
96
137
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* 1. Will dereference and parse named files for tool allow/block lists.
|
|
101
|
-
* 2. Will parse the kafka config properties file into an object.
|
|
102
|
-
*
|
|
103
|
-
* Does NOT load environment variables from the env file, nor does it load or
|
|
104
|
-
* validate the YAML configuration file.
|
|
105
|
-
*
|
|
106
|
-
* @param argv - Array of command line arguments (e.g., process.argv)
|
|
107
|
-
* @returns Structured CLIOptions object with parsed and validated values.
|
|
108
|
-
* @throws Error if CLI arguments are invalid, if specified files cannot be read, or if file contents are malformed.
|
|
138
|
+
* Builds the Commander program definition (name, description, all options).
|
|
139
|
+
* Split out from `parseCliArgs` purely so `ParsedCliOptions` below can be
|
|
140
|
+
* derived from its return type instead of hand-duplicated.
|
|
109
141
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
142
|
+
function buildProgram() {
|
|
143
|
+
return new Command()
|
|
112
144
|
.name("mcp-confluent")
|
|
113
145
|
.description("Confluent MCP Server - Model Context Protocol implementation for Confluent Cloud")
|
|
114
146
|
.version(getPackageVersion())
|
|
@@ -133,67 +165,60 @@ export function parseCliArgs(argv) {
|
|
|
133
165
|
.addOption(new Option("--ccloud-env <env>", "Override the Auth0 environment for --oauth (devel/stag/prod). Defaults to prod when omitted.").choices(["devel", "stag", "prod"]))
|
|
134
166
|
.allowExcessArguments(false)
|
|
135
167
|
.exitOverride();
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Maps Commander's parsed options to the CLIOptions shape returned by
|
|
171
|
+
* `parseCliArgs`, applying the allow/block tool-list precedence and the
|
|
172
|
+
* optional-field coercions the CLI contract requires.
|
|
173
|
+
*/
|
|
174
|
+
function optsToCliOptions(opts) {
|
|
175
|
+
return {
|
|
176
|
+
envFile: opts.envFile,
|
|
177
|
+
config: opts.config,
|
|
178
|
+
transports: Array.isArray(opts.transport)
|
|
179
|
+
? opts.transport
|
|
180
|
+
: [opts.transport],
|
|
181
|
+
allowTools: resolveToolList(opts.allowTools, opts.allowToolsFile),
|
|
182
|
+
blockTools: resolveToolList(opts.blockTools, opts.blockToolsFile),
|
|
183
|
+
listTools: !!opts.listTools,
|
|
184
|
+
kafkaConfig: opts.kafkaConfigFile
|
|
185
|
+
? parsePropertiesFile(opts.kafkaConfigFile)
|
|
186
|
+
: undefined,
|
|
187
|
+
disableAuth: opts.disableAuth ? true : undefined,
|
|
188
|
+
allowedHosts: opts.allowedHosts
|
|
189
|
+
? opts.allowedHosts.split(",").map((h) => h.trim().toLowerCase())
|
|
190
|
+
: undefined,
|
|
191
|
+
generateKey: !!opts.generateKey,
|
|
192
|
+
initConfig: !!opts.initConfig,
|
|
193
|
+
initOauthConfig: !!opts.initOauthConfig,
|
|
194
|
+
oauth: opts.oauth,
|
|
195
|
+
ccloudEnv: opts.ccloudEnv,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Parse command line arguments into a structured CLIOptions object.
|
|
200
|
+
*
|
|
201
|
+
* Only minimally interprets the raw CLI input in order to populate CLIOptions:
|
|
202
|
+
* 1. Will dereference and parse named files for tool allow/block lists.
|
|
203
|
+
* 2. Will parse the kafka config properties file into an object.
|
|
204
|
+
*
|
|
205
|
+
* Does NOT load environment variables from the env file, nor does it load or
|
|
206
|
+
* validate the YAML configuration file.
|
|
207
|
+
*
|
|
208
|
+
* @param argv - Array of command line arguments (e.g., process.argv)
|
|
209
|
+
* @returns Structured CLIOptions object with parsed and validated values.
|
|
210
|
+
* @throws Error if CLI arguments are invalid, if specified files cannot be read, or if file contents are malformed.
|
|
211
|
+
*/
|
|
212
|
+
export function parseCliArgs(argv) {
|
|
213
|
+
const program = buildProgram();
|
|
136
214
|
try {
|
|
137
215
|
const opts = program.parse(argv).opts();
|
|
138
216
|
assertNoConfigConflicts(opts.config, opts.kafkaConfigFile, opts.disableAuth, opts.allowedHosts, program.getOptionValueSource("transport") === "cli");
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
if (opts.oauth && opts.config) {
|
|
143
|
-
throw new Error("--oauth and --config cannot be combined: declare OAuth as a connection inside the YAML (type: oauth) instead of passing --oauth");
|
|
144
|
-
}
|
|
145
|
-
if (opts.initConfig && opts.initOauthConfig) {
|
|
146
|
-
throw new Error("--init-config and --init-oauth-config are mutually exclusive: pick one template to bootstrap.");
|
|
147
|
-
}
|
|
148
|
-
// Precedence: CLI > file > undefined
|
|
149
|
-
let allowTools = undefined;
|
|
150
|
-
let blockTools = undefined;
|
|
151
|
-
if (opts.allowTools) {
|
|
152
|
-
allowTools = parseToolList(opts.allowTools);
|
|
153
|
-
}
|
|
154
|
-
else if (opts.allowToolsFile) {
|
|
155
|
-
allowTools = readFileLines(opts.allowToolsFile);
|
|
156
|
-
}
|
|
157
|
-
if (opts.blockTools) {
|
|
158
|
-
blockTools = parseToolList(opts.blockTools);
|
|
159
|
-
}
|
|
160
|
-
else if (opts.blockToolsFile) {
|
|
161
|
-
blockTools = readFileLines(opts.blockToolsFile);
|
|
162
|
-
}
|
|
163
|
-
return {
|
|
164
|
-
envFile: opts.envFile,
|
|
165
|
-
config: opts.config,
|
|
166
|
-
transports: Array.isArray(opts.transport)
|
|
167
|
-
? opts.transport
|
|
168
|
-
: [opts.transport],
|
|
169
|
-
allowTools,
|
|
170
|
-
blockTools,
|
|
171
|
-
listTools: !!opts.listTools,
|
|
172
|
-
kafkaConfig: opts.kafkaConfigFile
|
|
173
|
-
? parsePropertiesFile(opts.kafkaConfigFile)
|
|
174
|
-
: undefined,
|
|
175
|
-
disableAuth: opts.disableAuth ? true : undefined,
|
|
176
|
-
allowedHosts: opts.allowedHosts
|
|
177
|
-
? opts.allowedHosts
|
|
178
|
-
.split(",")
|
|
179
|
-
.map((h) => h.trim().toLowerCase())
|
|
180
|
-
: undefined,
|
|
181
|
-
generateKey: !!opts.generateKey,
|
|
182
|
-
initConfig: !!opts.initConfig,
|
|
183
|
-
initOauthConfig: !!opts.initOauthConfig,
|
|
184
|
-
oauth: opts.oauth,
|
|
185
|
-
ccloudEnv: opts.ccloudEnv,
|
|
186
|
-
};
|
|
217
|
+
assertNoMutuallyExclusiveOptions(opts);
|
|
218
|
+
return optsToCliOptions(opts);
|
|
187
219
|
}
|
|
188
220
|
catch (error) {
|
|
189
|
-
|
|
190
|
-
(error.code === "commander.helpDisplayed" ||
|
|
191
|
-
error.code === "commander.version")) {
|
|
192
|
-
// Help or version was displayed, signal to main() to exit(0).
|
|
193
|
-
throw new DisplayedCommandLineUsageError();
|
|
194
|
-
}
|
|
195
|
-
// throw anything else as back to main() unchanged.
|
|
196
|
-
throw error;
|
|
221
|
+
rethrowCommanderError(error);
|
|
197
222
|
}
|
|
198
223
|
}
|
|
199
224
|
/**
|
|
@@ -256,34 +281,43 @@ export function loadDotEnvFile(envFile) {
|
|
|
256
281
|
* @returns An alphabetically sorted array of enabled ToolNames.
|
|
257
282
|
*/
|
|
258
283
|
export function getFilteredToolNames(allowTools, blockTools) {
|
|
259
|
-
let filteredToolNames = new Set(Object.values(ToolName));
|
|
260
284
|
const validToolNames = new Set(Object.values(ToolName));
|
|
261
|
-
if (
|
|
262
|
-
(!blockTools || blockTools.length === 0)) {
|
|
285
|
+
if (allowTools.length === 0 && blockTools.length === 0) {
|
|
263
286
|
logger.info("No allow/block tool lists provided; all tools are enabled by default.");
|
|
264
287
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
288
|
+
const filteredToolNames = allowTools.length > 0
|
|
289
|
+
? applyAllowList(allowTools, validToolNames)
|
|
290
|
+
: new Set(validToolNames);
|
|
291
|
+
if (blockTools.length > 0) {
|
|
292
|
+
applyBlockList(filteredToolNames, blockTools, validToolNames);
|
|
293
|
+
}
|
|
294
|
+
return Array.from(filteredToolNames).sort((a, b) => a.localeCompare(b));
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Narrows `allowTools` to the set of valid `ToolName`s, warning about any
|
|
298
|
+
* unrecognized names rather than rejecting the whole list.
|
|
299
|
+
*/
|
|
300
|
+
function applyAllowList(allowTools, validToolNames) {
|
|
301
|
+
const valid = allowTools.filter((t) => validToolNames.has(t));
|
|
302
|
+
const invalid = allowTools.filter((t) => !validToolNames.has(t));
|
|
303
|
+
if (invalid.length > 0) {
|
|
304
|
+
logger.warn(`Ignoring invalid tool names in allow list: ${invalid.join(", ")}`);
|
|
305
|
+
}
|
|
306
|
+
return new Set(valid.map((t) => t));
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Removes `blockTools`' valid `ToolName`s from `current` in place, warning
|
|
310
|
+
* about any unrecognized names rather than rejecting the whole list.
|
|
311
|
+
*/
|
|
312
|
+
function applyBlockList(current, blockTools, validToolNames) {
|
|
313
|
+
const validBlock = new Set(blockTools.filter((t) => validToolNames.has(t)));
|
|
314
|
+
const invalidBlock = blockTools.filter((t) => !validToolNames.has(t));
|
|
315
|
+
if (invalidBlock.length > 0) {
|
|
316
|
+
logger.warn(`Ignoring invalid tool names in block list: ${invalidBlock.join(", ")}`);
|
|
317
|
+
}
|
|
318
|
+
for (const tool of validBlock) {
|
|
319
|
+
current.delete(tool);
|
|
284
320
|
}
|
|
285
|
-
// Convert to array, sort, return.
|
|
286
|
-
return Array.from(filteredToolNames).sort();
|
|
287
321
|
}
|
|
288
322
|
/**
|
|
289
323
|
* Loads configuration from a properties file
|