@confluentinc/mcp-confluent 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +277 -25
- package/dist/cli.d.ts +42 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +203 -30
- package/dist/cli.js.map +1 -1
- package/dist/confluent/client-manager.d.ts +31 -11
- package/dist/confluent/client-manager.d.ts.map +1 -1
- package/dist/confluent/client-manager.js +76 -32
- package/dist/confluent/client-manager.js.map +1 -1
- package/dist/confluent/helpers.d.ts +2 -2
- package/dist/confluent/helpers.d.ts.map +1 -1
- package/dist/confluent/helpers.js +1 -1
- package/dist/confluent/helpers.js.map +1 -1
- package/dist/confluent/middleware.d.ts +12 -11
- package/dist/confluent/middleware.d.ts.map +1 -1
- package/dist/confluent/middleware.js +6 -37
- package/dist/confluent/middleware.js.map +1 -1
- package/dist/confluent/schema-registry-helper.d.ts +134 -0
- package/dist/confluent/schema-registry-helper.d.ts.map +1 -0
- package/dist/confluent/schema-registry-helper.js +202 -0
- package/dist/confluent/schema-registry-helper.js.map +1 -0
- package/dist/confluent/schema.d.ts.map +1 -1
- package/dist/confluent/schema.js +1 -3
- package/dist/confluent/schema.js.map +1 -1
- package/dist/confluent/tools/base-tools.d.ts +43 -2
- package/dist/confluent/tools/base-tools.d.ts.map +1 -1
- package/dist/confluent/tools/base-tools.js +17 -0
- package/dist/confluent/tools/base-tools.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +3 -0
- 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 -1
- 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 +3 -0
- 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 -1
- package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +3 -0
- package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.js +7 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +3 -0
- package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.js +7 -1
- package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
- package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +3 -0
- 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 -1
- 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 +31 -28
- 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 -4
- package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +3 -0
- package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler.js +12 -1
- 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 -0
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +7 -1
- package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +3 -0
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +7 -1
- package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +3 -0
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +7 -1
- package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +19 -16
- package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/list-environments-handler.js +11 -4
- 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 -0
- package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js +11 -4
- package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +3 -0
- 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 +9 -3
- 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 -0
- 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 +7 -1
- package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +3 -0
- 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 +9 -3
- 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 +3 -0
- 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 +7 -1
- 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 -0
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +7 -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 +117 -0
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +177 -0
- package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +2 -0
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +4 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +2 -0
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +3 -0
- package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +16 -0
- package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -0
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js +67 -0
- package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -0
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +2 -0
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +3 -0
- 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 +30 -0
- 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 +117 -7
- package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +2 -0
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
- package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +98 -24
- 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 +3 -0
- 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 -1
- 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 +3 -0
- 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 -1
- package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
- package/dist/confluent/tools/tool-factory.d.ts.map +1 -1
- package/dist/confluent/tools/tool-factory.js +8 -4
- package/dist/confluent/tools/tool-factory.js.map +1 -1
- package/dist/confluent/tools/tool-name.d.ts +3 -1
- package/dist/confluent/tools/tool-name.d.ts.map +1 -1
- package/dist/confluent/tools/tool-name.js +2 -0
- package/dist/confluent/tools/tool-name.js.map +1 -1
- package/dist/env-schema.d.ts +40 -30
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +36 -12
- package/dist/env-schema.js.map +1 -1
- package/dist/env.d.ts +12 -9
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +7 -7
- package/dist/env.js.map +1 -1
- package/dist/index.js +96 -28
- package/dist/index.js.map +1 -1
- package/dist/lazy.d.ts.map +1 -1
- package/dist/lazy.js +7 -6
- package/dist/lazy.js.map +1 -1
- package/dist/logger.d.ts +14 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +65 -0
- package/dist/logger.js.map +1 -0
- package/dist/mcp/transports/http.d.ts +12 -0
- package/dist/mcp/transports/http.d.ts.map +1 -0
- package/dist/mcp/transports/http.js +127 -0
- package/dist/mcp/transports/http.js.map +1 -0
- package/dist/mcp/transports/index.d.ts +7 -0
- package/dist/mcp/transports/index.d.ts.map +1 -0
- package/dist/mcp/transports/index.js +7 -0
- package/dist/mcp/transports/index.js.map +1 -0
- package/dist/mcp/transports/manager.d.ts +12 -0
- package/dist/mcp/transports/manager.d.ts.map +1 -0
- package/dist/mcp/transports/manager.js +86 -0
- package/dist/mcp/transports/manager.js.map +1 -0
- package/dist/mcp/transports/server.d.ts +12 -0
- package/dist/mcp/transports/server.d.ts.map +1 -0
- package/dist/mcp/transports/server.js +87 -0
- package/dist/mcp/transports/server.js.map +1 -0
- package/dist/mcp/transports/sse.d.ts +12 -0
- package/dist/mcp/transports/sse.d.ts.map +1 -0
- package/dist/mcp/transports/sse.js +110 -0
- package/dist/mcp/transports/sse.js.map +1 -0
- package/dist/mcp/transports/stdio.d.ts +9 -0
- package/dist/mcp/transports/stdio.d.ts.map +1 -0
- package/dist/mcp/transports/stdio.js +17 -0
- package/dist/mcp/transports/stdio.js.map +1 -0
- package/dist/mcp/transports/types.d.ts +14 -0
- package/dist/mcp/transports/types.d.ts.map +1 -0
- package/dist/mcp/transports/types.js +7 -0
- package/dist/mcp/transports/types.js.map +1 -0
- package/dist/print-md-schema.d.ts +5 -0
- package/dist/print-md-schema.d.ts.map +1 -1
- package/dist/print-md-schema.js +6 -0
- package/dist/print-md-schema.js.map +1 -1
- package/package.json +31 -18
- package/dist/confluent/tools/handlers/catalog/add-tag-to-topic.d.ts +0 -8
- package/dist/confluent/tools/handlers/catalog/add-tag-to-topic.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/catalog/add-tag-to-topic.js +0 -47
- package/dist/confluent/tools/handlers/catalog/add-tag-to-topic.js.map +0 -1
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic copy.d.ts +0 -8
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic copy.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic copy.js +0 -47
- package/dist/confluent/tools/handlers/catalog/add-tags-to-topic copy.js.map +0 -1
- package/dist/confluent/tools/handlers/catalog/create-topic-tags copy.d.ts +0 -8
- package/dist/confluent/tools/handlers/catalog/create-topic-tags copy.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/catalog/create-topic-tags copy.js +0 -52
- package/dist/confluent/tools/handlers/catalog/create-topic-tags copy.js.map +0 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag copy.d.ts +0 -8
- package/dist/confluent/tools/handlers/catalog/delete-tag copy.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag copy.js +0 -42
- package/dist/confluent/tools/handlers/catalog/delete-tag copy.js.map +0 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag-for-entity.d.ts +0 -8
- package/dist/confluent/tools/handlers/catalog/delete-tag-for-entity.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/catalog/delete-tag-for-entity.js +0 -56
- package/dist/confluent/tools/handlers/catalog/delete-tag-for-entity.js.map +0 -1
- package/dist/confluent/tools/handlers/catalog/list-.d.ts +0 -8
- package/dist/confluent/tools/handlers/catalog/list-.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/catalog/list-.js +0 -35
- package/dist/confluent/tools/handlers/catalog/list-.js.map +0 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler copy.d.ts +0 -8
- package/dist/confluent/tools/handlers/connect/create-connector-handler copy.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/connect/create-connector-handler copy.js +0 -84
- package/dist/confluent/tools/handlers/connect/create-connector-handler copy.js.map +0 -1
- package/dist/confluent/tools/handlers/entity/create-tags-for-topics.d.ts +0 -8
- package/dist/confluent/tools/handlers/entity/create-tags-for-topics.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/entity/create-tags-for-topics.js +0 -52
- package/dist/confluent/tools/handlers/entity/create-tags-for-topics.js.map +0 -1
- package/dist/confluent/tools/handlers/entity/create-topic-tags.d.ts +0 -8
- package/dist/confluent/tools/handlers/entity/create-topic-tags.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/entity/create-topic-tags.js +0 -52
- package/dist/confluent/tools/handlers/entity/create-topic-tags.js.map +0 -1
- package/dist/confluent/tools/handlers/entity/create-topicc-tags.d.ts +0 -8
- package/dist/confluent/tools/handlers/entity/create-topicc-tags.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/entity/create-topicc-tags.js +0 -52
- package/dist/confluent/tools/handlers/entity/create-topicc-tags.js.map +0 -1
- package/dist/confluent/tools/handlers/entity/create-topics-tags.d.ts +0 -8
- package/dist/confluent/tools/handlers/entity/create-topics-tags.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/entity/create-topics-tags.js +0 -52
- package/dist/confluent/tools/handlers/entity/create-topics-tags.js.map +0 -1
- package/dist/confluent/tools/handlers/entity/topics-with-tags-handler copy.d.ts +0 -8
- package/dist/confluent/tools/handlers/entity/topics-with-tags-handler copy.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/entity/topics-with-tags-handler copy.js +0 -39
- package/dist/confluent/tools/handlers/entity/topics-with-tags-handler copy.js.map +0 -1
- package/dist/confluent/tools/handlers/entity/topics-with-tags-handler.d.ts +0 -8
- package/dist/confluent/tools/handlers/entity/topics-with-tags-handler.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/entity/topics-with-tags-handler.js +0 -39
- package/dist/confluent/tools/handlers/entity/topics-with-tags-handler.js.map +0 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config copy.d.ts +0 -14
- package/dist/confluent/tools/handlers/kafka/alter-topic-config copy.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/kafka/alter-topic-config copy.js +0 -61
- package/dist/confluent/tools/handlers/kafka/alter-topic-config copy.js.map +0 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler copy.d.ts +0 -8
- package/dist/confluent/tools/handlers/kafka/create-topics-handler copy.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/kafka/create-topics-handler copy.js +0 -28
- package/dist/confluent/tools/handlers/kafka/create-topics-handler copy.js.map +0 -1
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler copy.d.ts +0 -8
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler copy.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler copy.js +0 -45
- package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler copy.js.map +0 -1
- package/dist/confluent/tools/handlers/search/topics-with-tags-handler.d.ts +0 -8
- package/dist/confluent/tools/handlers/search/topics-with-tags-handler.d.ts.map +0 -1
- package/dist/confluent/tools/handlers/search/topics-with-tags-handler.js +0 -39
- package/dist/confluent/tools/handlers/search/topics-with-tags-handler.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,70 @@
|
|
|
1
|
-
import { Command } from "@commander-js/extra-typings";
|
|
1
|
+
import { Command, CommanderError, Option } from "@commander-js/extra-typings";
|
|
2
|
+
import { ToolName } from "./confluent/tools/tool-name.js";
|
|
3
|
+
import { logger } from "./logger.js";
|
|
4
|
+
import { TransportType } from "./mcp/transports/types.js";
|
|
2
5
|
import * as dotenv from "dotenv";
|
|
3
6
|
import fs from "fs";
|
|
4
7
|
import path from "path";
|
|
8
|
+
import { getProperties } from "properties-file";
|
|
9
|
+
import pkg from "../package.json" with { type: "json" };
|
|
10
|
+
/**
|
|
11
|
+
* Get the package version from package.json
|
|
12
|
+
* @returns Package version string
|
|
13
|
+
*/
|
|
14
|
+
export function getPackageVersion() {
|
|
15
|
+
return pkg.version;
|
|
16
|
+
}
|
|
17
|
+
function parseTransportList(value) {
|
|
18
|
+
// Split, trim, and filter out empty strings
|
|
19
|
+
const types = value
|
|
20
|
+
.split(",")
|
|
21
|
+
.map((type) => type.trim())
|
|
22
|
+
.filter(Boolean);
|
|
23
|
+
// Validate each transport type
|
|
24
|
+
const validTypes = new Set(Object.values(TransportType));
|
|
25
|
+
const invalidTypes = types.filter((type) => !validTypes.has(type));
|
|
26
|
+
if (invalidTypes.length > 0) {
|
|
27
|
+
throw new Error(`Invalid transport type(s): ${invalidTypes.join(", ")}. Valid options: ${Array.from(validTypes).join(", ")}`);
|
|
28
|
+
}
|
|
29
|
+
// Deduplicate using Set
|
|
30
|
+
return Array.from(new Set(types));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parses a comma-separated list of tool names and returns an array of valid tool names.
|
|
34
|
+
* Trims whitespace from each tool name.
|
|
35
|
+
* Exits the process with an error if any invalid tool names are provided.
|
|
36
|
+
*
|
|
37
|
+
* @param value - Comma-separated list of tool names
|
|
38
|
+
* @returns Array of valid tool names
|
|
39
|
+
*/
|
|
40
|
+
function parseToolList(value) {
|
|
41
|
+
return (value
|
|
42
|
+
.split(",")
|
|
43
|
+
.map((t) => t.trim())
|
|
44
|
+
// Filter out any empty strings that may result from extra commas or whitespace
|
|
45
|
+
.filter(Boolean));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Reads a file and returns an array of non-empty, non-comment lines.
|
|
49
|
+
* Lines starting with '#' are treated as comments and ignored.
|
|
50
|
+
* Trims whitespace from each line.
|
|
51
|
+
* Exits the process with an error if the file does not exist.
|
|
52
|
+
*
|
|
53
|
+
* @param filePath - Path to the file to read
|
|
54
|
+
* @returns Array of valid lines from the file
|
|
55
|
+
*/
|
|
56
|
+
function readFileLines(filePath) {
|
|
57
|
+
const absPath = path.resolve(filePath);
|
|
58
|
+
if (!fs.existsSync(absPath)) {
|
|
59
|
+
throw new Error(`Tool list file not found: ${absPath}`);
|
|
60
|
+
}
|
|
61
|
+
const lines = fs
|
|
62
|
+
.readFileSync(absPath, "utf-8")
|
|
63
|
+
.split("\n")
|
|
64
|
+
.map((line) => line.trim())
|
|
65
|
+
.filter((line) => line && !line.startsWith("#"));
|
|
66
|
+
return lines;
|
|
67
|
+
}
|
|
5
68
|
/**
|
|
6
69
|
* Parse command line arguments with strong typing
|
|
7
70
|
* @returns Parsed CLI options
|
|
@@ -10,44 +73,154 @@ export function parseCliArgs() {
|
|
|
10
73
|
const program = new Command()
|
|
11
74
|
.name("mcp-confluent")
|
|
12
75
|
.description("Confluent MCP Server - Model Context Protocol implementation for Confluent Cloud")
|
|
13
|
-
.version(
|
|
76
|
+
.version(getPackageVersion())
|
|
14
77
|
.option("-e, --env-file <path>", "Load environment variables from file")
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
78
|
+
.option("-k, --kafka-config-file <file>", "Path to a properties file for configuring kafka clients")
|
|
79
|
+
.addOption(new Option("-t, --transport <types>", "Transport types (comma-separated list)")
|
|
80
|
+
.choices(Object.values(TransportType))
|
|
81
|
+
.default(TransportType.STDIO)
|
|
82
|
+
.argParser((value) => parseTransportList(value)))
|
|
83
|
+
.option("--allow-tools <tools>", "Comma-separated list of tool names to allow. If provided, takes precedence over --allow-tools-file. Allow-list is applied before block-list.")
|
|
84
|
+
.option("--block-tools <tools>", "Comma-separated list of tool names to block. If provided, takes precedence over --block-tools-file. Block-list is applied after allow-list.")
|
|
85
|
+
.option("--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.")
|
|
86
|
+
.option("--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.")
|
|
87
|
+
.option("--list-tools", "Print the final set of enabled tool names (with descriptions) after allow/block filtering and exit. Does not start the server.")
|
|
88
|
+
.option("--disable-confluent-cloud-tools", "Disable all tools that require Confluent Cloud REST APIs (cloud-only tools).")
|
|
20
89
|
.allowExcessArguments(false)
|
|
21
90
|
.exitOverride();
|
|
22
91
|
try {
|
|
23
|
-
|
|
24
|
-
|
|
92
|
+
const opts = program.parse().opts();
|
|
93
|
+
if (opts.envFile) {
|
|
94
|
+
loadEnvironmentVariables(opts.envFile);
|
|
95
|
+
}
|
|
96
|
+
// Precedence: CLI > file > undefined
|
|
97
|
+
let allowTools = undefined;
|
|
98
|
+
let blockTools = undefined;
|
|
99
|
+
if (opts.allowTools) {
|
|
100
|
+
allowTools = parseToolList(opts.allowTools);
|
|
101
|
+
}
|
|
102
|
+
else if (opts.allowToolsFile) {
|
|
103
|
+
allowTools = readFileLines(opts.allowToolsFile);
|
|
104
|
+
}
|
|
105
|
+
if (opts.blockTools) {
|
|
106
|
+
blockTools = parseToolList(opts.blockTools);
|
|
107
|
+
}
|
|
108
|
+
else if (opts.blockToolsFile) {
|
|
109
|
+
blockTools = readFileLines(opts.blockToolsFile);
|
|
110
|
+
}
|
|
111
|
+
let kafkaConfig = {};
|
|
112
|
+
if (opts.kafkaConfigFile) {
|
|
113
|
+
kafkaConfig = parsePropertiesFile(opts.kafkaConfigFile);
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
envFile: opts.envFile,
|
|
117
|
+
transports: Array.isArray(opts.transport)
|
|
118
|
+
? opts.transport
|
|
119
|
+
: [opts.transport],
|
|
120
|
+
allowTools,
|
|
121
|
+
blockTools,
|
|
122
|
+
listTools: !!opts.listTools,
|
|
123
|
+
disableConfluentCloudTools: !!opts.disableConfluentCloudTools,
|
|
124
|
+
kafkaConfig: kafkaConfig,
|
|
125
|
+
};
|
|
25
126
|
}
|
|
26
|
-
catch {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (error instanceof CommanderError &&
|
|
129
|
+
(error.code === "commander.helpDisplayed" ||
|
|
130
|
+
error.code === "commander.version")) {
|
|
131
|
+
process.exit(0);
|
|
132
|
+
}
|
|
133
|
+
if (error instanceof Error) {
|
|
134
|
+
logger.error({
|
|
135
|
+
error,
|
|
136
|
+
errorString: error.toString(),
|
|
137
|
+
errorMessage: error.message,
|
|
138
|
+
}, "Error parsing CLI options");
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
logger.error({ error: String(error) }, "Error parsing CLI options");
|
|
142
|
+
}
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Load environment variables from file
|
|
148
|
+
* @param envFile Path to the environment file
|
|
149
|
+
*/
|
|
150
|
+
export function loadEnvironmentVariables(envFile) {
|
|
151
|
+
const envPath = path.resolve(envFile);
|
|
152
|
+
// Check if file exists
|
|
153
|
+
if (!fs.existsSync(envPath)) {
|
|
154
|
+
throw new Error(`Environment file not found: ${envPath}`);
|
|
155
|
+
}
|
|
156
|
+
// Load environment variables from file
|
|
157
|
+
const result = dotenv.config({ path: envPath });
|
|
158
|
+
if (result.error) {
|
|
159
|
+
throw new Error(`Error loading environment variables: ${result.error}`);
|
|
30
160
|
}
|
|
161
|
+
logger.info(`Loaded environment variables from ${envPath}`);
|
|
31
162
|
}
|
|
32
163
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
164
|
+
* Filters and returns a sorted list of enabled ToolNames based on CLI allow/block options.
|
|
165
|
+
*
|
|
166
|
+
* This function determines which tools should be enabled for the server by applying
|
|
167
|
+
* the following logic:
|
|
168
|
+
* 1. If an allow list (`cliOptions.allowTools`) is provided and non-empty, only those
|
|
169
|
+
* tool names present in the allow list (and valid) will be enabled. Any invalid
|
|
170
|
+
* tool names in the allow list are ignored and a warning is logged.
|
|
171
|
+
* 2. If a block list (`cliOptions.blockTools`) is provided and non-empty, any tool
|
|
172
|
+
* names present in the block list (and valid) will be removed from the enabled
|
|
173
|
+
* set. Any invalid tool names in the block list are ignored and a warning is logged.
|
|
174
|
+
* 3. If neither allow nor block lists are provided, all available tools are enabled.
|
|
175
|
+
*
|
|
176
|
+
* The returned list is always sorted alphabetically.
|
|
177
|
+
*
|
|
178
|
+
* @param cliOptions - The parsed CLI options containing allow/block tool lists.
|
|
179
|
+
* @returns An alphabetically sorted array of enabled ToolNames.
|
|
35
180
|
*/
|
|
36
|
-
export function
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
181
|
+
export function getFilteredToolNames(cliOptions) {
|
|
182
|
+
let filteredToolNames = Object.values(ToolName);
|
|
183
|
+
const validToolNames = new Set(Object.values(ToolName));
|
|
184
|
+
if (cliOptions.allowTools && cliOptions.allowTools.length > 0) {
|
|
185
|
+
const valid = cliOptions.allowTools.filter((t) => validToolNames.has(t));
|
|
186
|
+
const invalid = cliOptions.allowTools.filter((t) => !validToolNames.has(t));
|
|
187
|
+
if (invalid.length > 0) {
|
|
188
|
+
logger.warn(`Ignoring invalid tool names in allow list: ${invalid.join(", ")}`);
|
|
189
|
+
}
|
|
190
|
+
filteredToolNames = valid.map((t) => t);
|
|
191
|
+
}
|
|
192
|
+
if (cliOptions.blockTools && cliOptions.blockTools.length > 0) {
|
|
193
|
+
const validBlock = cliOptions.blockTools.filter((t) => validToolNames.has(t));
|
|
194
|
+
const invalidBlock = cliOptions.blockTools.filter((t) => !validToolNames.has(t));
|
|
195
|
+
if (invalidBlock.length > 0) {
|
|
196
|
+
logger.warn(`Ignoring invalid tool names in block list: ${invalidBlock.join(", ")}`);
|
|
197
|
+
}
|
|
198
|
+
filteredToolNames = filteredToolNames.filter((t) => !validBlock.includes(t));
|
|
199
|
+
}
|
|
200
|
+
// Deduplicate and sort
|
|
201
|
+
const deduped = Array.from(new Set(filteredToolNames)).sort();
|
|
202
|
+
if ((!cliOptions.allowTools || cliOptions.allowTools.length === 0) &&
|
|
203
|
+
(!cliOptions.blockTools || cliOptions.blockTools.length === 0)) {
|
|
204
|
+
logger.info("No allow/block tool lists provided; all tools are enabled by default.");
|
|
205
|
+
}
|
|
206
|
+
return deduped;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Loads configuration from a properties file
|
|
210
|
+
* @param filePath - Path to the properties file
|
|
211
|
+
* @returns configuration object
|
|
212
|
+
*/
|
|
213
|
+
export function parsePropertiesFile(filePath) {
|
|
214
|
+
const absPath = path.resolve(filePath);
|
|
215
|
+
if (!fs.existsSync(absPath)) {
|
|
216
|
+
throw new Error(`Properties file not found: ${absPath}`);
|
|
217
|
+
}
|
|
218
|
+
try {
|
|
219
|
+
const properties = getProperties(fs.readFileSync(absPath, "utf-8"));
|
|
220
|
+
return properties;
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
throw new Error(`Failed to parse properties file: ${err instanceof Error ? err.message : String(err)}`);
|
|
51
224
|
}
|
|
52
225
|
}
|
|
53
226
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Provides client management functionality for Kafka and Confluent Cloud services.
|
|
3
3
|
*/
|
|
4
|
-
import { KafkaJS } from "@confluentinc/kafka-javascript";
|
|
4
|
+
import { GlobalConfig, KafkaJS } from "@confluentinc/kafka-javascript";
|
|
5
|
+
import { SchemaRegistryClient } from "@confluentinc/schemaregistry";
|
|
6
|
+
import { ConfluentAuth, ConfluentEndpoints } from "../confluent/middleware.js";
|
|
5
7
|
import { paths } from "@src/confluent/openapi-schema.js";
|
|
6
8
|
import { Client } from "openapi-fetch";
|
|
7
9
|
/**
|
|
@@ -15,7 +17,7 @@ export interface KafkaClientManager {
|
|
|
15
17
|
/** Gets a connected producer client for publishing messages */
|
|
16
18
|
getProducer(): Promise<KafkaJS.Producer>;
|
|
17
19
|
/** Gets a connected consumer client for subscribing to topics */
|
|
18
|
-
getConsumer(): Promise<KafkaJS.Consumer>;
|
|
20
|
+
getConsumer(sessionId?: string): Promise<KafkaJS.Consumer>;
|
|
19
21
|
/** Disconnects and cleans up all client connections */
|
|
20
22
|
disconnect(): Promise<void>;
|
|
21
23
|
}
|
|
@@ -36,17 +38,35 @@ export interface ConfluentCloudRestClientManager {
|
|
|
36
38
|
setConfluentCloudSchemaRegistryEndpoint(endpoint: string): void;
|
|
37
39
|
setConfluentCloudKafkaRestEndpoint(endpoint: string): void;
|
|
38
40
|
}
|
|
39
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Interface for managing Schema Registry client connections.
|
|
43
|
+
*/
|
|
44
|
+
export interface SchemaRegistryClientHandler {
|
|
45
|
+
getSchemaRegistryClient(): SchemaRegistryClient;
|
|
46
|
+
}
|
|
47
|
+
export interface ClientManager extends KafkaClientManager, ConfluentCloudRestClientManager, SchemaRegistryClientHandler {
|
|
48
|
+
getSchemaRegistryClient(): SchemaRegistryClient;
|
|
49
|
+
}
|
|
50
|
+
export interface ClientManagerConfig {
|
|
51
|
+
kafka: GlobalConfig;
|
|
52
|
+
endpoints: ConfluentEndpoints;
|
|
53
|
+
auth: {
|
|
54
|
+
cloud: ConfluentAuth;
|
|
55
|
+
flink: ConfluentAuth;
|
|
56
|
+
schemaRegistry: ConfluentAuth;
|
|
57
|
+
kafka: ConfluentAuth;
|
|
58
|
+
};
|
|
40
59
|
}
|
|
41
60
|
/**
|
|
42
61
|
* Default implementation of client management for Kafka and Confluent Cloud services.
|
|
43
62
|
* Manages lifecycle and lazy initialization of various client connections.
|
|
44
63
|
*/
|
|
45
|
-
export declare class DefaultClientManager implements ClientManager {
|
|
64
|
+
export declare class DefaultClientManager implements ClientManager, SchemaRegistryClientHandler {
|
|
46
65
|
private confluentCloudBaseUrl;
|
|
47
66
|
private confluentCloudFlinkBaseUrl;
|
|
48
67
|
private confluentCloudSchemaRegistryBaseUrl;
|
|
49
68
|
private confluentCloudKafkaRestBaseUrl;
|
|
69
|
+
private readonly kafkaConfig;
|
|
50
70
|
private readonly kafkaClient;
|
|
51
71
|
private readonly adminClient;
|
|
52
72
|
private readonly producer;
|
|
@@ -54,15 +74,14 @@ export declare class DefaultClientManager implements ClientManager {
|
|
|
54
74
|
private readonly confluentCloudRestClient;
|
|
55
75
|
private readonly confluentCloudSchemaRegistryRestClient;
|
|
56
76
|
private readonly confluentCloudKafkaRestClient;
|
|
77
|
+
private readonly schemaRegistryClient;
|
|
57
78
|
/**
|
|
58
79
|
* Creates a new DefaultClientManager instance.
|
|
59
|
-
* @param config - Configuration
|
|
60
|
-
* @param confluentCloudBaseUrl - Base URL for Confluent Cloud REST API
|
|
61
|
-
* @param confluentCloudFlinkBaseUrl - Base URL for Flink REST API
|
|
62
|
-
* @param confluentCloudSchemaRegistryBaseUrl - Base URL for Schema Registry REST API
|
|
63
|
-
* @param confluentCloudKafkaRestBaseUrl - Base URL for Kafka REST API
|
|
80
|
+
* @param config - Configuration for all clients
|
|
64
81
|
*/
|
|
65
|
-
constructor(config:
|
|
82
|
+
constructor(config: ClientManagerConfig);
|
|
83
|
+
/** @inheritdoc */
|
|
84
|
+
getConsumer(sessionId?: string): Promise<KafkaJS.Consumer>;
|
|
66
85
|
/**
|
|
67
86
|
* a function that sets a new confluent cloud rest endpoint.
|
|
68
87
|
* Closes the current client first.
|
|
@@ -72,7 +91,6 @@ export declare class DefaultClientManager implements ClientManager {
|
|
|
72
91
|
setConfluentCloudFlinkEndpoint(endpoint: string): void;
|
|
73
92
|
setConfluentCloudSchemaRegistryEndpoint(endpoint: string): void;
|
|
74
93
|
setConfluentCloudKafkaRestEndpoint(endpoint: string): void;
|
|
75
|
-
getConsumer(): Promise<KafkaJS.Consumer>;
|
|
76
94
|
/** @inheritdoc */
|
|
77
95
|
getKafkaClient(): KafkaJS.Kafka;
|
|
78
96
|
/** @inheritdoc */
|
|
@@ -89,5 +107,7 @@ export declare class DefaultClientManager implements ClientManager {
|
|
|
89
107
|
getProducer(): Promise<KafkaJS.Producer>;
|
|
90
108
|
/** @inheritdoc */
|
|
91
109
|
disconnect(): Promise<void>;
|
|
110
|
+
/** @inheritdoc */
|
|
111
|
+
getSchemaRegistryClient(): SchemaRegistryClient;
|
|
92
112
|
}
|
|
93
113
|
//# sourceMappingURL=client-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-manager.d.ts","sourceRoot":"","sources":["../../src/confluent/client-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"client-manager.d.ts","sourceRoot":"","sources":["../../src/confluent/client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* @fileoverview Provides client management functionality for Kafka and Confluent Cloud services.
|
|
3
3
|
*/
|
|
4
4
|
import { KafkaJS } from "@confluentinc/kafka-javascript";
|
|
5
|
-
import {
|
|
5
|
+
import { SchemaRegistryClient } from "@confluentinc/schemaregistry";
|
|
6
|
+
import { createAuthMiddleware, } from "../confluent/middleware.js";
|
|
6
7
|
import { AsyncLazy, Lazy } from "../lazy.js";
|
|
8
|
+
import { kafkaLogger, logger } from "../logger.js";
|
|
7
9
|
import createClient from "openapi-fetch";
|
|
8
10
|
/**
|
|
9
11
|
* Default implementation of client management for Kafka and Confluent Cloud services.
|
|
@@ -14,6 +16,7 @@ export class DefaultClientManager {
|
|
|
14
16
|
confluentCloudFlinkBaseUrl;
|
|
15
17
|
confluentCloudSchemaRegistryBaseUrl;
|
|
16
18
|
confluentCloudKafkaRestBaseUrl;
|
|
19
|
+
kafkaConfig;
|
|
17
20
|
kafkaClient;
|
|
18
21
|
adminClient;
|
|
19
22
|
producer;
|
|
@@ -21,70 +24,110 @@ export class DefaultClientManager {
|
|
|
21
24
|
confluentCloudRestClient;
|
|
22
25
|
confluentCloudSchemaRegistryRestClient;
|
|
23
26
|
confluentCloudKafkaRestClient;
|
|
27
|
+
schemaRegistryClient;
|
|
24
28
|
/**
|
|
25
29
|
* Creates a new DefaultClientManager instance.
|
|
26
|
-
* @param config - Configuration
|
|
27
|
-
* @param confluentCloudBaseUrl - Base URL for Confluent Cloud REST API
|
|
28
|
-
* @param confluentCloudFlinkBaseUrl - Base URL for Flink REST API
|
|
29
|
-
* @param confluentCloudSchemaRegistryBaseUrl - Base URL for Schema Registry REST API
|
|
30
|
-
* @param confluentCloudKafkaRestBaseUrl - Base URL for Kafka REST API
|
|
30
|
+
* @param config - Configuration for all clients
|
|
31
31
|
*/
|
|
32
|
-
constructor(config
|
|
33
|
-
this.confluentCloudBaseUrl =
|
|
34
|
-
this.confluentCloudFlinkBaseUrl =
|
|
35
|
-
this.confluentCloudSchemaRegistryBaseUrl =
|
|
36
|
-
|
|
37
|
-
this.
|
|
38
|
-
this.kafkaClient = new Lazy(() => new KafkaJS.Kafka(
|
|
32
|
+
constructor(config) {
|
|
33
|
+
this.confluentCloudBaseUrl = config.endpoints.cloud;
|
|
34
|
+
this.confluentCloudFlinkBaseUrl = config.endpoints.flink;
|
|
35
|
+
this.confluentCloudSchemaRegistryBaseUrl = config.endpoints.schemaRegistry;
|
|
36
|
+
this.confluentCloudKafkaRestBaseUrl = config.endpoints.kafka;
|
|
37
|
+
this.kafkaConfig = config.kafka;
|
|
38
|
+
this.kafkaClient = new Lazy(() => new KafkaJS.Kafka({
|
|
39
|
+
...this.kafkaConfig,
|
|
40
|
+
kafkaJS: {
|
|
41
|
+
logger: kafkaLogger,
|
|
42
|
+
// we need to do this since typescript will complain that we are missing configs like `brokers` even though we are passing them in kafkaConfig above
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
},
|
|
45
|
+
}));
|
|
39
46
|
this.adminClient = new AsyncLazy(async () => {
|
|
40
|
-
|
|
47
|
+
logger.info("Connecting Kafka Admin");
|
|
41
48
|
const admin = this.kafkaClient.get().admin();
|
|
42
49
|
await admin.connect();
|
|
43
50
|
return admin;
|
|
44
51
|
}, (admin) => admin.disconnect());
|
|
45
52
|
this.producer = new AsyncLazy(async () => {
|
|
46
|
-
|
|
47
|
-
const producer = this.kafkaClient.get().producer(
|
|
48
|
-
kafkaJS: {
|
|
49
|
-
acks: 1,
|
|
50
|
-
compression: KafkaJS.CompressionTypes.GZIP,
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
+
logger.info("Connecting Kafka Producer");
|
|
54
|
+
const producer = this.kafkaClient.get().producer();
|
|
53
55
|
await producer.connect();
|
|
54
56
|
return producer;
|
|
55
57
|
}, (producer) => producer.disconnect());
|
|
56
58
|
this.confluentCloudRestClient = new Lazy(() => {
|
|
57
|
-
|
|
59
|
+
if (!this.confluentCloudBaseUrl) {
|
|
60
|
+
throw new Error("Confluent Cloud REST endpoint not configured");
|
|
61
|
+
}
|
|
62
|
+
logger.info(`Initializing Confluent Cloud REST client for base URL ${this.confluentCloudBaseUrl}`);
|
|
58
63
|
const client = createClient({
|
|
59
64
|
baseUrl: this.confluentCloudBaseUrl,
|
|
60
65
|
});
|
|
61
|
-
client.use(
|
|
66
|
+
client.use(createAuthMiddleware(config.auth.cloud));
|
|
62
67
|
return client;
|
|
63
68
|
});
|
|
64
69
|
this.confluentCloudFlinkRestClient = new Lazy(() => {
|
|
65
|
-
|
|
70
|
+
if (!this.confluentCloudFlinkBaseUrl) {
|
|
71
|
+
throw new Error("Confluent Cloud Flink REST endpoint not configured");
|
|
72
|
+
}
|
|
73
|
+
logger.info(`Initializing Confluent Cloud Flink REST client for base URL ${this.confluentCloudFlinkBaseUrl}`);
|
|
66
74
|
const client = createClient({
|
|
67
75
|
baseUrl: this.confluentCloudFlinkBaseUrl,
|
|
68
76
|
});
|
|
69
|
-
client.use(
|
|
77
|
+
client.use(createAuthMiddleware(config.auth.flink));
|
|
70
78
|
return client;
|
|
71
79
|
});
|
|
72
80
|
this.confluentCloudSchemaRegistryRestClient = new Lazy(() => {
|
|
73
|
-
|
|
81
|
+
if (!this.confluentCloudSchemaRegistryBaseUrl) {
|
|
82
|
+
throw new Error("Confluent Cloud Schema Registry REST endpoint not configured");
|
|
83
|
+
}
|
|
84
|
+
logger.info(`Initializing Confluent Cloud Schema Registry REST client for base URL ${this.confluentCloudSchemaRegistryBaseUrl}`);
|
|
74
85
|
const client = createClient({
|
|
75
86
|
baseUrl: this.confluentCloudSchemaRegistryBaseUrl,
|
|
76
87
|
});
|
|
77
|
-
client.use(
|
|
88
|
+
client.use(createAuthMiddleware(config.auth.schemaRegistry));
|
|
78
89
|
return client;
|
|
79
90
|
});
|
|
80
91
|
this.confluentCloudKafkaRestClient = new Lazy(() => {
|
|
81
|
-
|
|
92
|
+
if (!this.confluentCloudKafkaRestBaseUrl) {
|
|
93
|
+
throw new Error("Confluent Cloud Kafka REST endpoint not configured");
|
|
94
|
+
}
|
|
95
|
+
logger.info(`Initializing Confluent Cloud Kafka REST client for base URL ${this.confluentCloudKafkaRestBaseUrl}`);
|
|
82
96
|
const client = createClient({
|
|
83
97
|
baseUrl: this.confluentCloudKafkaRestBaseUrl,
|
|
84
98
|
});
|
|
85
|
-
client.use(
|
|
99
|
+
client.use(createAuthMiddleware(config.auth.kafka));
|
|
86
100
|
return client;
|
|
87
101
|
});
|
|
102
|
+
this.schemaRegistryClient = new Lazy(() => {
|
|
103
|
+
if (!this.confluentCloudSchemaRegistryBaseUrl) {
|
|
104
|
+
throw new Error("Schema Registry endpoint not configured");
|
|
105
|
+
}
|
|
106
|
+
const { apiKey, apiSecret } = config.auth.schemaRegistry;
|
|
107
|
+
return new SchemaRegistryClient({
|
|
108
|
+
baseURLs: [this.confluentCloudSchemaRegistryBaseUrl],
|
|
109
|
+
basicAuthCredentials: {
|
|
110
|
+
credentialsSource: "USER_INFO",
|
|
111
|
+
userInfo: `${apiKey}:${apiSecret}`,
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/** @inheritdoc */
|
|
117
|
+
async getConsumer(sessionId) {
|
|
118
|
+
// Build the config inline, merging with defaults
|
|
119
|
+
const baseGroupId = this.kafkaConfig["group.id"] || "mcp-confluent";
|
|
120
|
+
const groupId = sessionId ? `${baseGroupId}-${sessionId}` : baseGroupId;
|
|
121
|
+
const consumerConfig = {
|
|
122
|
+
// Spread all user-provided config
|
|
123
|
+
...this.kafkaConfig,
|
|
124
|
+
// Override with our logic
|
|
125
|
+
"group.id": groupId,
|
|
126
|
+
"auto.offset.reset": this.kafkaConfig["auto.offset.reset"] || "earliest",
|
|
127
|
+
"allow.auto.create.topics": this.kafkaConfig["allow.auto.create.topics"] || false,
|
|
128
|
+
"enable.auto.commit": this.kafkaConfig["enable.auto.commit"] || false,
|
|
129
|
+
};
|
|
130
|
+
return this.kafkaClient.get().consumer(consumerConfig);
|
|
88
131
|
}
|
|
89
132
|
/**
|
|
90
133
|
* a function that sets a new confluent cloud rest endpoint.
|
|
@@ -107,9 +150,6 @@ export class DefaultClientManager {
|
|
|
107
150
|
this.confluentCloudKafkaRestClient.close();
|
|
108
151
|
this.confluentCloudKafkaRestBaseUrl = endpoint;
|
|
109
152
|
}
|
|
110
|
-
getConsumer() {
|
|
111
|
-
throw new Error("Method not implemented.");
|
|
112
|
-
}
|
|
113
153
|
/** @inheritdoc */
|
|
114
154
|
getKafkaClient() {
|
|
115
155
|
return this.kafkaClient.get();
|
|
@@ -144,5 +184,9 @@ export class DefaultClientManager {
|
|
|
144
184
|
await this.producer.close();
|
|
145
185
|
this.kafkaClient.close();
|
|
146
186
|
}
|
|
187
|
+
/** @inheritdoc */
|
|
188
|
+
getSchemaRegistryClient() {
|
|
189
|
+
return this.schemaRegistryClient.get();
|
|
190
|
+
}
|
|
147
191
|
}
|
|
148
192
|
//# sourceMappingURL=client-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-manager.js","sourceRoot":"","sources":["../../src/confluent/client-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"client-manager.js","sourceRoot":"","sources":["../../src/confluent/client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ import { Environment } from "../env.js";
|
|
|
4
4
|
* @param envVarName - The name of the environment variable to check
|
|
5
5
|
* @param errorMessage - The error message to throw if neither parameter nor environment variable exists
|
|
6
6
|
* @param param - Optional parameter value to use instead of environment variable
|
|
7
|
-
* @returns The parameter value or environment variable value
|
|
7
|
+
* @returns The parameter value or environment variable value with its original type
|
|
8
8
|
* @throws {Error} When neither parameter nor environment variable exists
|
|
9
9
|
*/
|
|
10
|
-
export declare const getEnsuredParam: (envVarName: keyof Environment, errorMessage: string, param?:
|
|
10
|
+
export declare const getEnsuredParam: <T extends Environment[keyof Environment]>(envVarName: keyof Environment, errorMessage: string, param?: T) => T;
|
|
11
11
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/confluent/helpers.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/confluent/helpers.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,WAAW,CAAC,MAAM,WAAW,CAAC,EACtE,YAAY,MAAM,WAAW,EAC7B,cAAc,MAAM,EACpB,QAAQ,CAAC,KACR,CAMF,CAAC"}
|
|
@@ -4,7 +4,7 @@ import env from "../env.js";
|
|
|
4
4
|
* @param envVarName - The name of the environment variable to check
|
|
5
5
|
* @param errorMessage - The error message to throw if neither parameter nor environment variable exists
|
|
6
6
|
* @param param - Optional parameter value to use instead of environment variable
|
|
7
|
-
* @returns The parameter value or environment variable value
|
|
7
|
+
* @returns The parameter value or environment variable value with its original type
|
|
8
8
|
* @throws {Error} When neither parameter nor environment variable exists
|
|
9
9
|
*/
|
|
10
10
|
export const getEnsuredParam = (envVarName, errorMessage, param) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/confluent/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,GAAoB,MAAM,aAAa,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAA6B,EAC7B,YAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/confluent/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,GAAoB,MAAM,aAAa,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAA6B,EAC7B,YAAoB,EACpB,KAAS,EACN,EAAE;IACL,MAAM,UAAU,GAAG,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,UAAe,CAAC;AACzB,CAAC,CAAC"}
|