n8n-mcp 2.64.1 → 2.65.1
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 +3 -2
- package/data/nodes.db +0 -0
- package/dist/loaders/node-loader.d.ts +1 -0
- package/dist/loaders/node-loader.d.ts.map +1 -1
- package/dist/loaders/node-loader.js +11 -4
- package/dist/loaders/node-loader.js.map +1 -1
- package/dist/mcp/handlers-n8n-manager.d.ts +3 -0
- package/dist/mcp/handlers-n8n-manager.d.ts.map +1 -1
- package/dist/mcp/handlers-n8n-manager.js +121 -0
- package/dist/mcp/handlers-n8n-manager.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +31 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-docs/index.d.ts.map +1 -1
- package/dist/mcp/tool-docs/index.js +1 -0
- package/dist/mcp/tool-docs/index.js.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/index.d.ts +1 -0
- package/dist/mcp/tool-docs/workflow_management/index.d.ts.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/index.js +3 -1
- package/dist/mcp/tool-docs/workflow_management/index.js.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-evaluations.d.ts +3 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-evaluations.d.ts.map +1 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-evaluations.js +73 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-evaluations.js.map +1 -0
- package/dist/mcp/tools-documentation.d.ts.map +1 -1
- package/dist/mcp/tools-documentation.js +1 -0
- package/dist/mcp/tools-documentation.js.map +1 -1
- package/dist/mcp/tools-n8n-manager.d.ts.map +1 -1
- package/dist/mcp/tools-n8n-manager.js +43 -0
- package/dist/mcp/tools-n8n-manager.js.map +1 -1
- package/dist/scripts/core-node-check.d.ts.map +1 -1
- package/dist/scripts/core-node-check.js +2 -0
- package/dist/scripts/core-node-check.js.map +1 -1
- package/dist/services/n8n-api-client.d.ts +4 -1
- package/dist/services/n8n-api-client.d.ts.map +1 -1
- package/dist/services/n8n-api-client.js +27 -0
- package/dist/services/n8n-api-client.js.map +1 -1
- package/dist/types/n8n-api.d.ts +45 -0
- package/dist/types/n8n-api.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
[](https://github.com/czlonkowski/n8n-mcp/pkgs/container/n8n-mcp)
|
|
10
10
|
[](https://railway.com/deploy/n8n-mcp?referralCode=n8n-mcp)
|
|
11
11
|
|
|
12
|
-
A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to n8n node documentation, properties, and operations. Deploy in minutes to give Claude and other AI assistants deep knowledge about n8n's 2,
|
|
12
|
+
A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to n8n node documentation, properties, and operations. Deploy in minutes to give Claude and other AI assistants deep knowledge about n8n's 2,175 workflow automation nodes (827 core + 1,348 community).
|
|
13
13
|
|
|
14
14
|
## Overview
|
|
15
15
|
|
|
16
16
|
n8n-MCP serves as a bridge between n8n's workflow automation platform and AI models, enabling them to understand and work with n8n nodes effectively. It provides structured access to:
|
|
17
17
|
|
|
18
|
-
- **2,
|
|
18
|
+
- **2,175 n8n nodes** - 827 core nodes + 1,348 community nodes (1,195 verified)
|
|
19
19
|
- **Node properties** - 99% coverage with detailed schemas
|
|
20
20
|
- **Node operations** - 63.6% coverage of available actions
|
|
21
21
|
- **Documentation** - 87% coverage from official n8n docs (including AI nodes)
|
|
@@ -388,6 +388,7 @@ These tools require `N8N_API_URL` and `N8N_API_KEY` in your configuration.
|
|
|
388
388
|
#### Execution Management
|
|
389
389
|
- **`n8n_test_workflow`** - Test/trigger workflow execution (webhook, form, chat)
|
|
390
390
|
- **`n8n_executions`** - Unified execution management (list, get, delete)
|
|
391
|
+
- **`n8n_evaluations`** - Read evaluation test runs (list runs, aggregated metrics, per-case results; n8n 2.30+)
|
|
391
392
|
|
|
392
393
|
#### Data Table Management
|
|
393
394
|
- **`n8n_manage_datatable`** - Manage n8n data tables and rows (list, get, create, update, delete)
|
package/data/nodes.db
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/node-loader.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;CAChB;AAyBD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG5B;IAEI,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAuB3C,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,qCAAqC;
|
|
1
|
+
{"version":3,"file":"node-loader.d.ts","sourceRoot":"","sources":["../../src/loaders/node-loader.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;CAChB;AAyBD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG5B;IAEI,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAuB3C,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,qCAAqC;IA+C7C,OAAO,CAAC,gBAAgB;YAQV,gBAAgB;CAwD/B"}
|
|
@@ -94,6 +94,11 @@ class N8nNodeLoader {
|
|
|
94
94
|
moduleInternals._load = originalLoad;
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
+
resolveNodeClass(nodeModule, nodeName) {
|
|
98
|
+
return (nodeModule.default ||
|
|
99
|
+
nodeModule[nodeName] ||
|
|
100
|
+
Object.values(nodeModule).find(exported => typeof exported === 'function'));
|
|
101
|
+
}
|
|
97
102
|
async loadPackageNodes(packageName, packagePath, packageJson) {
|
|
98
103
|
const n8nConfig = packageJson.n8n || {};
|
|
99
104
|
const nodes = [];
|
|
@@ -104,9 +109,11 @@ class N8nNodeLoader {
|
|
|
104
109
|
try {
|
|
105
110
|
const fullPath = path_1.default.join(packageDir, nodePath);
|
|
106
111
|
const nodeModule = this.loadNodeModule(fullPath);
|
|
107
|
-
const nodeNameMatch = nodePath.match(/\/([^\/]+)\.node
|
|
108
|
-
const nodeName = nodeNameMatch
|
|
109
|
-
|
|
112
|
+
const nodeNameMatch = nodePath.match(/\/([^\/]+)\.node(?:\.ee)?\.(js|ts)$/);
|
|
113
|
+
const nodeName = nodeNameMatch
|
|
114
|
+
? nodeNameMatch[1]
|
|
115
|
+
: path_1.default.basename(nodePath).replace(/\.node(?:\.ee)?\.(js|ts)$/, '');
|
|
116
|
+
const NodeClass = this.resolveNodeClass(nodeModule, nodeName);
|
|
110
117
|
if (NodeClass) {
|
|
111
118
|
nodes.push({ packageName, nodeName, NodeClass });
|
|
112
119
|
console.log(` ✓ Loaded ${nodeName} from ${packageName}`);
|
|
@@ -125,7 +132,7 @@ class N8nNodeLoader {
|
|
|
125
132
|
try {
|
|
126
133
|
const fullPath = path_1.default.join(packageDir, nodePath);
|
|
127
134
|
const nodeModule = this.loadNodeModule(fullPath);
|
|
128
|
-
const NodeClass = nodeModule
|
|
135
|
+
const NodeClass = this.resolveNodeClass(nodeModule, nodeName);
|
|
129
136
|
if (NodeClass) {
|
|
130
137
|
nodes.push({ packageName, nodeName, NodeClass });
|
|
131
138
|
console.log(` ✓ Loaded ${nodeName} from ${packageName}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-loader.js","sourceRoot":"","sources":["../../src/loaders/node-loader.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,mCAAgC;AAchC,SAAS,2BAA2B;IAClC,MAAM,IAAI,GAAQ,IAAI,KAAK,CAAC,MAAM,yBAAyB;KAAG,EAAE;QAC9D,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,IAAI,IAAI,IAAI,MAAM;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;KACF,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,aAAa;IAA1B;QACmB,kBAAa,GAAG;YAC/B,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE;YAClD,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,EAAE;SACvE,CAAC;
|
|
1
|
+
{"version":3,"file":"node-loader.js","sourceRoot":"","sources":["../../src/loaders/node-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,9 @@ export declare function handleTestWorkflow(args: unknown, context?: InstanceCont
|
|
|
24
24
|
export declare function handleGetExecution(args: unknown, context?: InstanceContext): Promise<McpToolResponse>;
|
|
25
25
|
export declare function handleListExecutions(args: unknown, context?: InstanceContext): Promise<McpToolResponse>;
|
|
26
26
|
export declare function handleDeleteExecution(args: unknown, context?: InstanceContext): Promise<McpToolResponse>;
|
|
27
|
+
export declare function handleListTestRuns(args: unknown, context?: InstanceContext): Promise<McpToolResponse>;
|
|
28
|
+
export declare function handleGetTestRun(args: unknown, context?: InstanceContext): Promise<McpToolResponse>;
|
|
29
|
+
export declare function handleListTestCases(args: unknown, context?: InstanceContext): Promise<McpToolResponse>;
|
|
27
30
|
export declare function handleHealthCheck(context?: InstanceContext): Promise<McpToolResponse>;
|
|
28
31
|
export declare function handleDiagnostic(request: any, context?: InstanceContext): Promise<McpToolResponse>;
|
|
29
32
|
export declare function handleWorkflowVersions(args: unknown, repository: NodeRepository, context?: InstanceContext): Promise<McpToolResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers-n8n-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers-n8n-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAML,eAAe,
|
|
1
|
+
{"version":3,"file":"handlers-n8n-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers-n8n-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,9 @@ exports.handleTestWorkflow = handleTestWorkflow;
|
|
|
54
54
|
exports.handleGetExecution = handleGetExecution;
|
|
55
55
|
exports.handleListExecutions = handleListExecutions;
|
|
56
56
|
exports.handleDeleteExecution = handleDeleteExecution;
|
|
57
|
+
exports.handleListTestRuns = handleListTestRuns;
|
|
58
|
+
exports.handleGetTestRun = handleGetTestRun;
|
|
59
|
+
exports.handleListTestCases = handleListTestCases;
|
|
57
60
|
exports.handleHealthCheck = handleHealthCheck;
|
|
58
61
|
exports.handleDiagnostic = handleDiagnostic;
|
|
59
62
|
exports.handleWorkflowVersions = handleWorkflowVersions;
|
|
@@ -298,6 +301,22 @@ const listExecutionsSchema = zod_1.z.object({
|
|
|
298
301
|
status: optionalEmptyAware(zod_1.z.enum(['success', 'error', 'waiting'])),
|
|
299
302
|
includeData: zod_1.z.boolean().optional(),
|
|
300
303
|
});
|
|
304
|
+
const listTestRunsSchema = zod_1.z.object({
|
|
305
|
+
workflowId: zod_1.z.string(),
|
|
306
|
+
status: optionalEmptyAware(zod_1.z.enum(['new', 'running', 'completed', 'error', 'cancelled'])),
|
|
307
|
+
limit: zod_1.z.number().min(1).max(250).optional(),
|
|
308
|
+
cursor: optionalEmptyAware(zod_1.z.string()),
|
|
309
|
+
});
|
|
310
|
+
const getTestRunSchema = zod_1.z.object({
|
|
311
|
+
workflowId: zod_1.z.string(),
|
|
312
|
+
runId: zod_1.z.string(),
|
|
313
|
+
});
|
|
314
|
+
const listTestCasesSchema = zod_1.z.object({
|
|
315
|
+
workflowId: zod_1.z.string(),
|
|
316
|
+
runId: zod_1.z.string(),
|
|
317
|
+
limit: zod_1.z.number().min(1).max(250).optional(),
|
|
318
|
+
cursor: optionalEmptyAware(zod_1.z.string()),
|
|
319
|
+
});
|
|
301
320
|
const workflowVersionsSchema = zod_1.z.object({
|
|
302
321
|
mode: zod_1.z.enum(['list', 'get', 'rollback', 'delete', 'prune']),
|
|
303
322
|
workflowId: zod_1.z.string().optional(),
|
|
@@ -1383,6 +1402,108 @@ async function handleDeleteExecution(args, context) {
|
|
|
1383
1402
|
};
|
|
1384
1403
|
}
|
|
1385
1404
|
}
|
|
1405
|
+
const TEST_RUN_SCOPE_HINT = 'n8n rejected the request (403). The API key lacks testRun scopes - keys created before n8n 2.30 do not have them; re-create the API key on n8n 2.30+. Other causes: evaluations not licensed on this plan, or the key\'s owner lacks access to this workflow.';
|
|
1406
|
+
async function handleTestRunError(error, context) {
|
|
1407
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
1408
|
+
return { success: false, error: 'Invalid input', details: { errors: error.errors } };
|
|
1409
|
+
}
|
|
1410
|
+
if (error instanceof n8n_errors_1.N8nApiError) {
|
|
1411
|
+
if (error.statusCode === 403) {
|
|
1412
|
+
return { success: false, error: TEST_RUN_SCOPE_HINT, code: error.code };
|
|
1413
|
+
}
|
|
1414
|
+
if (error.statusCode === 404) {
|
|
1415
|
+
const client = getN8nApiClient(context);
|
|
1416
|
+
let version = client?.getCachedVersionInfo() ?? null;
|
|
1417
|
+
if (!version && client) {
|
|
1418
|
+
version = await client.getVersion().catch(() => null);
|
|
1419
|
+
}
|
|
1420
|
+
if (version && (version.major < 2 || (version.major === 2 && version.minor < 30))) {
|
|
1421
|
+
return {
|
|
1422
|
+
success: false,
|
|
1423
|
+
error: `The evaluation API requires n8n 2.30 or later; this instance runs ${version.version}. Upgrade the instance to read test runs.`,
|
|
1424
|
+
code: error.code,
|
|
1425
|
+
};
|
|
1426
|
+
}
|
|
1427
|
+
return {
|
|
1428
|
+
success: false,
|
|
1429
|
+
error: 'Workflow or test run not found. A runId must belong to the given workflowId; check both ids.',
|
|
1430
|
+
code: error.code,
|
|
1431
|
+
};
|
|
1432
|
+
}
|
|
1433
|
+
return { success: false, error: (0, n8n_errors_1.getUserFriendlyErrorMessage)(error), code: error.code };
|
|
1434
|
+
}
|
|
1435
|
+
return { success: false, error: error instanceof Error ? error.message : 'Unknown error occurred' };
|
|
1436
|
+
}
|
|
1437
|
+
async function handleListTestRuns(args, context) {
|
|
1438
|
+
try {
|
|
1439
|
+
const client = ensureApiConfigured(context);
|
|
1440
|
+
const input = listTestRunsSchema.parse(args || {});
|
|
1441
|
+
const response = await client.listTestRuns(input.workflowId, {
|
|
1442
|
+
status: input.status,
|
|
1443
|
+
limit: input.limit,
|
|
1444
|
+
cursor: input.cursor,
|
|
1445
|
+
});
|
|
1446
|
+
const note = response.data.length === 0
|
|
1447
|
+
? (input.status
|
|
1448
|
+
? `No test runs with status '${input.status}' for this workflow.`
|
|
1449
|
+
: 'No test runs. Runs exist only for workflows with an evaluation trigger that have been executed at least once.')
|
|
1450
|
+
: response.nextCursor
|
|
1451
|
+
? 'More test runs available. Use cursor to get next page.'
|
|
1452
|
+
: undefined;
|
|
1453
|
+
return {
|
|
1454
|
+
success: true,
|
|
1455
|
+
data: {
|
|
1456
|
+
testRuns: response.data,
|
|
1457
|
+
returned: response.data.length,
|
|
1458
|
+
nextCursor: response.nextCursor,
|
|
1459
|
+
hasMore: !!response.nextCursor,
|
|
1460
|
+
...(note ? { _note: note } : {})
|
|
1461
|
+
}
|
|
1462
|
+
};
|
|
1463
|
+
}
|
|
1464
|
+
catch (error) {
|
|
1465
|
+
return handleTestRunError(error, context);
|
|
1466
|
+
}
|
|
1467
|
+
}
|
|
1468
|
+
async function handleGetTestRun(args, context) {
|
|
1469
|
+
try {
|
|
1470
|
+
const client = ensureApiConfigured(context);
|
|
1471
|
+
const input = getTestRunSchema.parse(args || {});
|
|
1472
|
+
const response = await client.getTestRun(input.workflowId, input.runId);
|
|
1473
|
+
return {
|
|
1474
|
+
success: true,
|
|
1475
|
+
data: response
|
|
1476
|
+
};
|
|
1477
|
+
}
|
|
1478
|
+
catch (error) {
|
|
1479
|
+
return handleTestRunError(error, context);
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
async function handleListTestCases(args, context) {
|
|
1483
|
+
try {
|
|
1484
|
+
const client = ensureApiConfigured(context);
|
|
1485
|
+
const input = listTestCasesSchema.parse(args || {});
|
|
1486
|
+
const response = await client.listTestCases(input.workflowId, input.runId, {
|
|
1487
|
+
limit: input.limit || 20,
|
|
1488
|
+
cursor: input.cursor,
|
|
1489
|
+
});
|
|
1490
|
+
return {
|
|
1491
|
+
success: true,
|
|
1492
|
+
data: {
|
|
1493
|
+
testCases: response.data,
|
|
1494
|
+
returned: response.data.length,
|
|
1495
|
+
nextCursor: response.nextCursor,
|
|
1496
|
+
hasMore: !!response.nextCursor,
|
|
1497
|
+
...(response.nextCursor ? {
|
|
1498
|
+
_note: 'More test cases available. Paginate rather than raising limit - per-case inputs/outputs can be large.'
|
|
1499
|
+
} : {})
|
|
1500
|
+
}
|
|
1501
|
+
};
|
|
1502
|
+
}
|
|
1503
|
+
catch (error) {
|
|
1504
|
+
return handleTestRunError(error, context);
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1386
1507
|
async function handleHealthCheck(context) {
|
|
1387
1508
|
const startTime = Date.now();
|
|
1388
1509
|
try {
|