n8n-mcp 2.18.0 → 2.18.3
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/mcp/index.js +120 -92
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +30 -8
- package/dist/mcp/server.js.map +1 -1
- package/dist/telemetry/early-error-logger.d.ts +26 -0
- package/dist/telemetry/early-error-logger.d.ts.map +1 -0
- package/dist/telemetry/early-error-logger.js +187 -0
- package/dist/telemetry/early-error-logger.js.map +1 -0
- package/dist/telemetry/error-sanitization-utils.d.ts +2 -0
- package/dist/telemetry/error-sanitization-utils.d.ts.map +1 -0
- package/dist/telemetry/error-sanitization-utils.js +37 -0
- package/dist/telemetry/error-sanitization-utils.js.map +1 -0
- package/dist/telemetry/error-sanitizer.d.ts +4 -0
- package/dist/telemetry/error-sanitizer.d.ts.map +1 -0
- package/dist/telemetry/error-sanitizer.js +45 -0
- package/dist/telemetry/error-sanitizer.js.map +1 -0
- package/dist/telemetry/event-tracker.d.ts +7 -1
- package/dist/telemetry/event-tracker.d.ts.map +1 -1
- package/dist/telemetry/event-tracker.js +34 -31
- package/dist/telemetry/event-tracker.js.map +1 -1
- package/dist/telemetry/event-validator.d.ts.map +1 -1
- package/dist/telemetry/event-validator.js +17 -0
- package/dist/telemetry/event-validator.js.map +1 -1
- package/dist/telemetry/startup-checkpoints.d.ts +26 -0
- package/dist/telemetry/startup-checkpoints.d.ts.map +1 -0
- package/dist/telemetry/startup-checkpoints.js +65 -0
- package/dist/telemetry/startup-checkpoints.js.map +1 -0
- package/dist/telemetry/telemetry-types.d.ts +33 -0
- package/dist/telemetry/telemetry-types.d.ts.map +1 -1
- package/dist/telemetry/telemetry-types.js.map +1 -1
- package/package.json +1 -1
package/dist/mcp/index.js
CHANGED
|
@@ -37,6 +37,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
37
37
|
const server_1 = require("./server");
|
|
38
38
|
const logger_1 = require("../utils/logger");
|
|
39
39
|
const config_manager_1 = require("../telemetry/config-manager");
|
|
40
|
+
const early_error_logger_1 = require("../telemetry/early-error-logger");
|
|
41
|
+
const startup_checkpoints_1 = require("../telemetry/startup-checkpoints");
|
|
40
42
|
const fs_1 = require("fs");
|
|
41
43
|
process.on('uncaughtException', (error) => {
|
|
42
44
|
if (process.env.MCP_MODE !== 'stdio') {
|
|
@@ -70,25 +72,31 @@ function isContainerEnvironment() {
|
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
async function main() {
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
75
|
+
const startTime = Date.now();
|
|
76
|
+
const earlyLogger = early_error_logger_1.EarlyErrorLogger.getInstance();
|
|
77
|
+
const checkpoints = [];
|
|
78
|
+
try {
|
|
79
|
+
earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.PROCESS_STARTED);
|
|
80
|
+
checkpoints.push(startup_checkpoints_1.STARTUP_CHECKPOINTS.PROCESS_STARTED);
|
|
81
|
+
const args = process.argv.slice(2);
|
|
82
|
+
if (args.length > 0 && args[0] === 'telemetry') {
|
|
83
|
+
const telemetryConfig = config_manager_1.TelemetryConfigManager.getInstance();
|
|
84
|
+
const action = args[1];
|
|
85
|
+
switch (action) {
|
|
86
|
+
case 'enable':
|
|
87
|
+
telemetryConfig.enable();
|
|
88
|
+
process.exit(0);
|
|
89
|
+
break;
|
|
90
|
+
case 'disable':
|
|
91
|
+
telemetryConfig.disable();
|
|
92
|
+
process.exit(0);
|
|
93
|
+
break;
|
|
94
|
+
case 'status':
|
|
95
|
+
console.log(telemetryConfig.getStatus());
|
|
96
|
+
process.exit(0);
|
|
97
|
+
break;
|
|
98
|
+
default:
|
|
99
|
+
console.log(`
|
|
92
100
|
Usage: n8n-mcp telemetry [command]
|
|
93
101
|
|
|
94
102
|
Commands:
|
|
@@ -98,90 +106,110 @@ Commands:
|
|
|
98
106
|
|
|
99
107
|
Learn more: https://github.com/czlonkowski/n8n-mcp/blob/main/PRIVACY.md
|
|
100
108
|
`);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
const mode = process.env.MCP_MODE || 'stdio';
|
|
105
|
-
try {
|
|
106
|
-
if (mode === 'http') {
|
|
107
|
-
console.error(`Starting n8n Documentation MCP Server in ${mode} mode...`);
|
|
108
|
-
console.error('Current directory:', process.cwd());
|
|
109
|
-
console.error('Node version:', process.version);
|
|
109
|
+
process.exit(args[1] ? 1 : 0);
|
|
110
|
+
}
|
|
110
111
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
const mode = process.env.MCP_MODE || 'stdio';
|
|
113
|
+
earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.TELEMETRY_INITIALIZING);
|
|
114
|
+
checkpoints.push(startup_checkpoints_1.STARTUP_CHECKPOINTS.TELEMETRY_INITIALIZING);
|
|
115
|
+
earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.TELEMETRY_READY);
|
|
116
|
+
checkpoints.push(startup_checkpoints_1.STARTUP_CHECKPOINTS.TELEMETRY_READY);
|
|
117
|
+
try {
|
|
118
|
+
if (mode === 'http') {
|
|
119
|
+
console.error(`Starting n8n Documentation MCP Server in ${mode} mode...`);
|
|
120
|
+
console.error('Current directory:', process.cwd());
|
|
121
|
+
console.error('Node version:', process.version);
|
|
122
|
+
}
|
|
123
|
+
earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.MCP_HANDSHAKE_STARTING);
|
|
124
|
+
checkpoints.push(startup_checkpoints_1.STARTUP_CHECKPOINTS.MCP_HANDSHAKE_STARTING);
|
|
125
|
+
if (mode === 'http') {
|
|
126
|
+
if (process.env.USE_FIXED_HTTP === 'true') {
|
|
127
|
+
const { startFixedHTTPServer } = await Promise.resolve().then(() => __importStar(require('../http-server')));
|
|
128
|
+
await startFixedHTTPServer();
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
const { SingleSessionHTTPServer } = await Promise.resolve().then(() => __importStar(require('../http-server-single-session')));
|
|
132
|
+
const server = new SingleSessionHTTPServer();
|
|
133
|
+
const shutdown = async () => {
|
|
134
|
+
await server.shutdown();
|
|
135
|
+
process.exit(0);
|
|
136
|
+
};
|
|
137
|
+
process.on('SIGTERM', shutdown);
|
|
138
|
+
process.on('SIGINT', shutdown);
|
|
139
|
+
await server.start();
|
|
140
|
+
}
|
|
115
141
|
}
|
|
116
142
|
else {
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
const shutdown = async () => {
|
|
120
|
-
|
|
121
|
-
|
|
143
|
+
const server = new server_1.N8NDocumentationMCPServer(undefined, earlyLogger);
|
|
144
|
+
let isShuttingDown = false;
|
|
145
|
+
const shutdown = async (signal = 'UNKNOWN') => {
|
|
146
|
+
if (isShuttingDown)
|
|
147
|
+
return;
|
|
148
|
+
isShuttingDown = true;
|
|
149
|
+
try {
|
|
150
|
+
logger_1.logger.info(`Shutdown initiated by: ${signal}`);
|
|
151
|
+
await server.shutdown();
|
|
152
|
+
if (process.stdin && !process.stdin.destroyed) {
|
|
153
|
+
process.stdin.pause();
|
|
154
|
+
process.stdin.destroy();
|
|
155
|
+
}
|
|
156
|
+
setTimeout(() => {
|
|
157
|
+
logger_1.logger.warn('Shutdown timeout exceeded, forcing exit');
|
|
158
|
+
process.exit(0);
|
|
159
|
+
}, 1000).unref();
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
logger_1.logger.error('Error during shutdown:', error);
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
122
165
|
};
|
|
123
|
-
process.on('SIGTERM', shutdown);
|
|
124
|
-
process.on('SIGINT', shutdown);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
isShuttingDown = true;
|
|
135
|
-
try {
|
|
136
|
-
logger_1.logger.info(`Shutdown initiated by: ${signal}`);
|
|
137
|
-
await server.shutdown();
|
|
138
|
-
if (process.stdin && !process.stdin.destroyed) {
|
|
139
|
-
process.stdin.pause();
|
|
140
|
-
process.stdin.destroy();
|
|
166
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
167
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
168
|
+
process.on('SIGHUP', () => shutdown('SIGHUP'));
|
|
169
|
+
const isContainer = isContainerEnvironment();
|
|
170
|
+
if (!isContainer && process.stdin.readable && !process.stdin.destroyed) {
|
|
171
|
+
try {
|
|
172
|
+
process.stdin.on('end', () => shutdown('STDIN_END'));
|
|
173
|
+
process.stdin.on('close', () => shutdown('STDIN_CLOSE'));
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
logger_1.logger.error('Failed to register stdin handlers, using signal handlers only:', error);
|
|
141
177
|
}
|
|
142
|
-
setTimeout(() => {
|
|
143
|
-
logger_1.logger.warn('Shutdown timeout exceeded, forcing exit');
|
|
144
|
-
process.exit(0);
|
|
145
|
-
}, 1000).unref();
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
logger_1.logger.error('Error during shutdown:', error);
|
|
149
|
-
process.exit(1);
|
|
150
178
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
179
|
+
await server.run();
|
|
180
|
+
}
|
|
181
|
+
earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.MCP_HANDSHAKE_COMPLETE);
|
|
182
|
+
checkpoints.push(startup_checkpoints_1.STARTUP_CHECKPOINTS.MCP_HANDSHAKE_COMPLETE);
|
|
183
|
+
earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.SERVER_READY);
|
|
184
|
+
checkpoints.push(startup_checkpoints_1.STARTUP_CHECKPOINTS.SERVER_READY);
|
|
185
|
+
const startupDuration = Date.now() - startTime;
|
|
186
|
+
earlyLogger.logStartupSuccess(checkpoints, startupDuration);
|
|
187
|
+
logger_1.logger.info(`Server startup completed in ${startupDuration}ms (${checkpoints.length} checkpoints passed)`);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
const failedCheckpoint = (0, startup_checkpoints_1.findFailedCheckpoint)(checkpoints);
|
|
191
|
+
earlyLogger.logStartupError(failedCheckpoint, error);
|
|
192
|
+
if (mode !== 'stdio') {
|
|
193
|
+
console.error('Failed to start MCP server:', error);
|
|
194
|
+
logger_1.logger.error('Failed to start MCP server', error);
|
|
195
|
+
if (error instanceof Error && error.message.includes('nodes.db not found')) {
|
|
196
|
+
console.error('\nTo fix this issue:');
|
|
197
|
+
console.error('1. cd to the n8n-mcp directory');
|
|
198
|
+
console.error('2. Run: npm run build');
|
|
199
|
+
console.error('3. Run: npm run rebuild');
|
|
160
200
|
}
|
|
161
|
-
|
|
162
|
-
|
|
201
|
+
else if (error instanceof Error && error.message.includes('NODE_MODULE_VERSION')) {
|
|
202
|
+
console.error('\nTo fix this Node.js version mismatch:');
|
|
203
|
+
console.error('1. cd to the n8n-mcp directory');
|
|
204
|
+
console.error('2. Run: npm rebuild better-sqlite3');
|
|
205
|
+
console.error('3. If that doesn\'t work, try: rm -rf node_modules && npm install');
|
|
163
206
|
}
|
|
164
207
|
}
|
|
165
|
-
|
|
208
|
+
process.exit(1);
|
|
166
209
|
}
|
|
167
210
|
}
|
|
168
|
-
catch (
|
|
169
|
-
|
|
170
|
-
console.error('Failed to start MCP server:', error);
|
|
171
|
-
logger_1.logger.error('Failed to start MCP server', error);
|
|
172
|
-
if (error instanceof Error && error.message.includes('nodes.db not found')) {
|
|
173
|
-
console.error('\nTo fix this issue:');
|
|
174
|
-
console.error('1. cd to the n8n-mcp directory');
|
|
175
|
-
console.error('2. Run: npm run build');
|
|
176
|
-
console.error('3. Run: npm run rebuild');
|
|
177
|
-
}
|
|
178
|
-
else if (error instanceof Error && error.message.includes('NODE_MODULE_VERSION')) {
|
|
179
|
-
console.error('\nTo fix this Node.js version mismatch:');
|
|
180
|
-
console.error('1. cd to the n8n-mcp directory');
|
|
181
|
-
console.error('2. Run: npm rebuild better-sqlite3');
|
|
182
|
-
console.error('3. If that doesn\'t work, try: rm -rf node_modules && npm install');
|
|
183
|
-
}
|
|
184
|
-
}
|
|
211
|
+
catch (outerError) {
|
|
212
|
+
logger_1.logger.error('Critical startup error:', outerError);
|
|
185
213
|
process.exit(1);
|
|
186
214
|
}
|
|
187
215
|
}
|
package/dist/mcp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qCAAqD;AACrD,4CAAyC;AACzC,gEAAqE;AACrE,2BAAgC;AAGhC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAQH,SAAS,sBAAsB;IAE7B,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEpE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,IAAI,CAAC;QACH,OAAO,IAAA,eAAU,EAAC,aAAa,CAAC,IAAI,IAAA,eAAU,EAAC,oBAAoB,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,eAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InstanceContext } from '../types/instance-context';
|
|
2
|
+
import { EarlyErrorLogger } from '../telemetry/early-error-logger';
|
|
2
3
|
export declare class N8NDocumentationMCPServer {
|
|
3
4
|
private server;
|
|
4
5
|
private db;
|
|
@@ -10,7 +11,8 @@ export declare class N8NDocumentationMCPServer {
|
|
|
10
11
|
private instanceContext?;
|
|
11
12
|
private previousTool;
|
|
12
13
|
private previousToolTimestamp;
|
|
13
|
-
|
|
14
|
+
private earlyLogger;
|
|
15
|
+
constructor(instanceContext?: InstanceContext, earlyLogger?: EarlyErrorLogger);
|
|
14
16
|
private initializeDatabase;
|
|
15
17
|
private initializeInMemorySchema;
|
|
16
18
|
private ensureInitialized;
|
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":"AAqCA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAqBnE,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,EAAE,CAAgC;IAC1C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,WAAW,CAAiC;gBAExC,eAAe,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,gBAAgB;YAqE/D,kBAAkB;YAwClB,wBAAwB;YAgBxB,iBAAiB;IAO/B,OAAO,CAAC,aAAa;IAgRrB,OAAO,CAAC,wBAAwB;IAoFhC,OAAO,CAAC,kBAAkB;IAqE1B,OAAO,CAAC,uBAAuB;IAwB/B,OAAO,CAAC,qBAAqB;YAiSf,SAAS;YA2DT,WAAW;YAiEX,WAAW;YAyCX,cAAc;YAyKd,gBAAgB;IAqD9B,OAAO,CAAC,mBAAmB;IAwE3B,OAAO,CAAC,eAAe;YAsBT,eAAe;IAqI7B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,uBAAuB;IA0D/B,OAAO,CAAC,iBAAiB;YAqFX,WAAW;YAgCX,oBAAoB;YA2EpB,qBAAqB;YAwDrB,iBAAiB;YA8HjB,oBAAoB;IAsDlC,OAAO,CAAC,gBAAgB;YAiBV,SAAS;YA6CT,kBAAkB;YA+DlB,uBAAuB;YAsDvB,iBAAiB;IAqE/B,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,uBAAuB;IAwD/B,OAAO,CAAC,iBAAiB;YAoDX,mBAAmB;YAkGnB,qBAAqB;IAS7B,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YAS9B,aAAa;YAcb,iBAAiB;YAoBjB,WAAW;YAwBX,eAAe;YAqBf,mBAAmB;YAwBnB,yBAAyB;IA4CvC,OAAO,CAAC,kBAAkB;YAiBZ,gBAAgB;YA6HhB,2BAA2B;YAiE3B,2BAA2B;IAyEnC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -66,8 +66,9 @@ const node_type_normalizer_1 = require("../utils/node-type-normalizer");
|
|
|
66
66
|
const validation_schemas_1 = require("../utils/validation-schemas");
|
|
67
67
|
const protocol_version_1 = require("../utils/protocol-version");
|
|
68
68
|
const telemetry_1 = require("../telemetry");
|
|
69
|
+
const startup_checkpoints_1 = require("../telemetry/startup-checkpoints");
|
|
69
70
|
class N8NDocumentationMCPServer {
|
|
70
|
-
constructor(instanceContext) {
|
|
71
|
+
constructor(instanceContext, earlyLogger) {
|
|
71
72
|
this.db = null;
|
|
72
73
|
this.repository = null;
|
|
73
74
|
this.templateService = null;
|
|
@@ -75,7 +76,9 @@ class N8NDocumentationMCPServer {
|
|
|
75
76
|
this.clientInfo = null;
|
|
76
77
|
this.previousTool = null;
|
|
77
78
|
this.previousToolTimestamp = Date.now();
|
|
79
|
+
this.earlyLogger = null;
|
|
78
80
|
this.instanceContext = instanceContext;
|
|
81
|
+
this.earlyLogger = earlyLogger || null;
|
|
79
82
|
const envDbPath = process.env.NODE_DB_PATH;
|
|
80
83
|
let dbPath = null;
|
|
81
84
|
let possiblePaths = [];
|
|
@@ -99,13 +102,20 @@ class N8NDocumentationMCPServer {
|
|
|
99
102
|
logger_1.logger.error('Database not found in any of the expected locations:', possiblePaths);
|
|
100
103
|
throw new Error('Database nodes.db not found. Please run npm run rebuild first.');
|
|
101
104
|
}
|
|
102
|
-
this.initialized = this.initializeDatabase(dbPath)
|
|
105
|
+
this.initialized = this.initializeDatabase(dbPath).then(() => {
|
|
106
|
+
if (this.earlyLogger) {
|
|
107
|
+
this.earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.N8N_API_CHECKING);
|
|
108
|
+
}
|
|
109
|
+
const apiConfigured = (0, n8n_api_1.isN8nApiConfigured)();
|
|
110
|
+
const totalTools = apiConfigured ?
|
|
111
|
+
tools_1.n8nDocumentationToolsFinal.length + tools_n8n_manager_1.n8nManagementTools.length :
|
|
112
|
+
tools_1.n8nDocumentationToolsFinal.length;
|
|
113
|
+
logger_1.logger.info(`MCP server initialized with ${totalTools} tools (n8n API: ${apiConfigured ? 'configured' : 'not configured'})`);
|
|
114
|
+
if (this.earlyLogger) {
|
|
115
|
+
this.earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.N8N_API_READY);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
103
118
|
logger_1.logger.info('Initializing n8n Documentation MCP server');
|
|
104
|
-
const apiConfigured = (0, n8n_api_1.isN8nApiConfigured)();
|
|
105
|
-
const totalTools = apiConfigured ?
|
|
106
|
-
tools_1.n8nDocumentationToolsFinal.length + tools_n8n_manager_1.n8nManagementTools.length :
|
|
107
|
-
tools_1.n8nDocumentationToolsFinal.length;
|
|
108
|
-
logger_1.logger.info(`MCP server initialized with ${totalTools} tools (n8n API: ${apiConfigured ? 'configured' : 'not configured'})`);
|
|
109
119
|
this.server = new index_js_1.Server({
|
|
110
120
|
name: 'n8n-documentation-mcp',
|
|
111
121
|
version: '1.0.0',
|
|
@@ -118,14 +128,26 @@ class N8NDocumentationMCPServer {
|
|
|
118
128
|
}
|
|
119
129
|
async initializeDatabase(dbPath) {
|
|
120
130
|
try {
|
|
131
|
+
if (this.earlyLogger) {
|
|
132
|
+
this.earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.DATABASE_CONNECTING);
|
|
133
|
+
}
|
|
134
|
+
logger_1.logger.debug('Database initialization starting...', { dbPath });
|
|
121
135
|
this.db = await (0, database_adapter_1.createDatabaseAdapter)(dbPath);
|
|
136
|
+
logger_1.logger.debug('Database adapter created');
|
|
122
137
|
if (dbPath === ':memory:') {
|
|
123
138
|
await this.initializeInMemorySchema();
|
|
139
|
+
logger_1.logger.debug('In-memory schema initialized');
|
|
124
140
|
}
|
|
125
141
|
this.repository = new node_repository_1.NodeRepository(this.db);
|
|
142
|
+
logger_1.logger.debug('Node repository initialized');
|
|
126
143
|
this.templateService = new template_service_1.TemplateService(this.db);
|
|
144
|
+
logger_1.logger.debug('Template service initialized');
|
|
127
145
|
enhanced_config_validator_1.EnhancedConfigValidator.initializeSimilarityServices(this.repository);
|
|
128
|
-
logger_1.logger.
|
|
146
|
+
logger_1.logger.debug('Similarity services initialized');
|
|
147
|
+
if (this.earlyLogger) {
|
|
148
|
+
this.earlyLogger.logCheckpoint(startup_checkpoints_1.STARTUP_CHECKPOINTS.DATABASE_CONNECTED);
|
|
149
|
+
}
|
|
150
|
+
logger_1.logger.info(`Database initialized successfully from: ${dbPath}`);
|
|
129
151
|
}
|
|
130
152
|
catch (error) {
|
|
131
153
|
logger_1.logger.error('Failed to initialize database:', error);
|