@n8n-as-code/mcp 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +32 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/services/mcp-server.d.ts +13 -1
- package/dist/services/mcp-server.d.ts.map +1 -1
- package/dist/services/mcp-server.js +251 -28
- package/dist/services/mcp-server.js.map +1 -1
- package/dist/services/mcp-service.d.ts.map +1 -1
- package/dist/services/mcp-service.js +10 -2
- package/dist/services/mcp-service.js.map +1 -1
- package/package.json +10 -7
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { startN8nAsCodeMcpServer } from './services/mcp-server.js';
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const argv = process.argv.slice(2);
|
|
4
|
+
function getArgValue(flag) {
|
|
5
|
+
const idx = argv.indexOf(flag);
|
|
6
|
+
return idx >= 0 ? argv[idx + 1] : undefined;
|
|
7
|
+
}
|
|
8
|
+
function hasFlag(flag) {
|
|
9
|
+
return argv.includes(flag);
|
|
10
|
+
}
|
|
11
|
+
const cwd = getArgValue('--cwd') ?? process.env.N8N_AS_CODE_PROJECT_DIR;
|
|
12
|
+
const useHttp = hasFlag('--http');
|
|
13
|
+
const useSse = hasFlag('--sse');
|
|
14
|
+
const port = getArgValue('--port');
|
|
15
|
+
const host = getArgValue('--host');
|
|
16
|
+
if (useHttp && useSse) {
|
|
17
|
+
process.stderr.write('Error: --http and --sse are mutually exclusive. Please specify only one transport flag.\n');
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
await startN8nAsCodeMcpServer({
|
|
21
|
+
cwd,
|
|
22
|
+
http: useHttp
|
|
23
|
+
? {
|
|
24
|
+
port: port !== undefined ? Number.parseInt(port, 10) : undefined,
|
|
25
|
+
host,
|
|
26
|
+
}
|
|
27
|
+
: undefined,
|
|
28
|
+
sse: useSse
|
|
29
|
+
? {
|
|
30
|
+
port: port !== undefined ? Number.parseInt(port, 10) : undefined,
|
|
31
|
+
host,
|
|
32
|
+
}
|
|
33
|
+
: undefined,
|
|
34
|
+
});
|
|
6
35
|
//# 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":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,SAAS,WAAW,CAAC,IAAY;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAExE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEnC,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAC;IAClH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,uBAAuB,CAAC;IAC1B,GAAG;IACH,IAAI,EAAE,OAAO;QACT,CAAC,CAAC;YACI,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,IAAI;SACP;QACH,CAAC,CAAC,SAAS;IACf,GAAG,EAAE,MAAM;QACP,CAAC,CAAC;YACI,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,IAAI;SACP;QACH,CAAC,CAAC,SAAS;CAClB,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { N8nAsCodeMcpService } from './services/mcp-service.js';
|
|
2
2
|
export { startN8nAsCodeMcpServer } from './services/mcp-server.js';
|
|
3
3
|
export type { N8nAsCodeMcpServiceOptions, CliExecutionResult } from './services/mcp-service.js';
|
|
4
|
+
export type { HttpServerOptions, SseServerOptions, StartServerOptions } from './services/mcp-server.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAChG,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
import { type N8nAsCodeMcpServiceOptions } from './mcp-service.js';
|
|
2
|
-
export
|
|
2
|
+
export interface HttpServerOptions {
|
|
3
|
+
port?: number;
|
|
4
|
+
host?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface SseServerOptions {
|
|
7
|
+
port?: number;
|
|
8
|
+
host?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface StartServerOptions extends N8nAsCodeMcpServiceOptions {
|
|
11
|
+
http?: HttpServerOptions;
|
|
12
|
+
sse?: SseServerOptions;
|
|
13
|
+
}
|
|
14
|
+
export declare function startN8nAsCodeMcpServer(options?: StartServerOptions): Promise<void>;
|
|
3
15
|
//# sourceMappingURL=mcp-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/services/mcp-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/services/mcp-server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAuB,KAAK,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAExF,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,0BAA0B;IAClE,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,GAAG,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AA8WD,wBAAsB,uBAAuB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7F"}
|
|
@@ -1,27 +1,73 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { createServer } from 'node:http';
|
|
1
3
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
2
5
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
6
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
7
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
3
8
|
import { z } from 'zod';
|
|
4
9
|
import { N8nAsCodeMcpService } from './mcp-service.js';
|
|
5
10
|
function asJsonText(data) {
|
|
6
11
|
return JSON.stringify(data, null, 2);
|
|
7
12
|
}
|
|
8
|
-
|
|
9
|
-
|
|
13
|
+
const LOOPBACK_HOSTS = new Set(['127.0.0.1', '::1', 'localhost']);
|
|
14
|
+
function warnIfNonLoopback(host) {
|
|
15
|
+
if (!LOOPBACK_HOSTS.has(host)) {
|
|
16
|
+
process.stderr.write(`⚠ MCP server is listening on a non-loopback interface (${host}) without authentication.\n`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Idle TTL for stateful HTTP sessions – if a client disconnects without
|
|
20
|
+
// sending DELETE /mcp the session is evicted after this period of inactivity.
|
|
21
|
+
const SESSION_IDLE_TTL_MS = 30 * 60 * 1000; // 30 minutes
|
|
22
|
+
// Schemas defined as module-level constants so TypeScript infers each type
|
|
23
|
+
// independently. Note: server.tool() triggers TS2589 on the first call due to
|
|
24
|
+
// Zod v3 deep type inference in the MCP SDK - this is a known SDK limitation.
|
|
25
|
+
const searchKnowledgeSchema = {
|
|
26
|
+
query: z.string().min(1).describe('Natural-language search query, for example "google sheets" or "AI agent".'),
|
|
27
|
+
category: z.string().optional().describe('Optional documentation category filter.'),
|
|
28
|
+
type: z.enum(['node', 'documentation']).optional().describe('Optional result type filter.'),
|
|
29
|
+
limit: z.number().int().min(1).max(25).optional().describe('Maximum number of results to return.'),
|
|
30
|
+
};
|
|
31
|
+
const getNodeInfoSchema = {
|
|
32
|
+
name: z.string().min(1).describe('Exact or close node name, for example "googleSheets" or "n8n-nodes-base.httpRequest".'),
|
|
33
|
+
};
|
|
34
|
+
const searchExamplesSchema = {
|
|
35
|
+
query: z.string().min(1).describe('Search query, for example "slack notification" or "invoice processing".'),
|
|
36
|
+
limit: z.number().int().min(1).max(25).optional().describe('Maximum number of workflow examples to return.'),
|
|
37
|
+
};
|
|
38
|
+
const getExampleInfoSchema = {
|
|
39
|
+
id: z.string().min(1).describe('Workflow example ID from search_n8n_workflow_examples.'),
|
|
40
|
+
};
|
|
41
|
+
const validateWorkflowSchema = {
|
|
42
|
+
workflowContent: z.string().min(1).describe('Workflow source as JSON or .workflow.ts text.'),
|
|
43
|
+
format: z.enum(['auto', 'json', 'typescript']).optional().describe('Optional workflow format override.'),
|
|
44
|
+
};
|
|
45
|
+
const searchDocsSchema = {
|
|
46
|
+
query: z.string().min(1).describe('Documentation search query.'),
|
|
47
|
+
category: z.string().optional().describe('Optional documentation category filter.'),
|
|
48
|
+
type: z.enum(['node', 'documentation']).optional().describe('Optional result type filter. Defaults to documentation.'),
|
|
49
|
+
limit: z.number().int().min(1).max(10).optional().describe('Maximum number of pages to return.'),
|
|
50
|
+
};
|
|
51
|
+
function buildMcpServer(service) {
|
|
10
52
|
const server = new McpServer({
|
|
11
53
|
name: 'n8n-as-code',
|
|
12
54
|
version: '1.0.0',
|
|
13
55
|
});
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
56
|
+
// Cast to avoid TS2589: Zod v3 deep type inference in @modelcontextprotocol/sdk
|
|
57
|
+
// causes TypeScript to exceed the instantiation depth limit. Handler parameter
|
|
58
|
+
// types are explicitly annotated below for full type safety at the call site.
|
|
59
|
+
const s = server;
|
|
60
|
+
// All tools operate exclusively on local/bundled data and produce no lasting side effects.
|
|
61
|
+
const localReadOnlyHints = {
|
|
62
|
+
readOnlyHint: true,
|
|
63
|
+
destructiveHint: false,
|
|
64
|
+
idempotentHint: true,
|
|
65
|
+
openWorldHint: false,
|
|
66
|
+
};
|
|
67
|
+
s.tool('search_n8n_knowledge', 'Search the local n8n-as-code knowledge base for nodes, documentation, and examples.', searchKnowledgeSchema, localReadOnlyHints, async ({ query, category, type, limit }) => ({
|
|
20
68
|
content: [{ type: 'text', text: asJsonText(await service.searchKnowledge(query, { category, type, limit })) }],
|
|
21
69
|
}));
|
|
22
|
-
|
|
23
|
-
name: z.string().min(1).describe('Exact or close node name, for example "googleSheets" or "n8n-nodes-base.httpRequest".'),
|
|
24
|
-
}, async ({ name }) => {
|
|
70
|
+
s.tool('get_n8n_node_info', 'Get the full offline schema and metadata for a specific n8n node.', getNodeInfoSchema, localReadOnlyHints, async ({ name }) => {
|
|
25
71
|
try {
|
|
26
72
|
return {
|
|
27
73
|
content: [{ type: 'text', text: asJsonText(await service.getNodeInfo(name)) }],
|
|
@@ -34,15 +80,10 @@ export async function startN8nAsCodeMcpServer(options = {}) {
|
|
|
34
80
|
};
|
|
35
81
|
}
|
|
36
82
|
});
|
|
37
|
-
|
|
38
|
-
query: z.string().min(1).describe('Search query, for example "slack notification" or "invoice processing".'),
|
|
39
|
-
limit: z.number().int().min(1).max(25).optional().describe('Maximum number of workflow examples to return.'),
|
|
40
|
-
}, async ({ query, limit }) => ({
|
|
83
|
+
s.tool('search_n8n_workflow_examples', 'Search the bundled n8n community workflow index for reusable example workflows.', searchExamplesSchema, localReadOnlyHints, async ({ query, limit }) => ({
|
|
41
84
|
content: [{ type: 'text', text: asJsonText(await service.searchExamples(query, limit)) }],
|
|
42
85
|
}));
|
|
43
|
-
|
|
44
|
-
id: z.string().min(1).describe('Workflow example ID from search_n8n_workflow_examples.'),
|
|
45
|
-
}, async ({ id }) => {
|
|
86
|
+
s.tool('get_n8n_workflow_example', 'Get metadata and the raw download URL for a specific community workflow example.', getExampleInfoSchema, localReadOnlyHints, async ({ id }) => {
|
|
46
87
|
try {
|
|
47
88
|
return {
|
|
48
89
|
content: [{ type: 'text', text: asJsonText(await service.getExampleInfo(id)) }],
|
|
@@ -55,10 +96,7 @@ export async function startN8nAsCodeMcpServer(options = {}) {
|
|
|
55
96
|
};
|
|
56
97
|
}
|
|
57
98
|
});
|
|
58
|
-
|
|
59
|
-
workflowContent: z.string().min(1).describe('Workflow source as JSON or .workflow.ts text.'),
|
|
60
|
-
format: z.enum(['auto', 'json', 'typescript']).optional().describe('Optional workflow format override.'),
|
|
61
|
-
}, async ({ workflowContent, format }) => {
|
|
99
|
+
s.tool('validate_n8n_workflow', 'Validate an n8n workflow from JSON or TypeScript content against the bundled schema.', validateWorkflowSchema, localReadOnlyHints, async ({ workflowContent, format }) => {
|
|
62
100
|
try {
|
|
63
101
|
const result = await service.validateWorkflow({ workflowContent, format });
|
|
64
102
|
return {
|
|
@@ -72,14 +110,199 @@ export async function startN8nAsCodeMcpServer(options = {}) {
|
|
|
72
110
|
};
|
|
73
111
|
}
|
|
74
112
|
});
|
|
75
|
-
|
|
76
|
-
query: z.string().min(1).describe('Documentation search query.'),
|
|
77
|
-
category: z.string().optional().describe('Optional documentation category filter.'),
|
|
78
|
-
type: z.enum(['node', 'documentation']).optional().describe('Optional result type filter. Defaults to documentation.'),
|
|
79
|
-
limit: z.number().int().min(1).max(10).optional().describe('Maximum number of pages to return.'),
|
|
80
|
-
}, async ({ query, category, type, limit }) => ({
|
|
113
|
+
s.tool('search_n8n_docs', 'Search bundled n8n documentation pages and return matching excerpts.', searchDocsSchema, localReadOnlyHints, async ({ query, category, type, limit }) => ({
|
|
81
114
|
content: [{ type: 'text', text: asJsonText(await service.searchDocs(query, { category, type, limit })) }],
|
|
82
115
|
}));
|
|
116
|
+
return server;
|
|
117
|
+
}
|
|
118
|
+
async function startHttpServer(service, httpOptions) {
|
|
119
|
+
const port = httpOptions.port ?? 3000;
|
|
120
|
+
const host = httpOptions.host ?? '127.0.0.1';
|
|
121
|
+
warnIfNonLoopback(host);
|
|
122
|
+
// Map of sessionId -> transport for stateful session management
|
|
123
|
+
const transports = new Map();
|
|
124
|
+
const sessionTimers = new Map();
|
|
125
|
+
function touchSession(sessionId) {
|
|
126
|
+
const existing = sessionTimers.get(sessionId);
|
|
127
|
+
if (existing !== undefined)
|
|
128
|
+
clearTimeout(existing);
|
|
129
|
+
sessionTimers.set(sessionId, setTimeout(async () => {
|
|
130
|
+
sessionTimers.delete(sessionId);
|
|
131
|
+
const t = transports.get(sessionId);
|
|
132
|
+
if (t) {
|
|
133
|
+
transports.delete(sessionId);
|
|
134
|
+
await t.close();
|
|
135
|
+
}
|
|
136
|
+
}, SESSION_IDLE_TTL_MS));
|
|
137
|
+
}
|
|
138
|
+
const httpServer = createServer(async (req, res) => {
|
|
139
|
+
if (req.url !== '/mcp') {
|
|
140
|
+
res.writeHead(404).end('Not Found');
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
// Parse body for POST requests
|
|
144
|
+
let body;
|
|
145
|
+
if (req.method === 'POST') {
|
|
146
|
+
const chunks = [];
|
|
147
|
+
for await (const chunk of req) {
|
|
148
|
+
chunks.push(chunk);
|
|
149
|
+
}
|
|
150
|
+
const raw = Buffer.concat(chunks).toString('utf8');
|
|
151
|
+
try {
|
|
152
|
+
body = raw ? JSON.parse(raw) : undefined;
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
res.writeHead(400).end('Invalid JSON body');
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
160
|
+
if (req.method === 'POST') {
|
|
161
|
+
let transport;
|
|
162
|
+
if (sessionId && transports.has(sessionId)) {
|
|
163
|
+
transport = transports.get(sessionId);
|
|
164
|
+
}
|
|
165
|
+
else if (!sessionId && isInitializeRequest(body)) {
|
|
166
|
+
transport = new StreamableHTTPServerTransport({
|
|
167
|
+
sessionIdGenerator: () => randomUUID(),
|
|
168
|
+
onsessioninitialized: (sid) => {
|
|
169
|
+
transports.set(sid, transport);
|
|
170
|
+
touchSession(sid);
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
transport.onclose = () => {
|
|
174
|
+
const sid = transport.sessionId;
|
|
175
|
+
if (sid) {
|
|
176
|
+
transports.delete(sid);
|
|
177
|
+
const timer = sessionTimers.get(sid);
|
|
178
|
+
if (timer !== undefined) {
|
|
179
|
+
clearTimeout(timer);
|
|
180
|
+
sessionTimers.delete(sid);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
const server = buildMcpServer(service);
|
|
185
|
+
await server.connect(transport);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
const status = sessionId ? 404 : 400;
|
|
189
|
+
const message = sessionId ? 'Session not found' : 'Bad Request: missing session ID';
|
|
190
|
+
res.writeHead(status, { 'Content-Type': 'application/json' }).end(JSON.stringify({ jsonrpc: '2.0', error: { code: -32000, message }, id: null }));
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
await transport.handleRequest(req, res, body);
|
|
194
|
+
if (sessionId && transports.has(sessionId))
|
|
195
|
+
touchSession(sessionId);
|
|
196
|
+
}
|
|
197
|
+
else if (req.method === 'GET' || req.method === 'DELETE') {
|
|
198
|
+
if (!sessionId || !transports.has(sessionId)) {
|
|
199
|
+
res.writeHead(sessionId ? 404 : 400).end(sessionId ? 'Session not found' : 'Missing session ID');
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
await transports.get(sessionId).handleRequest(req, res);
|
|
203
|
+
if (req.method === 'GET')
|
|
204
|
+
touchSession(sessionId);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
res.writeHead(405).end('Method Not Allowed');
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
await new Promise((resolve, reject) => {
|
|
211
|
+
httpServer.listen(port, host, () => resolve());
|
|
212
|
+
httpServer.once('error', reject);
|
|
213
|
+
});
|
|
214
|
+
process.stderr.write(`n8n-as-code MCP server listening on http://${host}:${port}/mcp\n`);
|
|
215
|
+
const shutdown = async () => {
|
|
216
|
+
httpServer.close();
|
|
217
|
+
for (const timer of sessionTimers.values())
|
|
218
|
+
clearTimeout(timer);
|
|
219
|
+
sessionTimers.clear();
|
|
220
|
+
for (const [, transport] of transports) {
|
|
221
|
+
await transport.close();
|
|
222
|
+
}
|
|
223
|
+
transports.clear();
|
|
224
|
+
process.exit(0);
|
|
225
|
+
};
|
|
226
|
+
process.once('SIGINT', shutdown);
|
|
227
|
+
process.once('SIGTERM', shutdown);
|
|
228
|
+
// Keep the process alive
|
|
229
|
+
await new Promise(() => { });
|
|
230
|
+
}
|
|
231
|
+
async function startSseServer(service, sseOptions) {
|
|
232
|
+
const port = sseOptions.port ?? 3000;
|
|
233
|
+
const host = sseOptions.host ?? '127.0.0.1';
|
|
234
|
+
warnIfNonLoopback(host);
|
|
235
|
+
// Map of sessionId -> transport for routing POST messages to the right session
|
|
236
|
+
const transports = new Map();
|
|
237
|
+
const httpServer = createServer(async (req, res) => {
|
|
238
|
+
if (req.url === '/sse' && req.method === 'GET') {
|
|
239
|
+
const transport = new SSEServerTransport('/message', res);
|
|
240
|
+
transports.set(transport.sessionId, transport);
|
|
241
|
+
transport.onclose = () => {
|
|
242
|
+
transports.delete(transport.sessionId);
|
|
243
|
+
};
|
|
244
|
+
const server = buildMcpServer(service);
|
|
245
|
+
await server.connect(transport);
|
|
246
|
+
await transport.start();
|
|
247
|
+
}
|
|
248
|
+
else if (req.url?.startsWith('/message') && req.method === 'POST') {
|
|
249
|
+
const url = new URL(req.url, `http://${req.headers.host ?? 'localhost'}`);
|
|
250
|
+
const sessionId = url.searchParams.get('sessionId') ?? undefined;
|
|
251
|
+
const transport = sessionId ? transports.get(sessionId) : undefined;
|
|
252
|
+
if (!transport) {
|
|
253
|
+
res.writeHead(sessionId ? 404 : 400).end(sessionId ? 'Session not found' : 'Missing sessionId');
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
const chunks = [];
|
|
257
|
+
for await (const chunk of req) {
|
|
258
|
+
chunks.push(chunk);
|
|
259
|
+
}
|
|
260
|
+
const raw = Buffer.concat(chunks).toString('utf8');
|
|
261
|
+
let body;
|
|
262
|
+
try {
|
|
263
|
+
body = raw ? JSON.parse(raw) : undefined;
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
res.writeHead(400).end('Invalid JSON body');
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
await transport.handlePostMessage(req, res, body);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
res.writeHead(404).end('Not Found');
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
await new Promise((resolve, reject) => {
|
|
276
|
+
httpServer.listen(port, host, () => resolve());
|
|
277
|
+
httpServer.once('error', reject);
|
|
278
|
+
});
|
|
279
|
+
process.stderr.write(`n8n-as-code MCP SSE server listening on http://${host}:${port}/sse\n`);
|
|
280
|
+
const shutdown = async () => {
|
|
281
|
+
httpServer.close();
|
|
282
|
+
for (const [, transport] of transports) {
|
|
283
|
+
await transport.close();
|
|
284
|
+
}
|
|
285
|
+
transports.clear();
|
|
286
|
+
process.exit(0);
|
|
287
|
+
};
|
|
288
|
+
process.once('SIGINT', shutdown);
|
|
289
|
+
process.once('SIGTERM', shutdown);
|
|
290
|
+
// Keep the process alive
|
|
291
|
+
await new Promise(() => { });
|
|
292
|
+
}
|
|
293
|
+
export async function startN8nAsCodeMcpServer(options = {}) {
|
|
294
|
+
const { http: httpOptions, sse: sseOptions, ...serviceOptions } = options;
|
|
295
|
+
const service = new N8nAsCodeMcpService(serviceOptions);
|
|
296
|
+
if (httpOptions) {
|
|
297
|
+
return startHttpServer(service, httpOptions);
|
|
298
|
+
}
|
|
299
|
+
if (sseOptions) {
|
|
300
|
+
return startSseServer(service, sseOptions);
|
|
301
|
+
}
|
|
302
|
+
return startStdioServer(service);
|
|
303
|
+
}
|
|
304
|
+
async function startStdioServer(service) {
|
|
305
|
+
const server = buildMcpServer(service);
|
|
83
306
|
const transport = new StdioServerTransport();
|
|
84
307
|
await server.connect(transport);
|
|
85
308
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/services/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAmC,MAAM,kBAAkB,CAAC;AAExF,SAAS,UAAU,CAAC,IAAa;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAAsC,EAAE;IAClF,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACnB,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACP,sBAAsB,EACtB,qFAAqF,EACrF;QACI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2EAA2E,CAAC;QAC9G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACnF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC3F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACrG,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;KACjH,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,mBAAmB,EACnB,mEAAmE,EACnE;QACI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uFAAuF,CAAC;KAC5H,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACD,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;aACjF,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;aACnD,CAAC;QACN,CAAC;IACL,CAAC,CACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,8BAA8B,EAC9B,iFAAiF,EACjF;QACI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yEAAyE,CAAC;QAC5G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KAC/G,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;KAC5F,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,0BAA0B,EAC1B,kFAAkF,EAClF;QACI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;KAC3F,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACb,IAAI,CAAC;YACD,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;aAClF,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;aACnD,CAAC;QACN,CAAC;IACL,CAAC,CACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,uBAAuB,EACvB,sFAAsF,EACtF;QACI,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QAC5F,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KAC3G,EACD,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3E,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;aACxD,CAAC;QACN,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;aACnD,CAAC;QACN,CAAC;IACL,CAAC,CACJ,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,iBAAiB,EACjB,sEAAsE,EACtE;QACI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAChE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACnF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QACtH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KACnG,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;KAC5G,CAAC,CACL,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/services/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-service.d.ts","sourceRoot":"","sources":["../../src/services/mcp-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-service.d.ts","sourceRoot":"","sources":["../../src/services/mcp-service.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,0BAA0B;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAiBD,qBAAa,mBAAmB;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAET,OAAO,GAAE,0BAA+B;IAIpD,OAAO,CAAC,eAAe;YAYT,aAAa;YAqDb,iBAAiB;IAmB/B,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAQnH,WAAW,CAAC,IAAI,EAAE,MAAM;IAIlB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;QACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC;KACb;IAUN,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IAIhD,cAAc,CAAC,EAAE,EAAE,MAAM;IAInB,gBAAgB,CAAC,EAAE,eAAe,EAAE,MAAe,EAAE,EAAE,uBAAuB;IAsBpF,gBAAgB,CAAC,IAAI,EAAE,MAAM;CAGhC"}
|
|
@@ -3,6 +3,7 @@ import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs';
|
|
|
3
3
|
import { dirname, join } from 'path';
|
|
4
4
|
import { tmpdir } from 'os';
|
|
5
5
|
import { createRequire } from 'module';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
6
7
|
function detectWorkflowFormat(workflowContent, format = 'auto') {
|
|
7
8
|
if (format === 'typescript') {
|
|
8
9
|
return true;
|
|
@@ -22,8 +23,15 @@ export class N8nAsCodeMcpService {
|
|
|
22
23
|
}
|
|
23
24
|
getCliEntryPath() {
|
|
24
25
|
const require = createRequire(import.meta.url);
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
try {
|
|
27
|
+
const cliPkg = require.resolve('n8nac/package.json');
|
|
28
|
+
return join(dirname(cliPkg), 'dist', 'index.js');
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Fallback for monorepo development: n8nac is a sibling workspace package
|
|
32
|
+
// From dist/services/ -> ../../../ reaches packages/, then cli/dist/index.js
|
|
33
|
+
return fileURLToPath(new URL('../../../cli/dist/index.js', import.meta.url));
|
|
34
|
+
}
|
|
27
35
|
}
|
|
28
36
|
async runCliCommand(args, parseJson = false) {
|
|
29
37
|
const cliEntryPath = this.getCliEntryPath();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-service.js","sourceRoot":"","sources":["../../src/services/mcp-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-service.js","sourceRoot":"","sources":["../../src/services/mcp-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n-as-code/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Dedicated MCP server for n8n-as-code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -15,15 +15,18 @@
|
|
|
15
15
|
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@
|
|
19
|
-
"
|
|
18
|
+
"@hono/node-server": "^1.19.12",
|
|
19
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
20
|
+
"n8nac": "1.5.5",
|
|
21
|
+
"zod": "^3.25.76"
|
|
20
22
|
},
|
|
21
23
|
"devDependencies": {
|
|
22
|
-
"@
|
|
23
|
-
"@types/
|
|
24
|
+
"@jest/globals": "^29.7.0",
|
|
25
|
+
"@types/jest": "^29.5.14",
|
|
26
|
+
"@types/node": "^20.19.39",
|
|
24
27
|
"jest": "^29.7.0",
|
|
25
|
-
"ts-jest": "^29.
|
|
26
|
-
"typescript": "^5.
|
|
28
|
+
"ts-jest": "^29.4.9",
|
|
29
|
+
"typescript": "^5.9.3"
|
|
27
30
|
},
|
|
28
31
|
"files": [
|
|
29
32
|
"dist/"
|