n8n-mcp 2.74.0 → 2.75.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/README.md +19 -3
- package/dist/config/n8n-api.d.ts +12 -0
- package/dist/config/n8n-api.d.ts.map +1 -1
- package/dist/config/n8n-api.js +37 -0
- package/dist/config/n8n-api.js.map +1 -1
- package/dist/constants/agent-model-providers.d.ts +4 -0
- package/dist/constants/agent-model-providers.d.ts.map +1 -0
- package/dist/constants/agent-model-providers.js +26 -0
- package/dist/constants/agent-model-providers.js.map +1 -0
- package/dist/http-server-single-session.d.ts.map +1 -1
- package/dist/http-server-single-session.js +21 -5
- package/dist/http-server-single-session.js.map +1 -1
- package/dist/mcp/agents-action-map.d.ts +16 -0
- package/dist/mcp/agents-action-map.d.ts.map +1 -0
- package/dist/mcp/agents-action-map.js +31 -0
- package/dist/mcp/agents-action-map.js.map +1 -0
- package/dist/mcp/handlers-agents.d.ts +4 -0
- package/dist/mcp/handlers-agents.d.ts.map +1 -0
- package/dist/mcp/handlers-agents.js +132 -0
- package/dist/mcp/handlers-agents.js.map +1 -0
- package/dist/mcp/handlers-n8n-manager.d.ts.map +1 -1
- package/dist/mcp/handlers-n8n-manager.js +4 -1
- package/dist/mcp/handlers-n8n-manager.js.map +1 -1
- package/dist/mcp/handlers-official-tools.d.ts +6 -0
- package/dist/mcp/handlers-official-tools.d.ts.map +1 -0
- package/dist/mcp/handlers-official-tools.js +141 -0
- package/dist/mcp/handlers-official-tools.js.map +1 -0
- package/dist/mcp/official-mcp-access.d.ts +30 -0
- package/dist/mcp/official-mcp-access.d.ts.map +1 -0
- package/dist/mcp/official-mcp-access.js +112 -0
- package/dist/mcp/official-mcp-access.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-docs/discovery/index.d.ts +1 -0
- package/dist/mcp/tool-docs/discovery/index.d.ts.map +1 -1
- package/dist/mcp/tool-docs/discovery/index.js +3 -1
- package/dist/mcp/tool-docs/discovery/index.js.map +1 -1
- package/dist/mcp/tool-docs/discovery/n8n-explore-node-resources.d.ts +3 -0
- package/dist/mcp/tool-docs/discovery/n8n-explore-node-resources.d.ts.map +1 -0
- package/dist/mcp/tool-docs/discovery/n8n-explore-node-resources.js +62 -0
- package/dist/mcp/tool-docs/discovery/n8n-explore-node-resources.js.map +1 -0
- package/dist/mcp/tool-docs/index.d.ts.map +1 -1
- package/dist/mcp/tool-docs/index.js +4 -1
- package/dist/mcp/tool-docs/index.js.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/index.d.ts +2 -0
- package/dist/mcp/tool-docs/workflow_management/index.d.ts.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/index.js +5 -1
- package/dist/mcp/tool-docs/workflow_management/index.js.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.d.ts.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.js +3 -2
- package/dist/mcp/tool-docs/workflow_management/n8n-create-workflow.js.map +1 -1
- package/dist/mcp/tool-docs/workflow_management/n8n-list-catalog.d.ts +3 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-list-catalog.d.ts.map +1 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-list-catalog.js +55 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-list-catalog.js.map +1 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-manage-agents.d.ts +3 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-manage-agents.d.ts.map +1 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-manage-agents.js +48 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-manage-agents.js.map +1 -0
- package/dist/mcp/tool-docs/workflow_management/n8n-update-partial-workflow.js +1 -1
- package/dist/mcp/tools-documentation.d.ts.map +1 -1
- package/dist/mcp/tools-documentation.js +8 -2
- 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 +56 -2
- package/dist/mcp/tools-n8n-manager.js.map +1 -1
- package/dist/mcp-engine.d.ts +2 -0
- package/dist/mcp-engine.d.ts.map +1 -1
- package/dist/mcp-engine.js +3 -1
- package/dist/mcp-engine.js.map +1 -1
- package/dist/services/n8n-api-client.d.ts +2 -1
- package/dist/services/n8n-api-client.d.ts.map +1 -1
- package/dist/services/n8n-api-client.js +10 -0
- package/dist/services/n8n-api-client.js.map +1 -1
- package/dist/services/n8n-official-mcp-client.d.ts +70 -0
- package/dist/services/n8n-official-mcp-client.d.ts.map +1 -0
- package/dist/services/n8n-official-mcp-client.js +276 -0
- package/dist/services/n8n-official-mcp-client.js.map +1 -0
- package/dist/services/n8n-validation.d.ts +4 -4
- package/dist/services/property-filter.d.ts +6 -0
- package/dist/services/property-filter.d.ts.map +1 -1
- package/dist/services/property-filter.js +22 -1
- package/dist/services/property-filter.js.map +1 -1
- package/dist/triggers/handlers/chat-handler.d.ts +2 -2
- package/dist/types/instance-context.d.ts +1 -0
- package/dist/types/instance-context.d.ts.map +1 -1
- package/dist/types/instance-context.js +13 -0
- package/dist/types/instance-context.js.map +1 -1
- package/dist/types/n8n-api.d.ts +14 -0
- package/dist/types/n8n-api.d.ts.map +1 -1
- package/dist/utils/redaction.d.ts.map +1 -1
- package/dist/utils/redaction.js +1 -0
- package/dist/utils/redaction.js.map +1 -1
- package/dist/utils/ssrf-protection.d.ts +10 -0
- package/dist/utils/ssrf-protection.d.ts.map +1 -1
- package/dist/utils/ssrf-protection.js +23 -5
- package/dist/utils/ssrf-protection.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.callOfficialTool = callOfficialTool;
|
|
4
|
+
exports.handleExploreNodeResources = handleExploreNodeResources;
|
|
5
|
+
exports.handleListCatalog = handleListCatalog;
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const official_mcp_access_1 = require("./official-mcp-access");
|
|
8
|
+
const n8n_official_mcp_client_1 = require("../services/n8n-official-mcp-client");
|
|
9
|
+
const agents_action_map_1 = require("./agents-action-map");
|
|
10
|
+
const logger_1 = require("../utils/logger");
|
|
11
|
+
const handlers_n8n_manager_1 = require("./handlers-n8n-manager");
|
|
12
|
+
const n8n_errors_1 = require("../utils/n8n-errors");
|
|
13
|
+
const exploreSchema = zod_1.z.object({
|
|
14
|
+
nodeType: zod_1.z.string().min(1),
|
|
15
|
+
version: zod_1.z.number(),
|
|
16
|
+
methodName: zod_1.z.string().min(1),
|
|
17
|
+
methodType: zod_1.z.enum(['listSearch', 'loadOptions']),
|
|
18
|
+
credentialType: zod_1.z.string().min(1),
|
|
19
|
+
credentialId: zod_1.z.string().min(1),
|
|
20
|
+
filter: zod_1.z.string().optional(),
|
|
21
|
+
paginationToken: zod_1.z.string().optional(),
|
|
22
|
+
currentNodeParameters: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
23
|
+
timeoutMs: zod_1.z.number().int().min(agents_action_map_1.MIN_TIMEOUT_MS).max(agents_action_map_1.MAX_TIMEOUT_MS).optional(),
|
|
24
|
+
}).strict();
|
|
25
|
+
const EXPLORE_TOOLS = ['explore_node_resources'];
|
|
26
|
+
async function callOfficialTool(context, toolAliases, args, timeoutMs, label, idempotent) {
|
|
27
|
+
const client = (0, official_mcp_access_1.getOfficialMcpClient)(context);
|
|
28
|
+
if (!client)
|
|
29
|
+
return (0, official_mcp_access_1.notConfiguredResponse)(context, label);
|
|
30
|
+
try {
|
|
31
|
+
const caps = await client.capabilities();
|
|
32
|
+
if (!caps.reachable)
|
|
33
|
+
return (0, official_mcp_access_1.officialFailure)(new n8n_official_mcp_client_1.OfficialMcpError(caps.error ?? 'OFFICIAL_MCP_TRANSPORT_ERROR', 'n8n MCP server is not reachable'), label);
|
|
34
|
+
const tool = toolAliases.find(t => caps.toolNames.includes(t));
|
|
35
|
+
if (!tool)
|
|
36
|
+
return (0, official_mcp_access_1.officialFailure)(new n8n_official_mcp_client_1.OfficialMcpError('OFFICIAL_MCP_TOOL_UNAVAILABLE', `This instance does not expose ${toolAliases.join(' / ')}`), label);
|
|
37
|
+
const result = await client.callTool(tool, args, { timeoutMs, idempotent });
|
|
38
|
+
const data = result.json ?? result.text;
|
|
39
|
+
if (result.text.startsWith('Input validation error'))
|
|
40
|
+
return { success: false, action: label, code: 'INVALID_ARGS', error: result.text.slice(0, 2000) };
|
|
41
|
+
if (result.isError || data?.ok === false) {
|
|
42
|
+
return { success: false, action: label, officialTool: tool, code: 'OFFICIAL_MCP_ERROR', error: (0, official_mcp_access_1.officialErrorText)(data, undefined), officialError: data };
|
|
43
|
+
}
|
|
44
|
+
return { success: true, action: label, officialTool: tool, data, ...(result.truncated ? { truncated: true } : {}) };
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
const failure = (0, official_mcp_access_1.officialFailure)(err, label);
|
|
48
|
+
logger_1.logger.warn(`${label} failed`, { code: failure.code });
|
|
49
|
+
return failure;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async function handleExploreNodeResources(args, context) {
|
|
53
|
+
const parsed = exploreSchema.safeParse(args);
|
|
54
|
+
if (!parsed.success) {
|
|
55
|
+
return { success: false, action: 'explore_node_resources', code: 'INVALID_ARGS', error: parsed.error.issues.map(i => `${i.path.join('.') || 'input'}: ${i.message}`).join('; ') };
|
|
56
|
+
}
|
|
57
|
+
const { timeoutMs, ...forwarded } = parsed.data;
|
|
58
|
+
return callOfficialTool(context, EXPLORE_TOOLS, forwarded, timeoutMs ?? agents_action_map_1.DEFAULT_TIMEOUT_MS, 'explore_node_resources', true);
|
|
59
|
+
}
|
|
60
|
+
const CATALOG_TOOLS = ['search_projects'];
|
|
61
|
+
const catalogSchema = zod_1.z.object({
|
|
62
|
+
kind: zod_1.z.enum(['projects', 'tags']),
|
|
63
|
+
query: zod_1.z.string().optional(),
|
|
64
|
+
limit: zod_1.z.number().int().min(1).max(500).optional(),
|
|
65
|
+
}).strict();
|
|
66
|
+
function filterItems(items, query, limit) {
|
|
67
|
+
const q = query?.trim().toLowerCase();
|
|
68
|
+
const filtered = q ? items.filter(i => i.name.toLowerCase().includes(q)) : items;
|
|
69
|
+
return limit ? filtered.slice(0, limit) : filtered;
|
|
70
|
+
}
|
|
71
|
+
async function handleListCatalog(args, context) {
|
|
72
|
+
const parsed = catalogSchema.safeParse(args);
|
|
73
|
+
if (!parsed.success) {
|
|
74
|
+
return { success: false, code: 'INVALID_ARGS', error: parsed.error.issues.map(i => `${i.path.join('.') || 'input'}: ${i.message}`).join('; ') };
|
|
75
|
+
}
|
|
76
|
+
const { kind, query, limit } = parsed.data;
|
|
77
|
+
const api = (0, handlers_n8n_manager_1.getN8nApiClient)(context);
|
|
78
|
+
if (!api)
|
|
79
|
+
return { success: false, code: 'NOT_CONFIGURED', error: 'n8n API not configured. Set N8N_API_URL and N8N_API_KEY.' };
|
|
80
|
+
if (kind === 'tags') {
|
|
81
|
+
try {
|
|
82
|
+
const tags = (await api.listTags({ limit: 250 })).data.map(t => ({ id: String(t.id), name: t.name }));
|
|
83
|
+
return { success: true, kind, backend: 'public-api', data: { items: filterItems(tags, query, limit) } };
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
return { success: false, kind, code: 'API_ERROR', error: err instanceof Error ? err.message : String(err) };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
const projects = (await api.listProjects()).map(p => ({ id: p.id, name: p.name, type: p.type, personal: p.type === 'personal' }));
|
|
91
|
+
return {
|
|
92
|
+
success: true,
|
|
93
|
+
kind,
|
|
94
|
+
backend: 'public-api',
|
|
95
|
+
data: { teamProjectsEnabled: true, items: filterItems(projects, query, limit) },
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
const status = err instanceof n8n_errors_1.N8nApiError ? err.statusCode : undefined;
|
|
100
|
+
if (status !== 403 && status !== 404) {
|
|
101
|
+
return { success: false, kind, code: 'API_ERROR', error: err instanceof Error ? err.message : String(err) };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if ((0, official_mcp_access_1.getOfficialMcpClient)(context)) {
|
|
105
|
+
const official = await callOfficialTool(context, CATALOG_TOOLS, {}, agents_action_map_1.DEFAULT_TIMEOUT_MS, 'list_catalog', true);
|
|
106
|
+
if (!official.success)
|
|
107
|
+
return { ...official, kind, backend: 'official-mcp' };
|
|
108
|
+
const officialData = official.data;
|
|
109
|
+
const raw = (officialData?.data ?? []);
|
|
110
|
+
const items = raw.map(p => ({ id: String(p.id), name: String(p.name), type: p.type, personal: p.type === 'personal' }));
|
|
111
|
+
const teamProjectsEnabled = typeof officialData?.teamProjectsEnabled === 'boolean'
|
|
112
|
+
? officialData.teamProjectsEnabled
|
|
113
|
+
: items.some(p => !p.personal);
|
|
114
|
+
return {
|
|
115
|
+
success: true,
|
|
116
|
+
kind,
|
|
117
|
+
backend: 'official-mcp',
|
|
118
|
+
data: { teamProjectsEnabled, items: filterItems(items, query, limit) },
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const personalId = await api.resolvePersonalProjectId();
|
|
123
|
+
return {
|
|
124
|
+
success: true,
|
|
125
|
+
kind,
|
|
126
|
+
backend: 'public-api',
|
|
127
|
+
data: { teamProjectsEnabled: false, items: filterItems([{ id: personalId, name: 'Personal', type: 'personal', personal: true }], query, limit) },
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
return {
|
|
132
|
+
success: false,
|
|
133
|
+
kind,
|
|
134
|
+
backend: 'public-api',
|
|
135
|
+
code: 'API_ERROR',
|
|
136
|
+
error: err instanceof Error ? err.message : String(err),
|
|
137
|
+
hint: 'Team projects are not available through the Public API on this instance and the personal project could not be resolved. Pass projectId explicitly, or configure N8N_MCP_ACCESS_TOKEN so projects can be listed through n8n\'s MCP server.',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=handlers-official-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers-official-tools.js","sourceRoot":"","sources":["../../src/mcp/handlers-official-tools.ts"],"names":[],"mappings":";;AAwCA,4CAgCC;AAED,gEAQC;AAgCD,8CA0EC;AApLD,6BAAwB;AAGxB,+DAAwH;AACxH,iFAAuE;AACvE,2DAAyF;AACzF,4CAAyC;AACzC,iEAAyD;AACzD,oDAAkD;AAIlD,MAAM,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACjD,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,qBAAqB,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,kCAAc,CAAC,CAAC,GAAG,CAAC,kCAAc,CAAC,CAAC,QAAQ,EAAE;CAC/E,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,aAAa,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAO1C,KAAK,UAAU,gBAAgB,CACpC,OAAoC,EACpC,WAAqB,EACrB,IAA6B,EAC7B,SAAiB,EACjB,KAAa,EACb,UAAmB;IAEnB,MAAM,MAAM,GAAG,IAAA,0CAAoB,EAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAA,2CAAqB,EAAC,OAAO,EAAE,KAAK,CAAoB,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAA,qCAAe,EAAC,IAAI,0CAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,8BAA8B,EAAE,iCAAiC,CAAC,EAAE,KAAK,CAAoB,CAAC;QAC7K,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAA,qCAAe,EAAC,IAAI,0CAAgB,CAAC,+BAA+B,EAAE,iCAAiC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAoB,CAAC;QAC/K,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;QAMxC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QACxJ,IAAI,MAAM,CAAC,OAAO,IAAK,IAAY,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAA,uCAAiB,EAAC,IAAI,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC3J,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACtH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,IAAA,qCAAe,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,eAAM,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,OAA0B,CAAC;IACpC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAAC,IAAa,EAAE,OAAyB;IACvF,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACpL,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAEhD,OAAO,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,IAAI,sCAAkB,EAAE,wBAAwB,EAAE,IAAI,CAAC,CAAC;AAC9H,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAE1C,MAAM,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAClC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC;AASZ,SAAS,WAAW,CAAC,KAAoB,EAAE,KAAc,EAAE,KAAc;IACvE,MAAM,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjF,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC;AAWM,KAAK,UAAU,iBAAiB,CAAC,IAAa,EAAE,OAAyB;IAC9E,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAClJ,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAA,sCAAe,EAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,0DAA0D,EAAE,CAAC;IAE/H,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACtG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAqB,CAAC;QAC7H,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAqB,CAAC;QACjI,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QAIlI,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;SAC7D,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,wBAAW,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAqB,CAAC;QACjI,CAAC;IACH,CAAC;IAID,IAAI,IAAA,0CAAoB,EAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,sCAAkB,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QAC9G,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAqB,CAAC;QAEhG,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAW,CAAC;QAC1C,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAU,CAAC;QAChD,MAAM,KAAK,GAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC;QACvI,MAAM,mBAAmB,GAAG,OAAO,YAAY,EAAE,mBAAmB,KAAK,SAAS;YAChF,CAAC,CAAC,YAAY,CAAC,mBAAmB;YAClC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;SACpD,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACxD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;SAC9H,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI;YACJ,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACvD,IAAI,EAAE,2OAA2O;SAC/N,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { InstanceContext } from '../types/instance-context';
|
|
2
|
+
import { OfficialMcpConfig } from '../config/n8n-api';
|
|
3
|
+
import { N8nOfficialMcpClient, OfficialMcpErrorCode } from '../services/n8n-official-mcp-client';
|
|
4
|
+
export interface OfficialMcpFailure {
|
|
5
|
+
success: false;
|
|
6
|
+
action?: string;
|
|
7
|
+
code: string;
|
|
8
|
+
error: string;
|
|
9
|
+
hint?: string;
|
|
10
|
+
officialError?: unknown;
|
|
11
|
+
details?: Record<string, unknown>;
|
|
12
|
+
}
|
|
13
|
+
export declare function resolveOfficialMcpConfig(context?: InstanceContext): OfficialMcpConfig | null;
|
|
14
|
+
export declare function getOfficialMcpClient(context?: InstanceContext): N8nOfficialMcpClient | null;
|
|
15
|
+
export declare function notConfiguredResponse(context?: InstanceContext, action?: string): OfficialMcpFailure;
|
|
16
|
+
export declare function officialErrorText(data: unknown, officialCode: string | undefined): string;
|
|
17
|
+
export declare function officialFailure(err: unknown, action?: string): OfficialMcpFailure;
|
|
18
|
+
export interface OfficialMcpHealth {
|
|
19
|
+
configured: boolean;
|
|
20
|
+
endpoint?: string;
|
|
21
|
+
reachable?: boolean;
|
|
22
|
+
toolCount?: number;
|
|
23
|
+
agentTools?: boolean;
|
|
24
|
+
checkedAt?: string;
|
|
25
|
+
error?: OfficialMcpErrorCode;
|
|
26
|
+
hint?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function buildOfficialMcpHealth(context: InstanceContext | undefined, live: boolean): Promise<OfficialMcpHealth>;
|
|
29
|
+
export declare function clearOfficialMcpClientCache(): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=official-mcp-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"official-mcp-access.d.ts","sourceRoot":"","sources":["../../src/mcp/official-mcp-access.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAyD,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EACL,oBAAoB,EAEpB,oBAAoB,EAGrB,MAAM,qCAAqC,CAAC;AAI7C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAkCD,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,iBAAiB,GAAG,IAAI,CAS5F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,oBAAoB,GAAG,IAAI,CAmB3F;AA0BD,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAQpG;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAWzF;AAGD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAUjF;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmB5H;AAOD,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAIjE"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveOfficialMcpConfig = resolveOfficialMcpConfig;
|
|
4
|
+
exports.getOfficialMcpClient = getOfficialMcpClient;
|
|
5
|
+
exports.notConfiguredResponse = notConfiguredResponse;
|
|
6
|
+
exports.officialErrorText = officialErrorText;
|
|
7
|
+
exports.officialFailure = officialFailure;
|
|
8
|
+
exports.buildOfficialMcpHealth = buildOfficialMcpHealth;
|
|
9
|
+
exports.clearOfficialMcpClientCache = clearOfficialMcpClientCache;
|
|
10
|
+
const n8n_api_1 = require("../config/n8n-api");
|
|
11
|
+
const n8n_official_mcp_client_1 = require("../services/n8n-official-mcp-client");
|
|
12
|
+
const cache_utils_1 = require("../utils/cache-utils");
|
|
13
|
+
const logger_1 = require("../utils/logger");
|
|
14
|
+
const clientCache = (0, cache_utils_1.createInstanceCache)((client, key) => {
|
|
15
|
+
client.close().catch(err => logger_1.logger.debug('Error closing evicted MCP client', { key: key.slice(0, 8), error: err.message }));
|
|
16
|
+
});
|
|
17
|
+
function resolveOfficialMcpConfig(context) {
|
|
18
|
+
if (context?.n8nApiUrl && (context?.n8nApiKey || context?.n8nMcpAccessToken)) {
|
|
19
|
+
return (0, n8n_api_1.getOfficialMcpConfigFromContext)(context);
|
|
20
|
+
}
|
|
21
|
+
if (process.env.ENABLE_MULTI_TENANT === 'true') {
|
|
22
|
+
logger_1.logger.warn('Refusing env-credential fallback for official MCP in multi-tenant mode');
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return (0, n8n_api_1.getOfficialMcpConfig)();
|
|
26
|
+
}
|
|
27
|
+
function getOfficialMcpClient(context) {
|
|
28
|
+
const config = resolveOfficialMcpConfig(context);
|
|
29
|
+
if (!config)
|
|
30
|
+
return null;
|
|
31
|
+
const cacheKey = (0, cache_utils_1.createCacheKey)(`${config.endpoint}:${config.token}:${context?.instanceId ?? 'default'}`);
|
|
32
|
+
const cached = clientCache.get(cacheKey);
|
|
33
|
+
if (cached) {
|
|
34
|
+
cache_utils_1.cacheMetrics.recordHit();
|
|
35
|
+
return cached;
|
|
36
|
+
}
|
|
37
|
+
cache_utils_1.cacheMetrics.recordMiss();
|
|
38
|
+
const client = new n8n_official_mcp_client_1.N8nOfficialMcpClient({ endpoint: config.endpoint, token: config.token, instanceId: context?.instanceId });
|
|
39
|
+
clientCache.set(cacheKey, client);
|
|
40
|
+
cache_utils_1.cacheMetrics.recordSet();
|
|
41
|
+
logger_1.logger.info('Created n8n MCP client', { host: new URL(config.endpoint).host, cacheKey: cacheKey.slice(0, 8) + '...' });
|
|
42
|
+
return client;
|
|
43
|
+
}
|
|
44
|
+
const SETUP_HINT_MAX_LENGTH = 500;
|
|
45
|
+
function embedderSetupHint(context) {
|
|
46
|
+
const raw = context?.metadata?.officialMcpSetupHint;
|
|
47
|
+
if (typeof raw !== 'string')
|
|
48
|
+
return undefined;
|
|
49
|
+
const bounded = raw.slice(0, SETUP_HINT_MAX_LENGTH * 2);
|
|
50
|
+
const stripped = bounded
|
|
51
|
+
.replace(/[<>]/g, '')
|
|
52
|
+
.replace(/\s+/g, ' ')
|
|
53
|
+
.trim();
|
|
54
|
+
if (stripped.length === 0)
|
|
55
|
+
return undefined;
|
|
56
|
+
return stripped.slice(0, SETUP_HINT_MAX_LENGTH);
|
|
57
|
+
}
|
|
58
|
+
function notConfiguredResponse(context, action) {
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
action,
|
|
62
|
+
code: 'NOT_CONFIGURED',
|
|
63
|
+
error: 'n8n instance-level MCP access is not configured for this instance',
|
|
64
|
+
hint: embedderSetupHint(context) ?? n8n_official_mcp_client_1.OFFICIAL_MCP_HINTS.NOT_CONFIGURED,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function officialErrorText(data, officialCode) {
|
|
68
|
+
const obj = data;
|
|
69
|
+
const raw = typeof obj?.message === 'string'
|
|
70
|
+
? obj.message
|
|
71
|
+
: typeof obj?.error === 'string'
|
|
72
|
+
? obj.error
|
|
73
|
+
: typeof data === 'string'
|
|
74
|
+
? data
|
|
75
|
+
: `n8n returned ${officialCode ?? 'an error'}`;
|
|
76
|
+
return String(raw).slice(0, 2000);
|
|
77
|
+
}
|
|
78
|
+
function officialFailure(err, action) {
|
|
79
|
+
const mapped = err instanceof n8n_official_mcp_client_1.OfficialMcpError ? err : (0, n8n_official_mcp_client_1.mapOfficialTransportError)(err);
|
|
80
|
+
return {
|
|
81
|
+
success: false,
|
|
82
|
+
action,
|
|
83
|
+
code: mapped.code,
|
|
84
|
+
error: mapped.message,
|
|
85
|
+
hint: mapped.hint,
|
|
86
|
+
...(mapped.status !== undefined ? { details: { status: mapped.status } } : {}),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function buildOfficialMcpHealth(context, live) {
|
|
90
|
+
const config = resolveOfficialMcpConfig(context);
|
|
91
|
+
if (!config)
|
|
92
|
+
return { configured: false, hint: embedderSetupHint(context) ?? n8n_official_mcp_client_1.OFFICIAL_MCP_HINTS.NOT_CONFIGURED };
|
|
93
|
+
const client = getOfficialMcpClient(context);
|
|
94
|
+
const caps = live ? await client.capabilities(true) : client.cachedCapabilities();
|
|
95
|
+
if (!caps)
|
|
96
|
+
return { configured: true, endpoint: config.endpoint };
|
|
97
|
+
return {
|
|
98
|
+
configured: true,
|
|
99
|
+
endpoint: config.endpoint,
|
|
100
|
+
reachable: caps.reachable,
|
|
101
|
+
toolCount: caps.toolCount,
|
|
102
|
+
agentTools: caps.agentTools,
|
|
103
|
+
checkedAt: new Date(caps.checkedAt).toISOString(),
|
|
104
|
+
...(caps.error ? { error: caps.error, hint: n8n_official_mcp_client_1.OFFICIAL_MCP_HINTS[caps.error] } : {}),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
async function clearOfficialMcpClientCache() {
|
|
108
|
+
const clients = [...clientCache.values()];
|
|
109
|
+
clientCache.clear();
|
|
110
|
+
await Promise.all(clients.map(c => c.close().catch(() => undefined)));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=official-mcp-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"official-mcp-access.js","sourceRoot":"","sources":["../../src/mcp/official-mcp-access.ts"],"names":[],"mappings":";;AA+DA,4DASC;AAED,oDAmBC;AA0BD,sDAQC;AAGD,8CAWC;AAGD,0CAUC;AAqBD,wDAmBC;AAOD,kEAIC;AAnMD,+CAA6G;AAC7G,iFAM6C;AAC7C,sDAAyF;AACzF,4CAAyC;AAezC,MAAM,WAAW,GAAG,IAAA,iCAAmB,EAAuB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;IAC5E,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACzI,CAAC,CAAC,CAAC;AA2BH,SAAgB,wBAAwB,CAAC,OAAyB;IAChE,IAAI,OAAO,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC7E,OAAO,IAAA,yCAA+B,EAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM,EAAE,CAAC;QAC/C,eAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAA,8BAAoB,GAAE,CAAC;AAChC,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAyB;IAC5D,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,QAAQ,GAAG,IAAA,4BAAc,EAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1G,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,0BAAY,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,0BAAY,CAAC,UAAU,EAAE,CAAC;IAE1B,MAAM,MAAM,GAAG,IAAI,8CAAoB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7H,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClC,0BAAY,CAAC,SAAS,EAAE,CAAC;IAGzB,eAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;IACvH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAUlC,SAAS,iBAAiB,CAAC,OAAyB;IAClD,MAAM,GAAG,GAAG,OAAO,EAAE,QAAQ,EAAE,oBAAoB,CAAC;IACpD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAG9C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;IACV,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAyB,EAAE,MAAe;IAC9E,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM;QACN,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,mEAAmE;QAC1E,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,4CAAkB,CAAC,cAAc;KACtE,CAAC;AACJ,CAAC;AAGD,SAAgB,iBAAiB,CAAC,IAAa,EAAE,YAAgC;IAC/E,MAAM,GAAG,GAAG,IAAW,CAAC;IACxB,MAAM,GAAG,GACP,OAAO,GAAG,EAAE,OAAO,KAAK,QAAQ;QAC9B,CAAC,CAAC,GAAG,CAAC,OAAO;QACb,CAAC,CAAC,OAAO,GAAG,EAAE,KAAK,KAAK,QAAQ;YAC9B,CAAC,CAAC,GAAG,CAAC,KAAK;YACX,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;gBACxB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,gBAAgB,YAAY,IAAI,UAAU,EAAE,CAAC;IACvD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAGD,SAAgB,eAAe,CAAC,GAAY,EAAE,MAAe;IAC3D,MAAM,MAAM,GAAG,GAAG,YAAY,0CAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,mDAAyB,EAAC,GAAG,CAAC,CAAC;IACtF,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,OAAO;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAqBM,KAAK,UAAU,sBAAsB,CAAC,OAAoC,EAAE,IAAa;IAC9F,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAGjD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,4CAAkB,CAAC,cAAc,EAAE,CAAC;IAEjH,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAClF,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAElE,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACjD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,4CAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC;AAOM,KAAK,UAAU,2BAA2B;IAC/C,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -65,6 +65,8 @@ const template_service_1 = require("../templates/template-service");
|
|
|
65
65
|
const workflow_validator_1 = require("../services/workflow-validator");
|
|
66
66
|
const n8n_api_1 = require("../config/n8n-api");
|
|
67
67
|
const n8nHandlers = __importStar(require("./handlers-n8n-manager"));
|
|
68
|
+
const handlers_agents_1 = require("./handlers-agents");
|
|
69
|
+
const handlers_official_tools_1 = require("./handlers-official-tools");
|
|
68
70
|
const handlers_workflow_diff_1 = require("./handlers-workflow-diff");
|
|
69
71
|
const tools_documentation_1 = require("./tools-documentation");
|
|
70
72
|
const version_1 = require("../utils/version");
|
|
@@ -950,6 +952,7 @@ class N8NDocumentationMCPServer {
|
|
|
950
952
|
: { valid: false, errors: [{ field: 'action', message: 'action is required' }] };
|
|
951
953
|
break;
|
|
952
954
|
case 'n8n_manage_folders':
|
|
955
|
+
case 'n8n_manage_agents':
|
|
953
956
|
validationResult = args.action
|
|
954
957
|
? { valid: true, errors: [] }
|
|
955
958
|
: { valid: false, errors: [{ field: 'action', message: 'action is required' }] };
|
|
@@ -1432,6 +1435,14 @@ class N8NDocumentationMCPServer {
|
|
|
1432
1435
|
throw new Error(`Unknown action: ${folderAction}. Valid actions: create, list, get, rename, move, delete`);
|
|
1433
1436
|
}
|
|
1434
1437
|
}
|
|
1438
|
+
case 'n8n_manage_agents':
|
|
1439
|
+
this.validateToolParams(name, args, ['action']);
|
|
1440
|
+
return (0, handlers_agents_1.handleManageAgents)(args, this.instanceContext);
|
|
1441
|
+
case 'n8n_explore_node_resources':
|
|
1442
|
+
return (0, handlers_official_tools_1.handleExploreNodeResources)(args, this.instanceContext);
|
|
1443
|
+
case 'n8n_list_catalog':
|
|
1444
|
+
this.validateToolParams(name, args, ['kind']);
|
|
1445
|
+
return (0, handlers_official_tools_1.handleListCatalog)(args, this.instanceContext);
|
|
1435
1446
|
case 'n8n_manage_credentials': {
|
|
1436
1447
|
this.validateToolParams(name, args, ['action']);
|
|
1437
1448
|
const credAction = args.action;
|