@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { HttpServer } from "./server.js";
|
|
3
|
+
import { Transport } from "./types.js";
|
|
4
|
+
export declare class HttpTransport implements Transport {
|
|
5
|
+
private server;
|
|
6
|
+
private httpServer;
|
|
7
|
+
private sessions;
|
|
8
|
+
constructor(server: McpServer, httpServer: HttpServer);
|
|
9
|
+
connect(): Promise<void>;
|
|
10
|
+
disconnect(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBvC,qBAAa,aAAc,YAAW,SAAS;IAI3C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAJpB,OAAO,CAAC,QAAQ,CAAqD;gBAG3D,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU;IAG1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAyHxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAWlC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
2
|
+
import { logger } from "../../logger.js";
|
|
3
|
+
import { randomUUID } from "crypto";
|
|
4
|
+
const mcpSessionSchema = {
|
|
5
|
+
type: "object",
|
|
6
|
+
properties: {
|
|
7
|
+
sessionId: { type: "string", format: "uuid" },
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
const mcpErrorSchema = {
|
|
11
|
+
type: "object",
|
|
12
|
+
properties: {
|
|
13
|
+
error: { type: "string" },
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
export class HttpTransport {
|
|
17
|
+
server;
|
|
18
|
+
httpServer;
|
|
19
|
+
sessions = {};
|
|
20
|
+
constructor(server, httpServer) {
|
|
21
|
+
this.server = server;
|
|
22
|
+
this.httpServer = httpServer;
|
|
23
|
+
}
|
|
24
|
+
async connect() {
|
|
25
|
+
const fastify = this.httpServer.getInstance();
|
|
26
|
+
// POST handler for new sessions and message sending
|
|
27
|
+
fastify.post("/mcp", {
|
|
28
|
+
schema: {
|
|
29
|
+
tags: ["mcp"],
|
|
30
|
+
summary: "Create a new MCP session or send a message",
|
|
31
|
+
headers: {
|
|
32
|
+
type: "object",
|
|
33
|
+
properties: {
|
|
34
|
+
"mcp-session-id": { type: "string", format: "uuid" },
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
response: {
|
|
38
|
+
200: mcpSessionSchema,
|
|
39
|
+
404: mcpErrorSchema,
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
}, async (request, reply) => {
|
|
43
|
+
const sessionId = request.headers["mcp-session-id"];
|
|
44
|
+
let transport;
|
|
45
|
+
if (sessionId && this.sessions[sessionId]) {
|
|
46
|
+
transport = this.sessions[sessionId];
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
transport = new StreamableHTTPServerTransport({
|
|
50
|
+
sessionIdGenerator: () => randomUUID(),
|
|
51
|
+
onsessioninitialized: (sid) => {
|
|
52
|
+
this.sessions[sid] = transport;
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
await this.server.connect(transport);
|
|
56
|
+
}
|
|
57
|
+
await transport.handleRequest(request.raw, reply.raw, request.body);
|
|
58
|
+
});
|
|
59
|
+
// GET handler for session status and message receiving
|
|
60
|
+
fastify.get("/mcp", {
|
|
61
|
+
schema: {
|
|
62
|
+
tags: ["mcp"],
|
|
63
|
+
summary: "Get session status or receive messages",
|
|
64
|
+
headers: {
|
|
65
|
+
type: "object",
|
|
66
|
+
properties: {
|
|
67
|
+
"mcp-session-id": { type: "string", format: "uuid" },
|
|
68
|
+
},
|
|
69
|
+
required: ["mcp-session-id"],
|
|
70
|
+
},
|
|
71
|
+
response: {
|
|
72
|
+
200: mcpSessionSchema,
|
|
73
|
+
404: mcpErrorSchema,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
}, async (request, reply) => {
|
|
77
|
+
const sessionId = request.headers["mcp-session-id"];
|
|
78
|
+
if (!sessionId || !this.sessions[sessionId]) {
|
|
79
|
+
reply.status(404).send({ error: "Session not found" });
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const transport = this.sessions[sessionId];
|
|
83
|
+
await transport.handleRequest(request.raw, reply.raw);
|
|
84
|
+
});
|
|
85
|
+
// DELETE handler for session cleanup
|
|
86
|
+
fastify.delete("/mcp", {
|
|
87
|
+
schema: {
|
|
88
|
+
tags: ["mcp"],
|
|
89
|
+
summary: "Delete an MCP session",
|
|
90
|
+
headers: {
|
|
91
|
+
type: "object",
|
|
92
|
+
properties: {
|
|
93
|
+
"mcp-session-id": { type: "string", format: "uuid" },
|
|
94
|
+
},
|
|
95
|
+
required: ["mcp-session-id"],
|
|
96
|
+
},
|
|
97
|
+
response: {
|
|
98
|
+
200: mcpSessionSchema,
|
|
99
|
+
404: mcpErrorSchema,
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
}, async (request, reply) => {
|
|
103
|
+
const sessionId = request.headers["mcp-session-id"];
|
|
104
|
+
if (!sessionId || !this.sessions[sessionId]) {
|
|
105
|
+
reply.status(404).send({ error: "Session not found" });
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const transport = this.sessions[sessionId];
|
|
109
|
+
await transport.handleRequest(request.raw, reply.raw);
|
|
110
|
+
// Clean up the session
|
|
111
|
+
delete this.sessions[sessionId];
|
|
112
|
+
});
|
|
113
|
+
logger.info("HTTP transport routes registered");
|
|
114
|
+
}
|
|
115
|
+
async disconnect() {
|
|
116
|
+
logger.info("Cleaning up HTTP transport sessions...");
|
|
117
|
+
// Clean up all active sessions
|
|
118
|
+
Object.values(this.sessions).forEach((transport) => {
|
|
119
|
+
const sessionId = transport.sessionId;
|
|
120
|
+
if (sessionId) {
|
|
121
|
+
delete this.sessions[sessionId];
|
|
122
|
+
}
|
|
123
|
+
transport.close();
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/mcp/transports/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "../../mcp/transports/http.js";
|
|
2
|
+
export * from "../../mcp/transports/manager.js";
|
|
3
|
+
export * from "../../mcp/transports/server.js";
|
|
4
|
+
export * from "../../mcp/transports/sse.js";
|
|
5
|
+
export * from "../../mcp/transports/stdio.js";
|
|
6
|
+
export * from "../../mcp/transports/types.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "../../mcp/transports/http.js";
|
|
2
|
+
export * from "../../mcp/transports/manager.js";
|
|
3
|
+
export * from "../../mcp/transports/server.js";
|
|
4
|
+
export * from "../../mcp/transports/sse.js";
|
|
5
|
+
export * from "../../mcp/transports/stdio.js";
|
|
6
|
+
export * from "../../mcp/transports/types.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/transports/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { TransportType } from "./types.js";
|
|
3
|
+
export declare class TransportManager {
|
|
4
|
+
private server;
|
|
5
|
+
private transports;
|
|
6
|
+
private httpServer;
|
|
7
|
+
constructor(server: McpServer);
|
|
8
|
+
start(types: TransportType[], port?: number, host?: string): Promise<void>;
|
|
9
|
+
stop(): Promise<void>;
|
|
10
|
+
private createTransport;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,OAAO,EAAa,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtD,qBAAa,gBAAgB;IAIf,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,UAAU,CAA2B;gBAEzB,MAAM,EAAE,SAAS;IAE/B,KAAK,CACT,KAAK,EAAE,aAAa,EAAE,EACtB,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IA2CV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAwBb,eAAe;CAkB9B"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { logger } from "../../logger.js";
|
|
2
|
+
import { HttpTransport } from "./http.js";
|
|
3
|
+
import { HttpServer } from "./server.js";
|
|
4
|
+
import { SseTransport } from "./sse.js";
|
|
5
|
+
import { StdioTransport } from "./stdio.js";
|
|
6
|
+
import { TransportType } from "./types.js";
|
|
7
|
+
export class TransportManager {
|
|
8
|
+
server;
|
|
9
|
+
transports = new Map();
|
|
10
|
+
httpServer = null;
|
|
11
|
+
constructor(server) {
|
|
12
|
+
this.server = server;
|
|
13
|
+
}
|
|
14
|
+
async start(types, port, host) {
|
|
15
|
+
try {
|
|
16
|
+
const needsHttpServer = types.some((type) => type === TransportType.HTTP || type === TransportType.SSE);
|
|
17
|
+
// Initialize and prepare HTTP server if needed
|
|
18
|
+
if (needsHttpServer) {
|
|
19
|
+
this.httpServer = new HttpServer();
|
|
20
|
+
await this.httpServer.prepare();
|
|
21
|
+
}
|
|
22
|
+
// Create and connect all transports
|
|
23
|
+
await Promise.all(types.map(async (type) => {
|
|
24
|
+
const transport = await this.createTransport(type);
|
|
25
|
+
this.transports.set(type, transport);
|
|
26
|
+
await transport.connect();
|
|
27
|
+
}));
|
|
28
|
+
// Start HTTP server if needed (after routes are registered)
|
|
29
|
+
if (needsHttpServer && this.httpServer) {
|
|
30
|
+
if (port && host) {
|
|
31
|
+
await this.httpServer.start({
|
|
32
|
+
port,
|
|
33
|
+
host,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
logger.error("Port and host are required");
|
|
38
|
+
throw new Error("Port and host are required");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
logger.info("All transports started successfully");
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
logger.error({ error }, "Failed to start transports");
|
|
45
|
+
// Clean up any partially started transports
|
|
46
|
+
await this.stop();
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async stop() {
|
|
51
|
+
// Stop HTTP server first to prevent new requests
|
|
52
|
+
if (this.httpServer) {
|
|
53
|
+
await this.httpServer.stop();
|
|
54
|
+
}
|
|
55
|
+
// Then disconnect all transports
|
|
56
|
+
await Promise.all(Array.from(this.transports.values()).map(async (transport) => {
|
|
57
|
+
try {
|
|
58
|
+
await transport.disconnect();
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
logger.error({ error }, `Failed to disconnect transport: ${transport.constructor.name}`);
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
64
|
+
this.transports.clear();
|
|
65
|
+
this.httpServer = null;
|
|
66
|
+
}
|
|
67
|
+
async createTransport(type) {
|
|
68
|
+
switch (type) {
|
|
69
|
+
case "http":
|
|
70
|
+
if (!this.httpServer) {
|
|
71
|
+
throw new Error("HTTP server not initialized");
|
|
72
|
+
}
|
|
73
|
+
return new HttpTransport(this.server, this.httpServer);
|
|
74
|
+
case "sse":
|
|
75
|
+
if (!this.httpServer) {
|
|
76
|
+
throw new Error("HTTP server not initialized");
|
|
77
|
+
}
|
|
78
|
+
return new SseTransport(this.server, this.httpServer);
|
|
79
|
+
case "stdio":
|
|
80
|
+
return new StdioTransport(this.server);
|
|
81
|
+
default:
|
|
82
|
+
throw new Error(`Unsupported transport type: ${type}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/mcp/transports/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ServerConfig } from "../../mcp/transports/types.js";
|
|
2
|
+
import { FastifyInstance } from "fastify";
|
|
3
|
+
export declare class HttpServer {
|
|
4
|
+
private fastify;
|
|
5
|
+
private isSwaggerConfigured;
|
|
6
|
+
constructor();
|
|
7
|
+
prepare(): Promise<void>;
|
|
8
|
+
getInstance(): FastifyInstance;
|
|
9
|
+
start(config: ServerConfig): Promise<void>;
|
|
10
|
+
stop(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAGL,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,mBAAmB,CAAS;;IAS9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C9B,WAAW,IAAI,eAAe;IAIxB,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import fastifySwagger from "@fastify/swagger";
|
|
2
|
+
import fastifySwaggerUi from "@fastify/swagger-ui";
|
|
3
|
+
import { logger } from "../../logger.js";
|
|
4
|
+
import { default as Fastify, } from "fastify";
|
|
5
|
+
export class HttpServer {
|
|
6
|
+
fastify;
|
|
7
|
+
isSwaggerConfigured = false;
|
|
8
|
+
constructor() {
|
|
9
|
+
this.fastify = Fastify({
|
|
10
|
+
loggerInstance: logger,
|
|
11
|
+
// Useful for when ongoing http/sse connections are present
|
|
12
|
+
forceCloseConnections: true,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
async prepare() {
|
|
16
|
+
if (this.isSwaggerConfigured) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Configure Swagger before any routes are registered
|
|
20
|
+
await this.fastify.register(fastifySwagger, {
|
|
21
|
+
openapi: {
|
|
22
|
+
info: {
|
|
23
|
+
title: "Confluent MCP Server API",
|
|
24
|
+
description: "API documentation for the Confluent MCP Server",
|
|
25
|
+
version: "1.0.0",
|
|
26
|
+
},
|
|
27
|
+
servers: [
|
|
28
|
+
{
|
|
29
|
+
url: "http://localhost:3000",
|
|
30
|
+
description: "Local development server",
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
components: {
|
|
34
|
+
securitySchemes: {
|
|
35
|
+
apiKey: {
|
|
36
|
+
type: "apiKey",
|
|
37
|
+
name: "X-API-Key",
|
|
38
|
+
in: "header",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
tags: [
|
|
43
|
+
{ name: "mcp", description: "Model Context Protocol endpoints" },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
hideUntagged: false,
|
|
47
|
+
});
|
|
48
|
+
await this.fastify.register(fastifySwaggerUi, {
|
|
49
|
+
routePrefix: "/documentation",
|
|
50
|
+
uiConfig: {
|
|
51
|
+
docExpansion: "list",
|
|
52
|
+
deepLinking: true,
|
|
53
|
+
},
|
|
54
|
+
staticCSP: true,
|
|
55
|
+
});
|
|
56
|
+
this.isSwaggerConfigured = true;
|
|
57
|
+
}
|
|
58
|
+
getInstance() {
|
|
59
|
+
return this.fastify;
|
|
60
|
+
}
|
|
61
|
+
async start(config) {
|
|
62
|
+
try {
|
|
63
|
+
// Ready the server (this will compile the schemas and prepare all routes)
|
|
64
|
+
await this.fastify.ready();
|
|
65
|
+
// Start listening
|
|
66
|
+
await this.fastify.listen({
|
|
67
|
+
port: config.port,
|
|
68
|
+
host: config.host,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
logger.error({ error }, "Failed to start server");
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async stop() {
|
|
77
|
+
try {
|
|
78
|
+
logger.info("Shutting down server...");
|
|
79
|
+
await this.fastify.close();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
logger.error({ error }, "Error while shutting down server");
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/transports/server.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EACL,OAAO,IAAI,OAAO,GAGnB,MAAM,SAAS,CAAC;AAEjB,MAAM,OAAO,UAAU;IACb,OAAO,CAAkB;IACzB,mBAAmB,GAAG,KAAK,CAAC;IACpC;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACrB,cAAc,EAAE,MAA2B;YAC3C,2DAA2D;YAC3D,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,qDAAqD;QACrD,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE;YAC1C,OAAO,EAAE;gBACP,IAAI,EAAE;oBACJ,KAAK,EAAE,0BAA0B;oBACjC,WAAW,EAAE,gDAAgD;oBAC7D,OAAO,EAAE,OAAO;iBACjB;gBACD,OAAO,EAAE;oBACP;wBACE,GAAG,EAAE,uBAAuB;wBAC5B,WAAW,EAAE,0BAA0B;qBACxC;iBACF;gBACD,UAAU,EAAE;oBACV,eAAe,EAAE;wBACf,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,WAAW;4BACjB,EAAE,EAAE,QAAQ;yBACb;qBACF;iBACF;gBACD,IAAI,EAAE;oBACJ,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,kCAAkC,EAAE;iBACjE;aACF;YACD,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC5C,WAAW,EAAE,gBAAgB;YAC7B,QAAQ,EAAE;gBACR,YAAY,EAAE,MAAM;gBACpB,WAAW,EAAE,IAAI;aAClB;YACD,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC9B,IAAI,CAAC;YACH,0EAA0E;YAC1E,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAE3B,kBAAkB;YAClB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACxB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAC;YAClD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,kCAAkC,CAAC,CAAC;YAC5D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { HttpServer } from "./server.js";
|
|
3
|
+
import { Transport } from "./types.js";
|
|
4
|
+
export declare class SseTransport implements Transport {
|
|
5
|
+
private server;
|
|
6
|
+
private httpServer;
|
|
7
|
+
private sessions;
|
|
8
|
+
constructor(server: McpServer, httpServer: HttpServer);
|
|
9
|
+
connect(): Promise<void>;
|
|
10
|
+
disconnect(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=sse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgBvC,qBAAa,YAAa,YAAW,SAAS;IAI1C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAJpB,OAAO,CAAC,QAAQ,CAA0C;gBAGhD,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU;IAG1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4GxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAWlC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
|
|
2
|
+
import { logger } from "../../logger.js";
|
|
3
|
+
const sseErrorSchema = {
|
|
4
|
+
type: "object",
|
|
5
|
+
properties: {
|
|
6
|
+
error: { type: "string" },
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
export class SseTransport {
|
|
10
|
+
server;
|
|
11
|
+
httpServer;
|
|
12
|
+
sessions = {};
|
|
13
|
+
constructor(server, httpServer) {
|
|
14
|
+
this.server = server;
|
|
15
|
+
this.httpServer = httpServer;
|
|
16
|
+
}
|
|
17
|
+
async connect() {
|
|
18
|
+
const fastify = this.httpServer.getInstance();
|
|
19
|
+
// SSE endpoint for establishing SSE connection
|
|
20
|
+
fastify.get("/sse", {
|
|
21
|
+
schema: {
|
|
22
|
+
tags: ["mcp"],
|
|
23
|
+
summary: "Establish SSE connection for real-time updates",
|
|
24
|
+
response: {
|
|
25
|
+
400: sseErrorSchema,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
}, async (request, reply) => {
|
|
29
|
+
try {
|
|
30
|
+
// Create transport with the correct message endpoint
|
|
31
|
+
const transport = new SSEServerTransport("/messages", reply.raw);
|
|
32
|
+
// Get the session ID from the transport
|
|
33
|
+
const sessionId = transport.sessionId;
|
|
34
|
+
if (!sessionId) {
|
|
35
|
+
throw new Error("Failed to get session ID from transport");
|
|
36
|
+
}
|
|
37
|
+
// Store the session before connecting to ensure it's available for messages
|
|
38
|
+
this.sessions[sessionId] = transport;
|
|
39
|
+
// Set up cleanup on connection close
|
|
40
|
+
reply.raw.on("close", () => {
|
|
41
|
+
logger.info(`SSE connection closed for session ${sessionId}`);
|
|
42
|
+
delete this.sessions[sessionId];
|
|
43
|
+
});
|
|
44
|
+
// Connect the transport to the server
|
|
45
|
+
await this.server.connect(transport);
|
|
46
|
+
logger.info(`New SSE connection established for session ${sessionId}`);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
logger.error({ error }, "Failed to establish SSE connection");
|
|
50
|
+
if (!reply.sent) {
|
|
51
|
+
reply
|
|
52
|
+
.code(400)
|
|
53
|
+
.send({ error: "Failed to establish SSE connection" });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
// Message endpoint for receiving messages from clients
|
|
58
|
+
fastify.post("/messages", {
|
|
59
|
+
schema: {
|
|
60
|
+
tags: ["mcp"],
|
|
61
|
+
summary: "Send message to SSE connection",
|
|
62
|
+
querystring: {
|
|
63
|
+
type: "object",
|
|
64
|
+
required: ["sessionId"],
|
|
65
|
+
properties: {
|
|
66
|
+
sessionId: { type: "string", format: "uuid" },
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
body: {
|
|
70
|
+
type: "object",
|
|
71
|
+
additionalProperties: true,
|
|
72
|
+
},
|
|
73
|
+
response: {
|
|
74
|
+
400: sseErrorSchema,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
}, async (request, reply) => {
|
|
78
|
+
try {
|
|
79
|
+
const sessionId = request.query.sessionId;
|
|
80
|
+
logger.info(`Received message for sessionId ${sessionId}`);
|
|
81
|
+
const transport = this.sessions[sessionId];
|
|
82
|
+
if (!transport) {
|
|
83
|
+
logger.warn(`No transport found for sessionId: ${sessionId}`);
|
|
84
|
+
reply.code(400).send({ error: "No transport found for sessionId" });
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
await transport.handlePostMessage(request.raw, reply.raw, request.body);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
logger.error({ error }, "Failed to process SSE message");
|
|
91
|
+
if (!reply.sent) {
|
|
92
|
+
reply.code(400).send({ error: "Failed to process message" });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
logger.info("SSE transport routes registered");
|
|
97
|
+
}
|
|
98
|
+
async disconnect() {
|
|
99
|
+
logger.info("Cleaning up SSE transport sessions...");
|
|
100
|
+
// Clean up all active sessions
|
|
101
|
+
Object.values(this.sessions).forEach((transport) => {
|
|
102
|
+
const sessionId = transport.sessionId;
|
|
103
|
+
if (sessionId) {
|
|
104
|
+
delete this.sessions[sessionId];
|
|
105
|
+
}
|
|
106
|
+
transport.close();
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=sse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/mcp/transports/sse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { Transport } from "../../mcp/transports/types.js";
|
|
3
|
+
export declare class StdioTransport implements Transport {
|
|
4
|
+
private server;
|
|
5
|
+
constructor(server: McpServer);
|
|
6
|
+
connect(): Promise<void>;
|
|
7
|
+
disconnect(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,qBAAa,cAAe,YAAW,SAAS;IAClC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS;IAE/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
2
|
+
import { logger } from "../../logger.js";
|
|
3
|
+
export class StdioTransport {
|
|
4
|
+
server;
|
|
5
|
+
constructor(server) {
|
|
6
|
+
this.server = server;
|
|
7
|
+
}
|
|
8
|
+
async connect() {
|
|
9
|
+
const transport = new StdioServerTransport();
|
|
10
|
+
await this.server.connect(transport);
|
|
11
|
+
logger.info("STDIO transport connected");
|
|
12
|
+
}
|
|
13
|
+
async disconnect() {
|
|
14
|
+
// Nothing to clean up for stdio transport
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../../src/mcp/transports/stdio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAEzC,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,UAAU;QACd,0CAA0C;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare enum TransportType {
|
|
2
|
+
HTTP = "http",
|
|
3
|
+
SSE = "sse",
|
|
4
|
+
STDIO = "stdio"
|
|
5
|
+
}
|
|
6
|
+
export interface Transport {
|
|
7
|
+
connect(): Promise<void>;
|
|
8
|
+
disconnect(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export interface ServerConfig {
|
|
11
|
+
port: number;
|
|
12
|
+
host: string;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/transports/types.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/transports/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,gCAAe,CAAA;AACjB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB"}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Utility script to generate markdown documentation for environment variables.
|
|
3
|
+
* This script is only used to generate markdown content for the README file and is not used by the server.
|
|
4
|
+
* It converts Zod schema definitions into a formatted markdown table.
|
|
5
|
+
*/
|
|
1
6
|
export {};
|
|
2
7
|
//# sourceMappingURL=print-md-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-md-schema.d.ts","sourceRoot":"","sources":["../src/print-md-schema.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"print-md-schema.d.ts","sourceRoot":"","sources":["../src/print-md-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/dist/print-md-schema.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Utility script to generate markdown documentation for environment variables.
|
|
3
|
+
* This script is only used to generate markdown content for the README file and is not used by the server.
|
|
4
|
+
* It converts Zod schema definitions into a formatted markdown table.
|
|
5
|
+
*/
|
|
1
6
|
import { z } from "zod";
|
|
2
7
|
import { combinedSchema } from "./env-schema.js";
|
|
3
8
|
function zodSchemaToMarkdown(schema, parentKey = "") {
|
|
@@ -92,5 +97,6 @@ function getTypeInfo(schema) {
|
|
|
92
97
|
return `union: ${schema.options.map((opt) => getTypeInfo(opt)).join(" | ")}`;
|
|
93
98
|
return schema.constructor.name.replace("Zod", "").toLowerCase();
|
|
94
99
|
}
|
|
100
|
+
// Generate markdown table from schema and print to console
|
|
95
101
|
console.log(zodSchemaToMarkdown(combinedSchema));
|
|
96
102
|
//# sourceMappingURL=print-md-schema.js.map
|