@deepset-ai/n8n-nodes-haystack-enterprise-mcp 0.0.0-stage → 0.1.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.
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_API_ORIGIN = void 0;
7
+ exports.normalizeApiOrigin = normalizeApiOrigin;
8
+ exports.getApiOriginFromCredentials = getApiOriginFromCredentials;
9
+ exports.getApiBaseUrlV1FromOrigin = getApiBaseUrlV1FromOrigin;
10
+ exports.getApiBaseUrlV2FromOrigin = getApiBaseUrlV2FromOrigin;
11
+ exports.resolveMcpAuth = resolveMcpAuth;
12
+ exports.createBearerFetch = createBearerFetch;
13
+ exports.createMcpTransport = createMcpTransport;
14
+ exports.normalizeMcpInputSchema = normalizeMcpInputSchema;
15
+ exports.describeTransportErrorHint = describeTransportErrorHint;
16
+ exports.describeToolCallErrorHint = describeToolCallErrorHint;
17
+ exports.getSelectedTools = getSelectedTools;
18
+ exports.buildMcpToolName = buildMcpToolName;
19
+ exports.contentToString = contentToString;
20
+ exports.isStructuredContent = isStructuredContent;
21
+ exports.listAllMcpTools = listAllMcpTools;
22
+ exports.loadWorkspaceOptions = loadWorkspaceOptions;
23
+ exports.loadMcpToolOptions = loadMcpToolOptions;
24
+ const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
25
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
26
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
27
+ const n8n_workflow_1 = require("n8n-workflow");
28
+ const package_json_1 = __importDefault(require("../../package.json"));
29
+ exports.DEFAULT_API_ORIGIN = 'https://api.cloud.deepset.ai';
30
+ const CREDENTIAL_NAME = 'haystackEnterpriseApi';
31
+ const SIGN_IN_CREDENTIAL_NAME = 'haystackEnterpriseOAuth2Api';
32
+ const MCP_CLIENT_NAME = 'n8n-nodes-haystack-enterprise-mcp';
33
+ function normalizeApiOrigin(serverUrl) {
34
+ return serverUrl.trim().replace(/\/+$/, '');
35
+ }
36
+ function getApiOriginFromCredentials(credentials) {
37
+ const serverUrl = credentials.serverUrl;
38
+ if (typeof serverUrl === 'string' && serverUrl.trim() !== '') {
39
+ return normalizeApiOrigin(serverUrl);
40
+ }
41
+ return exports.DEFAULT_API_ORIGIN;
42
+ }
43
+ function apiOriginWithoutVersionPath(origin) {
44
+ return normalizeApiOrigin(origin).replace(/\/api\/v[12]$/i, '');
45
+ }
46
+ function getApiBaseUrlV1FromOrigin(origin) {
47
+ return `${apiOriginWithoutVersionPath(origin)}/api/v1`;
48
+ }
49
+ function getApiBaseUrlV2FromOrigin(origin) {
50
+ return `${apiOriginWithoutVersionPath(origin)}/api/v2`;
51
+ }
52
+ function isLoadOptionsContext(context) {
53
+ return typeof context.getCurrentNodeParameter === 'function';
54
+ }
55
+ function getAuthenticationMode(context, itemIndex) {
56
+ const authentication = isLoadOptionsContext(context)
57
+ ? context.getNodeParameter('authentication')
58
+ : context.getNodeParameter('authentication', itemIndex);
59
+ if (authentication !== 'apiKey' && authentication !== 'oAuth2') {
60
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Select an authentication method.');
61
+ }
62
+ return authentication;
63
+ }
64
+ async function resolveMcpAuth(context, itemIndex) {
65
+ if (getAuthenticationMode(context, itemIndex) === 'apiKey') {
66
+ const credentials = await context.getCredentials(CREDENTIAL_NAME);
67
+ return {
68
+ token: credentials.apiKey,
69
+ apiOrigin: getApiOriginFromCredentials(credentials),
70
+ };
71
+ }
72
+ const credentials = await context.getCredentials(SIGN_IN_CREDENTIAL_NAME);
73
+ const accessToken = credentials.oauthTokenData
74
+ ?.access_token;
75
+ if (typeof accessToken !== 'string' || !accessToken) {
76
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'The Haystack Enterprise OAuth2 credential is not connected yet. Open the credential and click "Connect".');
77
+ }
78
+ return {
79
+ token: accessToken,
80
+ apiOrigin: getApiOriginFromCredentials(credentials),
81
+ refresh: async () => {
82
+ try {
83
+ const refreshed = (await context.helpers.refreshOAuth2Token.call(context, SIGN_IN_CREDENTIAL_NAME));
84
+ return typeof refreshed?.access_token === 'string' && refreshed.access_token
85
+ ? refreshed.access_token
86
+ : undefined;
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ },
92
+ };
93
+ }
94
+ function createBearerFetch(auth, baseFetch) {
95
+ let token = auth.token;
96
+ let refreshInFlight;
97
+ const send = async (url, init, bearer) => {
98
+ const headers = new Headers(init?.headers);
99
+ headers.set('Authorization', `Bearer ${bearer}`);
100
+ return (baseFetch ?? fetch)(url, { ...init, headers });
101
+ };
102
+ return async (url, init) => {
103
+ const attemptedToken = token;
104
+ const response = await send(url, init, attemptedToken);
105
+ if (response.status !== 401 || !auth.refresh) {
106
+ return response;
107
+ }
108
+ if (token !== attemptedToken) {
109
+ await response.body?.cancel().catch(() => undefined);
110
+ return send(url, init, token);
111
+ }
112
+ refreshInFlight ??= auth.refresh().finally(() => {
113
+ refreshInFlight = undefined;
114
+ });
115
+ const refreshedToken = await refreshInFlight;
116
+ if (!refreshedToken) {
117
+ return response;
118
+ }
119
+ await response.body?.cancel().catch(() => undefined);
120
+ token = refreshedToken;
121
+ return send(url, init, token);
122
+ };
123
+ }
124
+ function createMcpTransport(workspaceId, auth, signal) {
125
+ const mcpUrl = `${getApiBaseUrlV2FromOrigin(auth.apiOrigin)}/workspaces/${workspaceId}/mcp`;
126
+ const client = new index_js_1.Client({ name: MCP_CLIENT_NAME, version: package_json_1.default.version });
127
+ const transport = new streamableHttp_js_1.StreamableHTTPClientTransport(new URL(mcpUrl), {
128
+ fetch: createBearerFetch(auth),
129
+ requestInit: { signal },
130
+ });
131
+ return { client, transport, mcpUrl };
132
+ }
133
+ function normalizeMcpInputSchema(raw) {
134
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
135
+ return { type: 'object', properties: {} };
136
+ }
137
+ const schema = raw;
138
+ return {
139
+ ...schema,
140
+ type: 'object',
141
+ properties: typeof schema.properties === 'object' && schema.properties !== null ? schema.properties : {},
142
+ };
143
+ }
144
+ function describeTransportErrorHint(error) {
145
+ if (error instanceof streamableHttp_js_1.StreamableHTTPError) {
146
+ if (error.code === 401) {
147
+ return 'Check that the API key is valid, or reconnect the OAuth2 credential.';
148
+ }
149
+ if (error.code === 403) {
150
+ return "This credential doesn't have access to this workspace. Use a workspace-level one for it, or an org-wide one.";
151
+ }
152
+ }
153
+ return '';
154
+ }
155
+ function describeToolCallErrorHint(error) {
156
+ if (error instanceof types_js_1.McpError) {
157
+ if (error.code === types_js_1.ErrorCode.InvalidParams) {
158
+ return "the AI agent's input didn't match this tool's expected parameters. It may retry with corrected input; if it keeps failing, check the pipeline's required inputs in Haystack Enterprise Platform.";
159
+ }
160
+ if (error.code === types_js_1.ErrorCode.MethodNotFound) {
161
+ return 'this tool is no longer available on the MCP server. It may have been removed or disabled in Haystack Enterprise Platform — refresh the "Tools to Include"/"Tools to Exclude" list on this node.';
162
+ }
163
+ if (error.code === types_js_1.ErrorCode.InternalError) {
164
+ return "the underlying Haystack Enterprise Platform pipeline failed while running. Check the pipeline's configuration and logs in Haystack Enterprise Platform.";
165
+ }
166
+ }
167
+ return '';
168
+ }
169
+ function getSelectedTools({ mode, includeTools, excludeTools, tools, }) {
170
+ switch (mode) {
171
+ case 'selected': {
172
+ if (!includeTools.length)
173
+ return tools;
174
+ const include = new Set(includeTools);
175
+ return tools.filter((tool) => include.has(tool.name));
176
+ }
177
+ case 'except': {
178
+ const exclude = new Set(excludeTools);
179
+ return tools.filter((tool) => !exclude.has(tool.name));
180
+ }
181
+ case 'all':
182
+ default:
183
+ return tools;
184
+ }
185
+ }
186
+ const MAX_MCP_TOOL_NAME_LENGTH = 64;
187
+ function buildMcpToolName(nodeName, toolName) {
188
+ const sanitize = (value) => value.replace(/[^a-zA-Z0-9_-]/g, '_');
189
+ const sanitizedNodeName = sanitize(nodeName);
190
+ const sanitizedToolName = sanitize(toolName);
191
+ const fullName = `${sanitizedNodeName}_${sanitizedToolName}`;
192
+ if (fullName.length <= MAX_MCP_TOOL_NAME_LENGTH) {
193
+ return fullName;
194
+ }
195
+ const maxPrefixLength = MAX_MCP_TOOL_NAME_LENGTH - sanitizedToolName.length - 1;
196
+ if (maxPrefixLength > 0) {
197
+ return `${sanitizedNodeName.slice(0, maxPrefixLength)}_${sanitizedToolName}`;
198
+ }
199
+ return sanitizedToolName.slice(0, MAX_MCP_TOOL_NAME_LENGTH);
200
+ }
201
+ function contentToString(content) {
202
+ if (content === undefined || content === null)
203
+ return '';
204
+ if (typeof content === 'string')
205
+ return content;
206
+ if (Array.isArray(content)) {
207
+ return content
208
+ .map((c) => (c.type === 'text' && typeof c.text === 'string' ? c.text : JSON.stringify(c)))
209
+ .join('\n');
210
+ }
211
+ return JSON.stringify(content);
212
+ }
213
+ function isStructuredContent(value) {
214
+ return (value !== undefined && value !== null && typeof value === 'object' && !Array.isArray(value));
215
+ }
216
+ async function listAllMcpTools(client, options) {
217
+ const tools = [];
218
+ let cursor;
219
+ do {
220
+ const response = await client.listTools(cursor ? { cursor } : undefined, options);
221
+ tools.push(...response.tools);
222
+ cursor = response.nextCursor;
223
+ } while (cursor);
224
+ return tools;
225
+ }
226
+ function describeWorkspaceListErrorHint(httpCode) {
227
+ if (httpCode === '401') {
228
+ return 'Check that the API key is valid, or reconnect the OAuth2 credential.';
229
+ }
230
+ if (httpCode === '403') {
231
+ return "This credential doesn't have permission to list workspaces.";
232
+ }
233
+ return '';
234
+ }
235
+ async function loadWorkspaceOptions(context) {
236
+ const credentialType = getAuthenticationMode(context, 0) === 'oAuth2' ? SIGN_IN_CREDENTIAL_NAME : CREDENTIAL_NAME;
237
+ const credentials = await context.getCredentials(credentialType);
238
+ const apiOrigin = getApiOriginFromCredentials(credentials);
239
+ let response;
240
+ try {
241
+ response = await context.helpers.httpRequestWithAuthentication.call(context, credentialType, {
242
+ method: 'GET',
243
+ url: `${getApiBaseUrlV1FromOrigin(apiOrigin)}/workspaces`,
244
+ json: true,
245
+ });
246
+ }
247
+ catch (caught) {
248
+ const error = caught instanceof n8n_workflow_1.NodeApiError
249
+ ? caught
250
+ : new n8n_workflow_1.NodeApiError(context.getNode(), caught);
251
+ const hint = describeWorkspaceListErrorHint(error.httpCode);
252
+ const message = hint ||
253
+ (typeof error.message === 'string' && error.message !== '[object Object]'
254
+ ? error.message
255
+ : 'Failed to list workspaces from Haystack Enterprise Platform.');
256
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), message);
257
+ }
258
+ const workspaces = Array.isArray(response) ? response : [];
259
+ return workspaces
260
+ .filter((workspace) => typeof workspace.name === 'string' && typeof workspace.workspace_id === 'string')
261
+ .map((workspace) => {
262
+ const name = workspace.name;
263
+ return {
264
+ name: name.charAt(0).toUpperCase() + name.slice(1),
265
+ value: workspace.workspace_id,
266
+ };
267
+ });
268
+ }
269
+ async function loadMcpToolOptions(context, workspaceId, auth) {
270
+ const { client, transport } = createMcpTransport(workspaceId, auth);
271
+ try {
272
+ await client.connect(transport);
273
+ }
274
+ catch (error) {
275
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), describeTransportErrorHint(error) || error.message);
276
+ }
277
+ try {
278
+ const tools = await listAllMcpTools(client);
279
+ return tools.map((tool) => ({
280
+ name: tool.name,
281
+ value: tool.name,
282
+ description: tool.description ?? '',
283
+ }));
284
+ }
285
+ catch (error) {
286
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), describeTransportErrorHint(error) || error.message);
287
+ }
288
+ finally {
289
+ await client.close();
290
+ }
291
+ }
292
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../nodes/HaystackEnterpriseMcp/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@deepset-ai/n8n-nodes-haystack-enterprise-mcp",
3
+ "version": "0.1.0",
4
+ "description": "N8n community node package for using Haystack Enterprise Platform's MCP server as AI Agent tools. Self-hosted n8n only.",
5
+ "license": "MIT",
6
+ "homepage": "https://www.deepset.ai",
7
+ "keywords": [
8
+ "n8n-community-node-package",
9
+ "deepset",
10
+ "haystack",
11
+ "mcp",
12
+ "ai"
13
+ ],
14
+ "author": {
15
+ "name": "deepset",
16
+ "email": "haystack@deepset.ai"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/deepset-ai/deepset-n8n-nodes.git",
21
+ "directory": "packages/haystack-enterprise-mcp"
22
+ },
23
+ "scripts": {
24
+ "build": "n8n-node build",
25
+ "build:watch": "tsc --watch",
26
+ "dev": "n8n-node dev",
27
+ "lint": "eslint --no-inline-config nodes credentials package.json && eslint test",
28
+ "lint:fix": "eslint nodes credentials package.json test --fix",
29
+ "test": "vitest run",
30
+ "release": "n8n-node release",
31
+ "prepublishOnly": "n8n-node prerelease"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ],
39
+ "n8n": {
40
+ "n8nNodesApiVersion": 1,
41
+ "strict": false,
42
+ "credentials": [
43
+ "dist/credentials/HaystackEnterpriseApi.credentials.js",
44
+ "dist/credentials/HaystackEnterpriseOAuth2Api.credentials.js"
45
+ ],
46
+ "nodes": [
47
+ "dist/nodes/HaystackEnterpriseMcp/HaystackEnterpriseMcp.node.js"
48
+ ]
49
+ },
50
+ "dependencies": {
51
+ "@langchain/core": ">=0.3.0",
52
+ "@modelcontextprotocol/sdk": "^1.32.1",
53
+ "zod": "^3.25.76"
54
+ },
55
+ "devDependencies": {
56
+ "@n8n/node-cli": "^0.53.0",
57
+ "eslint": "9.39.5",
58
+ "prettier": "3.9.10",
59
+ "release-it": "^21.1.1",
60
+ "typescript": "6.0.3",
61
+ "vitest": "^5.0.4"
62
+ },
63
+ "peerDependencies": {
64
+ "n8n-core": "*",
65
+ "n8n-workflow": "*"
66
+ }
67
+ }