n8n-nodes-meta-mcp 1.0.31 → 1.0.33

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.
@@ -0,0 +1,7 @@
1
+ <svg width="180" height="180" viewBox="0 0 195 195" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g stroke="#fff" stroke-width="12" stroke-linecap="round">
3
+ <path d="M25 97.8528L92.8823 29.9706C102.255 20.598 117.451 20.598 126.823 29.9706V29.9706C136.196 39.3431 136.196 54.5391 126.823 63.9117L75.5581 115.177"/>
4
+ <path d="M76.2653 114.47L126.823 63.9117C136.196 54.5391 151.392 54.5391 160.765 63.9117L161.118 64.2652C170.491 73.6378 170.491 88.8338 161.118 98.2063L99.7248 159.6C96.6006 162.724 96.6006 167.789 99.7248 170.913L112.331 183.52"/>
5
+ <path d="M109.853 46.9411L59.6482 97.1457C50.2757 106.518 50.2757 121.714 59.6482 131.087V131.087C69.0208 140.459 84.2168 140.459 93.5894 131.087L143.794 80.8822"/>
6
+ </g>
7
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg width="180" height="180" viewBox="0 0 195 195" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g stroke="#000" stroke-width="12" stroke-linecap="round">
3
+ <path d="M25 97.8528L92.8823 29.9706C102.255 20.598 117.451 20.598 126.823 29.9706V29.9706C136.196 39.3431 136.196 54.5391 126.823 63.9117L75.5581 115.177"/>
4
+ <path d="M76.2653 114.47L126.823 63.9117C136.196 54.5391 151.392 54.5391 160.765 63.9117L161.118 64.2652C170.491 73.6378 170.491 88.8338 161.118 98.2063L99.7248 159.6C96.6006 162.724 96.6006 167.789 99.7248 170.913L112.331 183.52"/>
5
+ <path d="M109.853 46.9411L59.6482 97.1457C50.2757 106.518 50.2757 121.714 59.6482 131.087V131.087C69.0208 140.459 84.2168 140.459 93.5894 131.087L143.794 80.8822"/>
6
+ </g>
7
+ </svg>
@@ -0,0 +1,21 @@
1
+ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
2
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
+ import type { StreamableHTTPServerTransportOptions } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
4
+ import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
5
+ import type { Response } from 'express';
6
+ import type { IncomingMessage, ServerResponse } from 'http';
7
+ export type CompressionResponse = Response & {
8
+ flush: () => void;
9
+ };
10
+ export declare class FlushingSSEServerTransport extends SSEServerTransport {
11
+ private response;
12
+ constructor(_endpoint: string, response: CompressionResponse);
13
+ send(message: JSONRPCMessage): Promise<void>;
14
+ handleRequest(req: IncomingMessage, resp: ServerResponse, message: IncomingMessage): Promise<void>;
15
+ }
16
+ export declare class FlushingStreamableHTTPTransport extends StreamableHTTPServerTransport {
17
+ private response;
18
+ constructor(options: StreamableHTTPServerTransportOptions, response: CompressionResponse);
19
+ send(message: JSONRPCMessage): Promise<void>;
20
+ handleRequest(req: IncomingMessage, resp: ServerResponse, parsedBody?: unknown): Promise<void>;
21
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlushingStreamableHTTPTransport = exports.FlushingSSEServerTransport = void 0;
4
+ const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
5
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
6
+ class FlushingSSEServerTransport extends sse_js_1.SSEServerTransport {
7
+ constructor(_endpoint, response) {
8
+ super(_endpoint, response);
9
+ this.response = response;
10
+ }
11
+ async send(message) {
12
+ await super.send(message);
13
+ this.response.flush();
14
+ }
15
+ async handleRequest(req, resp, message) {
16
+ await super.handlePostMessage(req, resp, message);
17
+ this.response.flush();
18
+ }
19
+ }
20
+ exports.FlushingSSEServerTransport = FlushingSSEServerTransport;
21
+ class FlushingStreamableHTTPTransport extends streamableHttp_js_1.StreamableHTTPServerTransport {
22
+ constructor(options, response) {
23
+ super(options);
24
+ this.response = response;
25
+ }
26
+ async send(message) {
27
+ await super.send(message);
28
+ this.response.flush();
29
+ }
30
+ async handleRequest(req, resp, parsedBody) {
31
+ await super.handleRequest(req, resp, parsedBody);
32
+ this.response.flush();
33
+ }
34
+ }
35
+ exports.FlushingStreamableHTTPTransport = FlushingStreamableHTTPTransport;
36
+ //# sourceMappingURL=FlushingTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlushingTransport.js","sourceRoot":"","sources":["../../../nodes/MetaMcpTrigger/FlushingTransport.ts"],"names":[],"mappings":";;;AAAA,oEAA6E;AAC7E,0FAAmG;AAenG,MAAa,0BAA2B,SAAQ,2BAAkB;IACjE,YACC,SAAiB,EACT,QAA6B;QAErC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAFnB,aAAQ,GAAR,QAAQ,CAAqB;IAGtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAuB;QACjC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,aAAa,CAClB,GAAoB,EACpB,IAAoB,EACpB,OAAwB;QAExB,MAAM,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACD;AArBD,gEAqBC;AAED,MAAa,+BAAgC,SAAQ,iDAA6B;IAGjF,YAAY,OAA6C,EAAE,QAA6B;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAuB;QACjC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,aAAa,CAClB,GAAoB,EACpB,IAAoB,EACpB,UAAoB;QAEpB,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACD;AArBD,0EAqBC"}
@@ -0,0 +1,41 @@
1
+ import { type Logger } from 'n8n-workflow';
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { z } from 'zod';
4
+ import type { IncomingMessage } from 'http';
5
+ import { FlushingSSEServerTransport, FlushingStreamableHTTPTransport } from './FlushingTransport.js';
6
+ import type { CompressionResponse } from './FlushingTransport.js';
7
+ interface Tool {
8
+ name: string;
9
+ description: string;
10
+ metadata?: Record<string, unknown>;
11
+ schema: z.ZodType;
12
+ invoke: (args: Record<string, unknown>) => Promise<unknown>;
13
+ }
14
+ type ExtendedRequest = IncomingMessage & {
15
+ query: Record<string, unknown>;
16
+ headers: Record<string, unknown>;
17
+ body?: unknown;
18
+ rawBody?: Buffer;
19
+ };
20
+ export declare class McpServerManager {
21
+ #private;
22
+ servers: {
23
+ [sessionId: string]: Server;
24
+ };
25
+ transports: {
26
+ [sessionId: string]: FlushingSSEServerTransport | FlushingStreamableHTTPTransport;
27
+ };
28
+ private tools;
29
+ private resolveFunctions;
30
+ logger: Logger;
31
+ private constructor();
32
+ static instance(logger: Logger): McpServerManager;
33
+ createServerWithSSETransport(serverName: string, postUrl: string, resp: CompressionResponse): Promise<void>;
34
+ getSessionId(req: ExtendedRequest): string | undefined;
35
+ getTransport(sessionId: string): FlushingSSEServerTransport | FlushingStreamableHTTPTransport | undefined;
36
+ createServerWithStreamableHTTPTransport(serverName: string, resp: CompressionResponse, req?: ExtendedRequest): Promise<void>;
37
+ handlePostMessage(req: ExtendedRequest, resp: CompressionResponse, connectedTools: Tool[]): Promise<boolean>;
38
+ handleDeleteRequest(req: ExtendedRequest, resp: CompressionResponse): Promise<void>;
39
+ setUpHandlers(server: Server): void;
40
+ }
41
+ export {};
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var _a, _McpServerManager_instance;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.McpServerManager = void 0;
16
+ const n8n_workflow_1 = require("n8n-workflow");
17
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
18
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
19
+ const zod_to_json_schema_1 = require("zod-to-json-schema");
20
+ const crypto_1 = require("crypto");
21
+ const FlushingTransport_js_1 = require("./FlushingTransport.js");
22
+ function wasToolCall(body) {
23
+ try {
24
+ const message = JSON.parse(body);
25
+ const parsedMessage = types_js_1.JSONRPCMessageSchema.parse(message);
26
+ return ('method' in parsedMessage &&
27
+ 'id' in parsedMessage &&
28
+ (parsedMessage === null || parsedMessage === void 0 ? void 0 : parsedMessage.method) === types_js_1.CallToolRequestSchema.shape.method.value);
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+ function getRequestId(message) {
35
+ try {
36
+ const parsedMessage = types_js_1.JSONRPCMessageSchema.parse(message);
37
+ return 'id' in parsedMessage ? String(parsedMessage.id) : undefined;
38
+ }
39
+ catch {
40
+ return undefined;
41
+ }
42
+ }
43
+ class McpServerManager {
44
+ constructor(logger) {
45
+ this.servers = {};
46
+ this.transports = {};
47
+ this.tools = {};
48
+ this.resolveFunctions = {};
49
+ this.logger = logger;
50
+ this.logger.debug('MCP Server created');
51
+ }
52
+ static instance(logger) {
53
+ if (!__classPrivateFieldGet(_a, _a, "f", _McpServerManager_instance)) {
54
+ __classPrivateFieldSet(_a, _a, new _a(logger), "f", _McpServerManager_instance);
55
+ logger.debug('Created singleton MCP manager');
56
+ }
57
+ return __classPrivateFieldGet(_a, _a, "f", _McpServerManager_instance);
58
+ }
59
+ async createServerWithSSETransport(serverName, postUrl, resp) {
60
+ const server = new index_js_1.Server({ name: serverName, version: '0.1.0' }, { capabilities: { tools: {} } });
61
+ const transport = new FlushingTransport_js_1.FlushingSSEServerTransport(postUrl, resp);
62
+ this.setUpHandlers(server);
63
+ const sessionId = transport.sessionId;
64
+ this.transports[sessionId] = transport;
65
+ this.servers[sessionId] = server;
66
+ resp.on('close', async () => {
67
+ this.logger.debug(`Deleting transport for ${sessionId}`);
68
+ delete this.tools[sessionId];
69
+ delete this.transports[sessionId];
70
+ delete this.servers[sessionId];
71
+ });
72
+ await server.connect(transport);
73
+ if (resp.flush) {
74
+ resp.flush();
75
+ }
76
+ }
77
+ getSessionId(req) {
78
+ var _b;
79
+ return ((_b = req.query.sessionId) !== null && _b !== void 0 ? _b : req.headers['mcp-session-id']);
80
+ }
81
+ getTransport(sessionId) {
82
+ return this.transports[sessionId];
83
+ }
84
+ async createServerWithStreamableHTTPTransport(serverName, resp, req) {
85
+ const server = new index_js_1.Server({ name: serverName, version: '0.1.0' }, { capabilities: { tools: {} } });
86
+ const transport = new FlushingTransport_js_1.FlushingStreamableHTTPTransport({
87
+ sessionIdGenerator: () => (0, crypto_1.randomUUID)(),
88
+ onsessioninitialized: (sessionId) => {
89
+ this.logger.debug(`New session initialized: ${sessionId}`);
90
+ transport.onclose = () => {
91
+ this.logger.debug(`Deleting transport for ${sessionId}`);
92
+ delete this.tools[sessionId];
93
+ delete this.transports[sessionId];
94
+ delete this.servers[sessionId];
95
+ };
96
+ this.transports[sessionId] = transport;
97
+ this.servers[sessionId] = server;
98
+ },
99
+ }, resp);
100
+ this.setUpHandlers(server);
101
+ await server.connect(transport);
102
+ await transport.handleRequest(req, resp, req === null || req === void 0 ? void 0 : req.body);
103
+ if (resp.flush) {
104
+ resp.flush();
105
+ }
106
+ }
107
+ async handlePostMessage(req, resp, connectedTools) {
108
+ var _b, _c;
109
+ const sessionId = this.getSessionId(req);
110
+ const transport = this.getTransport(sessionId);
111
+ if (sessionId && transport) {
112
+ const message = (0, n8n_workflow_1.jsonParse)(((_b = req.rawBody) === null || _b === void 0 ? void 0 : _b.toString()) || '{}');
113
+ const messageId = getRequestId(message);
114
+ const callId = messageId ? `${sessionId}_${messageId}` : sessionId;
115
+ this.tools[sessionId] = connectedTools;
116
+ try {
117
+ await new Promise((resolve, reject) => {
118
+ this.resolveFunctions[callId] = resolve;
119
+ transport.handleRequest(req, resp, message)
120
+ .then(resolve)
121
+ .catch(reject);
122
+ });
123
+ }
124
+ finally {
125
+ delete this.resolveFunctions[callId];
126
+ }
127
+ }
128
+ else {
129
+ this.logger.warn(`No transport found for session ${sessionId}`);
130
+ (resp).status(401).send('No transport found for sessionId');
131
+ }
132
+ if (resp.flush) {
133
+ resp.flush();
134
+ }
135
+ return wasToolCall(((_c = req.rawBody) === null || _c === void 0 ? void 0 : _c.toString()) || '{}');
136
+ }
137
+ async handleDeleteRequest(req, resp) {
138
+ const sessionId = this.getSessionId(req);
139
+ if (!sessionId) {
140
+ (resp).status(400).send('No sessionId provided');
141
+ return;
142
+ }
143
+ const transport = this.getTransport(sessionId);
144
+ if (transport) {
145
+ if (transport instanceof FlushingTransport_js_1.FlushingStreamableHTTPTransport) {
146
+ await transport.handleRequest(req, resp);
147
+ return;
148
+ }
149
+ else {
150
+ (resp).status(405).send('Method Not Allowed');
151
+ return;
152
+ }
153
+ }
154
+ (resp).status(404).send('Session not found');
155
+ }
156
+ setUpHandlers(server) {
157
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async (_, extra) => {
158
+ if (!extra.sessionId) {
159
+ throw new n8n_workflow_1.OperationalError('Require a sessionId for the listing of tools');
160
+ }
161
+ return {
162
+ tools: (this.tools[extra.sessionId] || []).map((tool) => {
163
+ return {
164
+ name: tool.name,
165
+ description: tool.description,
166
+ inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(tool.schema, { removeAdditionalStrategy: 'strict' }),
167
+ };
168
+ }),
169
+ };
170
+ });
171
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request, extra) => {
172
+ var _b, _c, _d;
173
+ if (!((_b = request.params) === null || _b === void 0 ? void 0 : _b.name) || !((_c = request.params) === null || _c === void 0 ? void 0 : _c.arguments)) {
174
+ throw new n8n_workflow_1.OperationalError('Require a name and arguments for the tool call');
175
+ }
176
+ if (!extra.sessionId) {
177
+ throw new n8n_workflow_1.OperationalError('Require a sessionId for the tool call');
178
+ }
179
+ const callId = extra.requestId ? `${extra.sessionId}_${extra.requestId}` : extra.sessionId;
180
+ const requestedTool = (_d = this.tools[extra.sessionId]) === null || _d === void 0 ? void 0 : _d.find((tool) => tool.name === request.params.name);
181
+ if (!requestedTool) {
182
+ throw new n8n_workflow_1.OperationalError('Tool not found');
183
+ }
184
+ try {
185
+ const result = await requestedTool.invoke(request.params.arguments);
186
+ if (this.resolveFunctions[callId]) {
187
+ this.resolveFunctions[callId]();
188
+ }
189
+ if (typeof result === 'object') {
190
+ return { content: [{ type: 'text', text: JSON.stringify(result) }] };
191
+ }
192
+ return { content: [{ type: 'text', text: String(result) }] };
193
+ }
194
+ catch (error) {
195
+ this.logger.error(`Error while executing Tool ${requestedTool.name}: ${error}`);
196
+ return { isError: true, content: [{ type: 'text', text: `Error: ${error.message}` }] };
197
+ }
198
+ });
199
+ server.onclose = () => this.logger.debug('Closing MCP Server');
200
+ server.onerror = (error) => this.logger.error(`MCP Error: ${error}`);
201
+ }
202
+ }
203
+ exports.McpServerManager = McpServerManager;
204
+ _a = McpServerManager;
205
+ _McpServerManager_instance = { value: void 0 };
206
+ //# sourceMappingURL=McpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpServer.js","sourceRoot":"","sources":["../../../nodes/MetaMcpTrigger/McpServer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,17 @@
1
- import { IWebhookFunctions, IWebhookResponseData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
- export declare class MetaMcpTrigger implements INodeType {
1
+ import { IWebhookFunctions, IWebhookResponseData, INodeTypeDescription, IExecuteFunctions, ISupplyDataFunctions, Node } from 'n8n-workflow';
2
+ import { z } from 'zod';
3
+ interface Tool {
4
+ name: string;
5
+ description: string;
6
+ metadata?: Record<string, unknown>;
7
+ asDynamicTool?: () => Tool;
8
+ tools?: Tool[];
9
+ schema: z.ZodType;
10
+ invoke: (args: Record<string, unknown>) => Promise<unknown>;
11
+ }
12
+ export declare const getConnectedTools: (ctx: IExecuteFunctions | IWebhookFunctions | ISupplyDataFunctions, enforceUniqueNames: boolean, convertStructuredTool?: boolean, escapeCurlyBrackets?: boolean) => Promise<Tool[]>;
13
+ export declare class MetaMcpTrigger implements Node {
3
14
  description: INodeTypeDescription;
4
- webhook(this: IWebhookFunctions): Promise<IWebhookResponseData>;
15
+ webhook(ctx: IWebhookFunctions): Promise<IWebhookResponseData>;
5
16
  }
17
+ export {};