n8n-mcp 2.7.7
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/.env.example +79 -0
- package/LICENSE +21 -0
- package/README.md +670 -0
- package/data/nodes.db +0 -0
- package/dist/config/n8n-api.d.ts +9 -0
- package/dist/config/n8n-api.d.ts.map +1 -0
- package/dist/config/n8n-api.js +41 -0
- package/dist/config/n8n-api.js.map +1 -0
- package/dist/database/database-adapter.d.ts +32 -0
- package/dist/database/database-adapter.d.ts.map +1 -0
- package/dist/database/database-adapter.js +328 -0
- package/dist/database/database-adapter.js.map +1 -0
- package/dist/database/node-repository.d.ts +11 -0
- package/dist/database/node-repository.d.ts.map +1 -0
- package/dist/database/node-repository.js +67 -0
- package/dist/database/node-repository.js.map +1 -0
- package/dist/http-server-single-session.d.ts +21 -0
- package/dist/http-server-single-session.d.ts.map +1 -0
- package/dist/http-server-single-session.js +279 -0
- package/dist/http-server-single-session.js.map +1 -0
- package/dist/http-server.d.ts +9 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +342 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/loaders/node-loader.d.ts +11 -0
- package/dist/loaders/node-loader.d.ts.map +1 -0
- package/dist/loaders/node-loader.js +79 -0
- package/dist/loaders/node-loader.js.map +1 -0
- package/dist/mappers/docs-mapper.d.ts +6 -0
- package/dist/mappers/docs-mapper.d.ts.map +1 -0
- package/dist/mappers/docs-mapper.js +59 -0
- package/dist/mappers/docs-mapper.js.map +1 -0
- package/dist/mcp/absolute-minimal.d.ts +4 -0
- package/dist/mcp/absolute-minimal.d.ts.map +1 -0
- package/dist/mcp/absolute-minimal.js +34 -0
- package/dist/mcp/absolute-minimal.js.map +1 -0
- package/dist/mcp/fixed-protocol.d.ts +17 -0
- package/dist/mcp/fixed-protocol.d.ts.map +1 -0
- package/dist/mcp/fixed-protocol.js +162 -0
- package/dist/mcp/fixed-protocol.js.map +1 -0
- package/dist/mcp/handlers-documentation.d.ts +18 -0
- package/dist/mcp/handlers-documentation.d.ts.map +1 -0
- package/dist/mcp/handlers-documentation.js +113 -0
- package/dist/mcp/handlers-documentation.js.map +1 -0
- package/dist/mcp/handlers-n8n-manager.d.ts +21 -0
- package/dist/mcp/handlers-n8n-manager.d.ts.map +1 -0
- package/dist/mcp/handlers-n8n-manager.js +827 -0
- package/dist/mcp/handlers-n8n-manager.js.map +1 -0
- package/dist/mcp/handlers-workflow-diff.d.ts +3 -0
- package/dist/mcp/handlers-workflow-diff.d.ts.map +1 -0
- package/dist/mcp/handlers-workflow-diff.js +125 -0
- package/dist/mcp/handlers-workflow-diff.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +106 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/minimal-test.d.ts +3 -0
- package/dist/mcp/minimal-test.d.ts.map +1 -0
- package/dist/mcp/minimal-test.js +83 -0
- package/dist/mcp/minimal-test.js.map +1 -0
- package/dist/mcp/server.d.ts +42 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +1258 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/stderr-test.d.ts +2 -0
- package/dist/mcp/stderr-test.d.ts.map +1 -0
- package/dist/mcp/stderr-test.js +32 -0
- package/dist/mcp/stderr-test.js.map +1 -0
- package/dist/mcp/stdio-wrapper.d.ts +3 -0
- package/dist/mcp/stdio-wrapper.d.ts.map +1 -0
- package/dist/mcp/stdio-wrapper.js +52 -0
- package/dist/mcp/stdio-wrapper.js.map +1 -0
- package/dist/mcp/tools-documentation.d.ts +34 -0
- package/dist/mcp/tools-documentation.d.ts.map +1 -0
- package/dist/mcp/tools-documentation.js +609 -0
- package/dist/mcp/tools-documentation.js.map +1 -0
- package/dist/mcp/tools-n8n-manager.d.ts +3 -0
- package/dist/mcp/tools-n8n-manager.d.ts.map +1 -0
- package/dist/mcp/tools-n8n-manager.js +496 -0
- package/dist/mcp/tools-n8n-manager.js.map +1 -0
- package/dist/mcp/tools.d.ts +3 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +405 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/ultra-minimal.d.ts +8 -0
- package/dist/mcp/ultra-minimal.d.ts.map +1 -0
- package/dist/mcp/ultra-minimal.js +93 -0
- package/dist/mcp/ultra-minimal.js.map +1 -0
- package/dist/mcp/working-test.d.ts +3 -0
- package/dist/mcp/working-test.d.ts.map +1 -0
- package/dist/mcp/working-test.js +48 -0
- package/dist/mcp/working-test.js.map +1 -0
- package/dist/mcp/wrapper.sh +28 -0
- package/dist/mcp-engine.d.ts +32 -0
- package/dist/mcp-engine.d.ts.map +1 -0
- package/dist/mcp-engine.js +63 -0
- package/dist/mcp-engine.js.map +1 -0
- package/dist/n8n/MCPApi.credentials.d.ts +8 -0
- package/dist/n8n/MCPApi.credentials.d.ts.map +1 -0
- package/dist/n8n/MCPApi.credentials.js +53 -0
- package/dist/n8n/MCPApi.credentials.js.map +1 -0
- package/dist/n8n/MCPNode.node.d.ts +13 -0
- package/dist/n8n/MCPNode.node.d.ts.map +1 -0
- package/dist/n8n/MCPNode.node.js +260 -0
- package/dist/n8n/MCPNode.node.js.map +1 -0
- package/dist/parsers/node-parser.d.ts +30 -0
- package/dist/parsers/node-parser.d.ts.map +1 -0
- package/dist/parsers/node-parser.js +152 -0
- package/dist/parsers/node-parser.js.map +1 -0
- package/dist/parsers/property-extractor.d.ts +10 -0
- package/dist/parsers/property-extractor.d.ts.map +1 -0
- package/dist/parsers/property-extractor.js +155 -0
- package/dist/parsers/property-extractor.js.map +1 -0
- package/dist/parsers/simple-parser.d.ts +24 -0
- package/dist/parsers/simple-parser.d.ts.map +1 -0
- package/dist/parsers/simple-parser.js +160 -0
- package/dist/parsers/simple-parser.js.map +1 -0
- package/dist/scripts/debug-n8n-auth.d.ts +3 -0
- package/dist/scripts/debug-n8n-auth.d.ts.map +1 -0
- package/dist/scripts/debug-n8n-auth.js +97 -0
- package/dist/scripts/debug-n8n-auth.js.map +1 -0
- package/dist/scripts/debug-node.d.ts +3 -0
- package/dist/scripts/debug-node.d.ts.map +1 -0
- package/dist/scripts/debug-node.js +59 -0
- package/dist/scripts/debug-node.js.map +1 -0
- package/dist/scripts/extract-from-docker.d.ts +3 -0
- package/dist/scripts/extract-from-docker.d.ts.map +1 -0
- package/dist/scripts/extract-from-docker.js +210 -0
- package/dist/scripts/extract-from-docker.js.map +1 -0
- package/dist/scripts/fetch-templates-robust.d.ts +4 -0
- package/dist/scripts/fetch-templates-robust.d.ts.map +1 -0
- package/dist/scripts/fetch-templates-robust.js +126 -0
- package/dist/scripts/fetch-templates-robust.js.map +1 -0
- package/dist/scripts/fetch-templates.d.ts +4 -0
- package/dist/scripts/fetch-templates.d.ts.map +1 -0
- package/dist/scripts/fetch-templates.js +94 -0
- package/dist/scripts/fetch-templates.js.map +1 -0
- package/dist/scripts/rebuild-database.d.ts +4 -0
- package/dist/scripts/rebuild-database.d.ts.map +1 -0
- package/dist/scripts/rebuild-database.js +95 -0
- package/dist/scripts/rebuild-database.js.map +1 -0
- package/dist/scripts/rebuild-optimized.d.ts +3 -0
- package/dist/scripts/rebuild-optimized.d.ts.map +1 -0
- package/dist/scripts/rebuild-optimized.js +198 -0
- package/dist/scripts/rebuild-optimized.js.map +1 -0
- package/dist/scripts/rebuild.d.ts +3 -0
- package/dist/scripts/rebuild.d.ts.map +1 -0
- package/dist/scripts/rebuild.js +163 -0
- package/dist/scripts/rebuild.js.map +1 -0
- package/dist/scripts/sanitize-templates.d.ts +3 -0
- package/dist/scripts/sanitize-templates.d.ts.map +1 -0
- package/dist/scripts/sanitize-templates.js +56 -0
- package/dist/scripts/sanitize-templates.js.map +1 -0
- package/dist/scripts/test-ai-workflow-validation.d.ts +3 -0
- package/dist/scripts/test-ai-workflow-validation.d.ts.map +1 -0
- package/dist/scripts/test-ai-workflow-validation.js +191 -0
- package/dist/scripts/test-ai-workflow-validation.js.map +1 -0
- package/dist/scripts/test-api-headers.d.ts +3 -0
- package/dist/scripts/test-api-headers.d.ts.map +1 -0
- package/dist/scripts/test-api-headers.js +35 -0
- package/dist/scripts/test-api-headers.js.map +1 -0
- package/dist/scripts/test-docker-config-simulation.d.ts +3 -0
- package/dist/scripts/test-docker-config-simulation.d.ts.map +1 -0
- package/dist/scripts/test-docker-config-simulation.js +74 -0
- package/dist/scripts/test-docker-config-simulation.js.map +1 -0
- package/dist/scripts/test-enhanced-validation.d.ts +3 -0
- package/dist/scripts/test-enhanced-validation.d.ts.map +1 -0
- package/dist/scripts/test-enhanced-validation.js +117 -0
- package/dist/scripts/test-enhanced-validation.js.map +1 -0
- package/dist/scripts/test-lazy-config.d.ts +3 -0
- package/dist/scripts/test-lazy-config.d.ts.map +1 -0
- package/dist/scripts/test-lazy-config.js +60 -0
- package/dist/scripts/test-lazy-config.js.map +1 -0
- package/dist/scripts/test-limited-results.d.ts +3 -0
- package/dist/scripts/test-limited-results.d.ts.map +1 -0
- package/dist/scripts/test-limited-results.js +76 -0
- package/dist/scripts/test-limited-results.js.map +1 -0
- package/dist/scripts/test-mcp-n8n-update-partial.d.ts +3 -0
- package/dist/scripts/test-mcp-n8n-update-partial.d.ts.map +1 -0
- package/dist/scripts/test-mcp-n8n-update-partial.js +138 -0
- package/dist/scripts/test-mcp-n8n-update-partial.js.map +1 -0
- package/dist/scripts/test-mcp-tools.d.ts +3 -0
- package/dist/scripts/test-mcp-tools.d.ts.map +1 -0
- package/dist/scripts/test-mcp-tools.js +36 -0
- package/dist/scripts/test-mcp-tools.js.map +1 -0
- package/dist/scripts/test-n8n-manager-integration.d.ts +3 -0
- package/dist/scripts/test-n8n-manager-integration.d.ts.map +1 -0
- package/dist/scripts/test-n8n-manager-integration.js +122 -0
- package/dist/scripts/test-n8n-manager-integration.js.map +1 -0
- package/dist/scripts/test-n8n-validate-workflow.d.ts +3 -0
- package/dist/scripts/test-n8n-validate-workflow.d.ts.map +1 -0
- package/dist/scripts/test-n8n-validate-workflow.js +125 -0
- package/dist/scripts/test-n8n-validate-workflow.js.map +1 -0
- package/dist/scripts/test-nodes.d.ts +3 -0
- package/dist/scripts/test-nodes.d.ts.map +1 -0
- package/dist/scripts/test-nodes.js +91 -0
- package/dist/scripts/test-nodes.js.map +1 -0
- package/dist/scripts/test-single-workflow.d.ts +3 -0
- package/dist/scripts/test-single-workflow.d.ts.map +1 -0
- package/dist/scripts/test-single-workflow.js +112 -0
- package/dist/scripts/test-single-workflow.js.map +1 -0
- package/dist/scripts/test-template-validation.d.ts +3 -0
- package/dist/scripts/test-template-validation.d.ts.map +1 -0
- package/dist/scripts/test-template-validation.js +142 -0
- package/dist/scripts/test-template-validation.js.map +1 -0
- package/dist/scripts/test-templates.d.ts +4 -0
- package/dist/scripts/test-templates.d.ts.map +1 -0
- package/dist/scripts/test-templates.js +99 -0
- package/dist/scripts/test-templates.js.map +1 -0
- package/dist/scripts/test-transactional-diff.d.ts +2 -0
- package/dist/scripts/test-transactional-diff.d.ts.map +1 -0
- package/dist/scripts/test-transactional-diff.js +240 -0
- package/dist/scripts/test-transactional-diff.js.map +1 -0
- package/dist/scripts/test-update-partial-debug.d.ts +3 -0
- package/dist/scripts/test-update-partial-debug.d.ts.map +1 -0
- package/dist/scripts/test-update-partial-debug.js +92 -0
- package/dist/scripts/test-update-partial-debug.js.map +1 -0
- package/dist/scripts/test-version-extraction.d.ts +2 -0
- package/dist/scripts/test-version-extraction.d.ts.map +1 -0
- package/dist/scripts/test-version-extraction.js +74 -0
- package/dist/scripts/test-version-extraction.js.map +1 -0
- package/dist/scripts/test-workflow-diff.d.ts +3 -0
- package/dist/scripts/test-workflow-diff.d.ts.map +1 -0
- package/dist/scripts/test-workflow-diff.js +328 -0
- package/dist/scripts/test-workflow-diff.js.map +1 -0
- package/dist/scripts/test-workflow-validation.d.ts +3 -0
- package/dist/scripts/test-workflow-validation.d.ts.map +1 -0
- package/dist/scripts/test-workflow-validation.js +238 -0
- package/dist/scripts/test-workflow-validation.js.map +1 -0
- package/dist/scripts/validate.d.ts +3 -0
- package/dist/scripts/validate.d.ts.map +1 -0
- package/dist/scripts/validate.js +121 -0
- package/dist/scripts/validate.js.map +1 -0
- package/dist/scripts/validation-summary.d.ts +3 -0
- package/dist/scripts/validation-summary.d.ts.map +1 -0
- package/dist/scripts/validation-summary.js +135 -0
- package/dist/scripts/validation-summary.js.map +1 -0
- package/dist/services/config-validator.d.ts +39 -0
- package/dist/services/config-validator.d.ts.map +1 -0
- package/dist/services/config-validator.js +376 -0
- package/dist/services/config-validator.js.map +1 -0
- package/dist/services/enhanced-config-validator.d.ts +38 -0
- package/dist/services/enhanced-config-validator.d.ts.map +1 -0
- package/dist/services/enhanced-config-validator.js +300 -0
- package/dist/services/enhanced-config-validator.js.map +1 -0
- package/dist/services/example-generator.d.ts +14 -0
- package/dist/services/example-generator.d.ts.map +1 -0
- package/dist/services/example-generator.js +556 -0
- package/dist/services/example-generator.js.map +1 -0
- package/dist/services/expression-validator.d.ts +27 -0
- package/dist/services/expression-validator.d.ts.map +1 -0
- package/dist/services/expression-validator.js +163 -0
- package/dist/services/expression-validator.js.map +1 -0
- package/dist/services/n8n-api-client.d.ts +39 -0
- package/dist/services/n8n-api-client.d.ts.map +1 -0
- package/dist/services/n8n-api-client.js +326 -0
- package/dist/services/n8n-api-client.js.map +1 -0
- package/dist/services/n8n-validation.d.ts +127 -0
- package/dist/services/n8n-validation.d.ts.map +1 -0
- package/dist/services/n8n-validation.js +238 -0
- package/dist/services/n8n-validation.js.map +1 -0
- package/dist/services/node-documentation-service.d.ts +70 -0
- package/dist/services/node-documentation-service.d.ts.map +1 -0
- package/dist/services/node-documentation-service.js +518 -0
- package/dist/services/node-documentation-service.js.map +1 -0
- package/dist/services/node-specific-validators.d.ts +28 -0
- package/dist/services/node-specific-validators.d.ts.map +1 -0
- package/dist/services/node-specific-validators.js +666 -0
- package/dist/services/node-specific-validators.js.map +1 -0
- package/dist/services/property-dependencies.d.ts +36 -0
- package/dist/services/property-dependencies.d.ts.map +1 -0
- package/dist/services/property-dependencies.js +168 -0
- package/dist/services/property-dependencies.js.map +1 -0
- package/dist/services/property-filter.d.ts +39 -0
- package/dist/services/property-filter.d.ts.map +1 -0
- package/dist/services/property-filter.js +362 -0
- package/dist/services/property-filter.js.map +1 -0
- package/dist/services/task-templates.d.ts +26 -0
- package/dist/services/task-templates.d.ts.map +1 -0
- package/dist/services/task-templates.js +555 -0
- package/dist/services/task-templates.js.map +1 -0
- package/dist/services/workflow-diff-engine.d.ts +31 -0
- package/dist/services/workflow-diff-engine.d.ts.map +1 -0
- package/dist/services/workflow-diff-engine.js +478 -0
- package/dist/services/workflow-diff-engine.js.map +1 -0
- package/dist/services/workflow-validator.d.ts +87 -0
- package/dist/services/workflow-validator.d.ts.map +1 -0
- package/dist/services/workflow-validator.js +656 -0
- package/dist/services/workflow-validator.js.map +1 -0
- package/dist/templates/template-fetcher.d.ts +41 -0
- package/dist/templates/template-fetcher.d.ts.map +1 -0
- package/dist/templates/template-fetcher.js +94 -0
- package/dist/templates/template-fetcher.js.map +1 -0
- package/dist/templates/template-repository.d.ts +34 -0
- package/dist/templates/template-repository.d.ts.map +1 -0
- package/dist/templates/template-repository.js +121 -0
- package/dist/templates/template-repository.js.map +1 -0
- package/dist/templates/template-service.d.ts +31 -0
- package/dist/templates/template-service.d.ts.map +1 -0
- package/dist/templates/template-service.js +131 -0
- package/dist/templates/template-service.js.map +1 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/n8n-api.d.ts +241 -0
- package/dist/types/n8n-api.d.ts.map +1 -0
- package/dist/types/n8n-api.js +10 -0
- package/dist/types/n8n-api.js.map +1 -0
- package/dist/types/workflow-diff.d.ts +113 -0
- package/dist/types/workflow-diff.d.ts.map +1 -0
- package/dist/types/workflow-diff.js +15 -0
- package/dist/types/workflow-diff.js.map +1 -0
- package/dist/utils/auth.d.ts +12 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +66 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/bridge.d.ts +12 -0
- package/dist/utils/bridge.d.ts.map +1 -0
- package/dist/utils/bridge.js +127 -0
- package/dist/utils/bridge.js.map +1 -0
- package/dist/utils/console-manager.d.ts +10 -0
- package/dist/utils/console-manager.d.ts.map +1 -0
- package/dist/utils/console-manager.js +63 -0
- package/dist/utils/console-manager.js.map +1 -0
- package/dist/utils/documentation-fetcher.d.ts +2 -0
- package/dist/utils/documentation-fetcher.d.ts.map +1 -0
- package/dist/utils/documentation-fetcher.js +18 -0
- package/dist/utils/documentation-fetcher.js.map +1 -0
- package/dist/utils/enhanced-documentation-fetcher.d.ts +73 -0
- package/dist/utils/enhanced-documentation-fetcher.d.ts.map +1 -0
- package/dist/utils/enhanced-documentation-fetcher.js +397 -0
- package/dist/utils/enhanced-documentation-fetcher.js.map +1 -0
- package/dist/utils/error-handler.d.ts +24 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +84 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/example-generator.d.ts +8 -0
- package/dist/utils/example-generator.d.ts.map +1 -0
- package/dist/utils/example-generator.js +106 -0
- package/dist/utils/example-generator.js.map +1 -0
- package/dist/utils/logger.d.ts +32 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +97 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/mcp-client.d.ts +21 -0
- package/dist/utils/mcp-client.d.ts.map +1 -0
- package/dist/utils/mcp-client.js +96 -0
- package/dist/utils/mcp-client.js.map +1 -0
- package/dist/utils/n8n-errors.d.ts +25 -0
- package/dist/utils/n8n-errors.d.ts.map +1 -0
- package/dist/utils/n8n-errors.js +129 -0
- package/dist/utils/n8n-errors.js.map +1 -0
- package/dist/utils/node-source-extractor.d.ts +21 -0
- package/dist/utils/node-source-extractor.d.ts.map +1 -0
- package/dist/utils/node-source-extractor.js +377 -0
- package/dist/utils/node-source-extractor.js.map +1 -0
- package/dist/utils/simple-cache.d.ts +8 -0
- package/dist/utils/simple-cache.d.ts.map +1 -0
- package/dist/utils/simple-cache.js +34 -0
- package/dist/utils/simple-cache.js.map +1 -0
- package/dist/utils/template-sanitizer.d.ts +21 -0
- package/dist/utils/template-sanitizer.d.ts.map +1 -0
- package/dist/utils/template-sanitizer.js +108 -0
- package/dist/utils/template-sanitizer.js.map +1 -0
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +18 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +100 -0
- package/package.runtime.json +19 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceNotFoundError = exports.ToolNotFoundError = exports.ValidationError = exports.AuthenticationError = exports.N8NConnectionError = exports.MCPError = void 0;
|
|
4
|
+
exports.handleError = handleError;
|
|
5
|
+
exports.withErrorHandling = withErrorHandling;
|
|
6
|
+
const logger_1 = require("./logger");
|
|
7
|
+
class MCPError extends Error {
|
|
8
|
+
constructor(message, code, statusCode, data) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'MCPError';
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.statusCode = statusCode;
|
|
13
|
+
this.data = data;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.MCPError = MCPError;
|
|
17
|
+
class N8NConnectionError extends MCPError {
|
|
18
|
+
constructor(message, data) {
|
|
19
|
+
super(message, 'N8N_CONNECTION_ERROR', 503, data);
|
|
20
|
+
this.name = 'N8NConnectionError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.N8NConnectionError = N8NConnectionError;
|
|
24
|
+
class AuthenticationError extends MCPError {
|
|
25
|
+
constructor(message = 'Authentication failed') {
|
|
26
|
+
super(message, 'AUTH_ERROR', 401);
|
|
27
|
+
this.name = 'AuthenticationError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.AuthenticationError = AuthenticationError;
|
|
31
|
+
class ValidationError extends MCPError {
|
|
32
|
+
constructor(message, data) {
|
|
33
|
+
super(message, 'VALIDATION_ERROR', 400, data);
|
|
34
|
+
this.name = 'ValidationError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.ValidationError = ValidationError;
|
|
38
|
+
class ToolNotFoundError extends MCPError {
|
|
39
|
+
constructor(toolName) {
|
|
40
|
+
super(`Tool '${toolName}' not found`, 'TOOL_NOT_FOUND', 404);
|
|
41
|
+
this.name = 'ToolNotFoundError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.ToolNotFoundError = ToolNotFoundError;
|
|
45
|
+
class ResourceNotFoundError extends MCPError {
|
|
46
|
+
constructor(resourceUri) {
|
|
47
|
+
super(`Resource '${resourceUri}' not found`, 'RESOURCE_NOT_FOUND', 404);
|
|
48
|
+
this.name = 'ResourceNotFoundError';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.ResourceNotFoundError = ResourceNotFoundError;
|
|
52
|
+
function handleError(error) {
|
|
53
|
+
if (error instanceof MCPError) {
|
|
54
|
+
return error;
|
|
55
|
+
}
|
|
56
|
+
if (error.response) {
|
|
57
|
+
const status = error.response.status;
|
|
58
|
+
const message = error.response.data?.message || error.message;
|
|
59
|
+
if (status === 401) {
|
|
60
|
+
return new AuthenticationError(message);
|
|
61
|
+
}
|
|
62
|
+
else if (status === 404) {
|
|
63
|
+
return new MCPError(message, 'NOT_FOUND', 404);
|
|
64
|
+
}
|
|
65
|
+
else if (status >= 500) {
|
|
66
|
+
return new N8NConnectionError(message);
|
|
67
|
+
}
|
|
68
|
+
return new MCPError(message, 'API_ERROR', status);
|
|
69
|
+
}
|
|
70
|
+
if (error.code === 'ECONNREFUSED') {
|
|
71
|
+
return new N8NConnectionError('Cannot connect to n8n API');
|
|
72
|
+
}
|
|
73
|
+
return new MCPError(error.message || 'An unexpected error occurred', 'UNKNOWN_ERROR', 500);
|
|
74
|
+
}
|
|
75
|
+
async function withErrorHandling(operation, context) {
|
|
76
|
+
try {
|
|
77
|
+
return await operation();
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
logger_1.logger.error(`Error in ${context}:`, error);
|
|
81
|
+
throw handleError(error);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class ExampleGenerator {
|
|
2
|
+
static generateFromNodeDefinition(nodeDefinition: any): any;
|
|
3
|
+
static generateExampleParameters(nodeDefinition: any): any;
|
|
4
|
+
private static generateExampleValue;
|
|
5
|
+
private static generateNodeId;
|
|
6
|
+
static generateFromOperations(operations: any[]): any;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=example-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-generator.d.ts","sourceRoot":"","sources":["../../src/utils/example-generator.ts"],"names":[],"mappings":"AAGA,qBAAa,gBAAgB;IAI3B,MAAM,CAAC,0BAA0B,CAAC,cAAc,EAAE,GAAG,GAAG,GAAG;IA0B3D,MAAM,CAAC,yBAAyB,CAAC,cAAc,EAAE,GAAG,GAAG,GAAG;IA6B1D,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAsCnC,OAAO,CAAC,MAAM,CAAC,cAAc;IAQ7B,MAAM,CAAC,sBAAsB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG;CA+BtD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExampleGenerator = void 0;
|
|
4
|
+
class ExampleGenerator {
|
|
5
|
+
static generateFromNodeDefinition(nodeDefinition) {
|
|
6
|
+
const nodeName = nodeDefinition.displayName || 'Example Node';
|
|
7
|
+
const nodeType = nodeDefinition.name || 'n8n-nodes-base.exampleNode';
|
|
8
|
+
return {
|
|
9
|
+
name: `${nodeName} Example Workflow`,
|
|
10
|
+
nodes: [
|
|
11
|
+
{
|
|
12
|
+
parameters: this.generateExampleParameters(nodeDefinition),
|
|
13
|
+
id: this.generateNodeId(),
|
|
14
|
+
name: nodeName,
|
|
15
|
+
type: nodeType,
|
|
16
|
+
typeVersion: nodeDefinition.version || 1,
|
|
17
|
+
position: [250, 300],
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
connections: {},
|
|
21
|
+
active: false,
|
|
22
|
+
settings: {},
|
|
23
|
+
tags: ['example', 'generated'],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
static generateExampleParameters(nodeDefinition) {
|
|
27
|
+
const params = {};
|
|
28
|
+
if (Array.isArray(nodeDefinition.properties)) {
|
|
29
|
+
for (const prop of nodeDefinition.properties) {
|
|
30
|
+
if (prop.name && prop.type) {
|
|
31
|
+
params[prop.name] = this.generateExampleValue(prop);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (nodeDefinition.displayName?.toLowerCase().includes('trigger')) {
|
|
36
|
+
params.pollTimes = {
|
|
37
|
+
item: [
|
|
38
|
+
{
|
|
39
|
+
mode: 'everyMinute',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return params;
|
|
45
|
+
}
|
|
46
|
+
static generateExampleValue(property) {
|
|
47
|
+
switch (property.type) {
|
|
48
|
+
case 'string':
|
|
49
|
+
if (property.name.toLowerCase().includes('url')) {
|
|
50
|
+
return 'https://example.com';
|
|
51
|
+
}
|
|
52
|
+
if (property.name.toLowerCase().includes('email')) {
|
|
53
|
+
return 'user@example.com';
|
|
54
|
+
}
|
|
55
|
+
if (property.name.toLowerCase().includes('name')) {
|
|
56
|
+
return 'Example Name';
|
|
57
|
+
}
|
|
58
|
+
return property.default || 'example-value';
|
|
59
|
+
case 'number':
|
|
60
|
+
return property.default || 10;
|
|
61
|
+
case 'boolean':
|
|
62
|
+
return property.default !== undefined ? property.default : true;
|
|
63
|
+
case 'options':
|
|
64
|
+
if (property.options && property.options.length > 0) {
|
|
65
|
+
return property.options[0].value;
|
|
66
|
+
}
|
|
67
|
+
return property.default || '';
|
|
68
|
+
case 'collection':
|
|
69
|
+
case 'fixedCollection':
|
|
70
|
+
return {};
|
|
71
|
+
default:
|
|
72
|
+
return property.default || null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
static generateNodeId() {
|
|
76
|
+
return Math.random().toString(36).substring(2, 15) +
|
|
77
|
+
Math.random().toString(36).substring(2, 15);
|
|
78
|
+
}
|
|
79
|
+
static generateFromOperations(operations) {
|
|
80
|
+
const examples = [];
|
|
81
|
+
if (!operations || operations.length === 0) {
|
|
82
|
+
return examples;
|
|
83
|
+
}
|
|
84
|
+
const resourceMap = new Map();
|
|
85
|
+
for (const op of operations) {
|
|
86
|
+
if (!resourceMap.has(op.resource)) {
|
|
87
|
+
resourceMap.set(op.resource, []);
|
|
88
|
+
}
|
|
89
|
+
resourceMap.get(op.resource).push(op);
|
|
90
|
+
}
|
|
91
|
+
for (const [resource, ops] of resourceMap) {
|
|
92
|
+
examples.push({
|
|
93
|
+
resource,
|
|
94
|
+
operation: ops[0].operation,
|
|
95
|
+
description: `Example: ${ops[0].description}`,
|
|
96
|
+
parameters: {
|
|
97
|
+
resource,
|
|
98
|
+
operation: ops[0].operation,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return examples;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.ExampleGenerator = ExampleGenerator;
|
|
106
|
+
//# sourceMappingURL=example-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-generator.js","sourceRoot":"","sources":["../../src/utils/example-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
ERROR = 0,
|
|
3
|
+
WARN = 1,
|
|
4
|
+
INFO = 2,
|
|
5
|
+
DEBUG = 3
|
|
6
|
+
}
|
|
7
|
+
export interface LoggerConfig {
|
|
8
|
+
level: LogLevel;
|
|
9
|
+
prefix?: string;
|
|
10
|
+
timestamp?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class Logger {
|
|
13
|
+
private config;
|
|
14
|
+
private static instance;
|
|
15
|
+
private useFileLogging;
|
|
16
|
+
private fileStream;
|
|
17
|
+
private readonly isStdio;
|
|
18
|
+
private readonly isDisabled;
|
|
19
|
+
private readonly isHttp;
|
|
20
|
+
constructor(config?: Partial<LoggerConfig>);
|
|
21
|
+
static getInstance(config?: Partial<LoggerConfig>): Logger;
|
|
22
|
+
private formatMessage;
|
|
23
|
+
private log;
|
|
24
|
+
error(message: string, ...args: any[]): void;
|
|
25
|
+
warn(message: string, ...args: any[]): void;
|
|
26
|
+
info(message: string, ...args: any[]): void;
|
|
27
|
+
debug(message: string, ...args: any[]): void;
|
|
28
|
+
setLevel(level: LogLevel): void;
|
|
29
|
+
static parseLogLevel(level: string): LogLevel;
|
|
30
|
+
}
|
|
31
|
+
export declare const logger: Logger;
|
|
32
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiD;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAE9C,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAS1C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM;IAO1D,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,GAAG;IA+BX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI5C,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;CAa9C;AAGD,eAAO,MAAM,MAAM,QAEjB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logger = exports.Logger = exports.LogLevel = void 0;
|
|
4
|
+
var LogLevel;
|
|
5
|
+
(function (LogLevel) {
|
|
6
|
+
LogLevel[LogLevel["ERROR"] = 0] = "ERROR";
|
|
7
|
+
LogLevel[LogLevel["WARN"] = 1] = "WARN";
|
|
8
|
+
LogLevel[LogLevel["INFO"] = 2] = "INFO";
|
|
9
|
+
LogLevel[LogLevel["DEBUG"] = 3] = "DEBUG";
|
|
10
|
+
})(LogLevel || (exports.LogLevel = LogLevel = {}));
|
|
11
|
+
class Logger {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.useFileLogging = false;
|
|
14
|
+
this.fileStream = null;
|
|
15
|
+
this.isStdio = process.env.MCP_MODE === 'stdio';
|
|
16
|
+
this.isDisabled = process.env.DISABLE_CONSOLE_OUTPUT === 'true';
|
|
17
|
+
this.isHttp = process.env.MCP_MODE === 'http';
|
|
18
|
+
this.config = {
|
|
19
|
+
level: LogLevel.INFO,
|
|
20
|
+
prefix: 'n8n-mcp',
|
|
21
|
+
timestamp: true,
|
|
22
|
+
...config,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
static getInstance(config) {
|
|
26
|
+
if (!Logger.instance) {
|
|
27
|
+
Logger.instance = new Logger(config);
|
|
28
|
+
}
|
|
29
|
+
return Logger.instance;
|
|
30
|
+
}
|
|
31
|
+
formatMessage(level, message) {
|
|
32
|
+
const parts = [];
|
|
33
|
+
if (this.config.timestamp) {
|
|
34
|
+
parts.push(`[${new Date().toISOString()}]`);
|
|
35
|
+
}
|
|
36
|
+
if (this.config.prefix) {
|
|
37
|
+
parts.push(`[${this.config.prefix}]`);
|
|
38
|
+
}
|
|
39
|
+
parts.push(`[${level}]`);
|
|
40
|
+
parts.push(message);
|
|
41
|
+
return parts.join(' ');
|
|
42
|
+
}
|
|
43
|
+
log(level, levelName, message, ...args) {
|
|
44
|
+
if (this.isStdio || this.isDisabled) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (level <= this.config.level) {
|
|
48
|
+
const formattedMessage = this.formatMessage(levelName, message);
|
|
49
|
+
if (this.isHttp && process.env.MCP_REQUEST_ACTIVE === 'true') {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
switch (level) {
|
|
53
|
+
case LogLevel.ERROR:
|
|
54
|
+
console.error(formattedMessage, ...args);
|
|
55
|
+
break;
|
|
56
|
+
case LogLevel.WARN:
|
|
57
|
+
console.warn(formattedMessage, ...args);
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
console.log(formattedMessage, ...args);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
error(message, ...args) {
|
|
65
|
+
this.log(LogLevel.ERROR, 'ERROR', message, ...args);
|
|
66
|
+
}
|
|
67
|
+
warn(message, ...args) {
|
|
68
|
+
this.log(LogLevel.WARN, 'WARN', message, ...args);
|
|
69
|
+
}
|
|
70
|
+
info(message, ...args) {
|
|
71
|
+
this.log(LogLevel.INFO, 'INFO', message, ...args);
|
|
72
|
+
}
|
|
73
|
+
debug(message, ...args) {
|
|
74
|
+
this.log(LogLevel.DEBUG, 'DEBUG', message, ...args);
|
|
75
|
+
}
|
|
76
|
+
setLevel(level) {
|
|
77
|
+
this.config.level = level;
|
|
78
|
+
}
|
|
79
|
+
static parseLogLevel(level) {
|
|
80
|
+
switch (level.toLowerCase()) {
|
|
81
|
+
case 'error':
|
|
82
|
+
return LogLevel.ERROR;
|
|
83
|
+
case 'warn':
|
|
84
|
+
return LogLevel.WARN;
|
|
85
|
+
case 'debug':
|
|
86
|
+
return LogLevel.DEBUG;
|
|
87
|
+
case 'info':
|
|
88
|
+
default:
|
|
89
|
+
return LogLevel.INFO;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.Logger = Logger;
|
|
94
|
+
exports.logger = Logger.getInstance({
|
|
95
|
+
level: Logger.parseLogLevel(process.env.LOG_LEVEL || 'info'),
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface MCPClientConfig {
|
|
2
|
+
serverUrl: string;
|
|
3
|
+
authToken?: string;
|
|
4
|
+
connectionType: 'http' | 'websocket' | 'stdio';
|
|
5
|
+
}
|
|
6
|
+
export declare class MCPClient {
|
|
7
|
+
private client;
|
|
8
|
+
private config;
|
|
9
|
+
private connected;
|
|
10
|
+
constructor(config: MCPClientConfig);
|
|
11
|
+
connect(): Promise<void>;
|
|
12
|
+
disconnect(): Promise<void>;
|
|
13
|
+
listTools(): Promise<any>;
|
|
14
|
+
callTool(name: string, args: any): Promise<any>;
|
|
15
|
+
listResources(): Promise<any>;
|
|
16
|
+
readResource(uri: string): Promise<any>;
|
|
17
|
+
listPrompts(): Promise<any>;
|
|
18
|
+
getPrompt(name: string, args?: any): Promise<any>;
|
|
19
|
+
private ensureConnected;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=mcp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/utils/mcp-client.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;CAChD;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,EAAE,eAAe;IAa7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAQzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAc/C,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAQ7B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAavC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAQ3B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAczC,eAAe;CAK9B"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MCPClient = void 0;
|
|
4
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
|
5
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
6
|
+
const websocket_js_1 = require("@modelcontextprotocol/sdk/client/websocket.js");
|
|
7
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
8
|
+
class MCPClient {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.connected = false;
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.client = new index_js_1.Client({
|
|
13
|
+
name: 'n8n-mcp-client',
|
|
14
|
+
version: '1.0.0',
|
|
15
|
+
}, {
|
|
16
|
+
capabilities: {},
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async connect() {
|
|
20
|
+
if (this.connected) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
let transport;
|
|
24
|
+
switch (this.config.connectionType) {
|
|
25
|
+
case 'websocket':
|
|
26
|
+
const wsUrl = this.config.serverUrl.replace(/^http/, 'ws');
|
|
27
|
+
transport = new websocket_js_1.WebSocketClientTransport(new URL(wsUrl));
|
|
28
|
+
break;
|
|
29
|
+
case 'stdio':
|
|
30
|
+
const [command, ...args] = this.config.serverUrl.split(' ');
|
|
31
|
+
transport = new stdio_js_1.StdioClientTransport({
|
|
32
|
+
command,
|
|
33
|
+
args,
|
|
34
|
+
});
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
throw new Error(`HTTP transport is not yet supported for MCP clients`);
|
|
38
|
+
}
|
|
39
|
+
await this.client.connect(transport);
|
|
40
|
+
this.connected = true;
|
|
41
|
+
}
|
|
42
|
+
async disconnect() {
|
|
43
|
+
if (this.connected) {
|
|
44
|
+
await this.client.close();
|
|
45
|
+
this.connected = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async listTools() {
|
|
49
|
+
await this.ensureConnected();
|
|
50
|
+
return await this.client.request({ method: 'tools/list' }, types_js_1.ListToolsResultSchema);
|
|
51
|
+
}
|
|
52
|
+
async callTool(name, args) {
|
|
53
|
+
await this.ensureConnected();
|
|
54
|
+
return await this.client.request({
|
|
55
|
+
method: 'tools/call',
|
|
56
|
+
params: {
|
|
57
|
+
name,
|
|
58
|
+
arguments: args,
|
|
59
|
+
},
|
|
60
|
+
}, types_js_1.CallToolResultSchema);
|
|
61
|
+
}
|
|
62
|
+
async listResources() {
|
|
63
|
+
await this.ensureConnected();
|
|
64
|
+
return await this.client.request({ method: 'resources/list' }, types_js_1.ListResourcesResultSchema);
|
|
65
|
+
}
|
|
66
|
+
async readResource(uri) {
|
|
67
|
+
await this.ensureConnected();
|
|
68
|
+
return await this.client.request({
|
|
69
|
+
method: 'resources/read',
|
|
70
|
+
params: {
|
|
71
|
+
uri,
|
|
72
|
+
},
|
|
73
|
+
}, types_js_1.ReadResourceResultSchema);
|
|
74
|
+
}
|
|
75
|
+
async listPrompts() {
|
|
76
|
+
await this.ensureConnected();
|
|
77
|
+
return await this.client.request({ method: 'prompts/list' }, types_js_1.ListPromptsResultSchema);
|
|
78
|
+
}
|
|
79
|
+
async getPrompt(name, args) {
|
|
80
|
+
await this.ensureConnected();
|
|
81
|
+
return await this.client.request({
|
|
82
|
+
method: 'prompts/get',
|
|
83
|
+
params: {
|
|
84
|
+
name,
|
|
85
|
+
arguments: args,
|
|
86
|
+
},
|
|
87
|
+
}, types_js_1.GetPromptResultSchema);
|
|
88
|
+
}
|
|
89
|
+
async ensureConnected() {
|
|
90
|
+
if (!this.connected) {
|
|
91
|
+
await this.connect();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.MCPClient = MCPClient;
|
|
96
|
+
//# sourceMappingURL=mcp-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/utils/mcp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare class N8nApiError extends Error {
|
|
2
|
+
statusCode?: number | undefined;
|
|
3
|
+
code?: string | undefined;
|
|
4
|
+
details?: unknown | undefined;
|
|
5
|
+
constructor(message: string, statusCode?: number | undefined, code?: string | undefined, details?: unknown | undefined);
|
|
6
|
+
}
|
|
7
|
+
export declare class N8nAuthenticationError extends N8nApiError {
|
|
8
|
+
constructor(message?: string);
|
|
9
|
+
}
|
|
10
|
+
export declare class N8nNotFoundError extends N8nApiError {
|
|
11
|
+
constructor(resource: string, id?: string);
|
|
12
|
+
}
|
|
13
|
+
export declare class N8nValidationError extends N8nApiError {
|
|
14
|
+
constructor(message: string, details?: unknown);
|
|
15
|
+
}
|
|
16
|
+
export declare class N8nRateLimitError extends N8nApiError {
|
|
17
|
+
constructor(retryAfter?: number);
|
|
18
|
+
}
|
|
19
|
+
export declare class N8nServerError extends N8nApiError {
|
|
20
|
+
constructor(message?: string, statusCode?: number);
|
|
21
|
+
}
|
|
22
|
+
export declare function handleN8nApiError(error: unknown): N8nApiError;
|
|
23
|
+
export declare function getUserFriendlyErrorMessage(error: N8nApiError): string;
|
|
24
|
+
export declare function logN8nError(error: N8nApiError, context?: string): void;
|
|
25
|
+
//# sourceMappingURL=n8n-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"n8n-errors.d.ts","sourceRoot":"","sources":["../../src/utils/n8n-errors.ts"],"names":[],"mappings":"AAIA,qBAAa,WAAY,SAAQ,KAAK;IAG3B,UAAU,CAAC,EAAE,MAAM;IACnB,IAAI,CAAC,EAAE,MAAM;IACb,OAAO,CAAC,EAAE,OAAO;gBAHxB,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B;AAED,qBAAa,sBAAuB,SAAQ,WAAW;gBACzC,OAAO,SAA0B;CAI9C;AAED,qBAAa,gBAAiB,SAAQ,WAAW;gBACnC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM;CAK1C;AAED,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI/C;AAED,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,UAAU,CAAC,EAAE,MAAM;CAOhC;AAED,qBAAa,cAAe,SAAQ,WAAW;gBACjC,OAAO,SAA0B,EAAE,UAAU,SAAM;CAIhE;AAGD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAuC7D;AAGD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAiBtE;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAiBtE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.N8nServerError = exports.N8nRateLimitError = exports.N8nValidationError = exports.N8nNotFoundError = exports.N8nAuthenticationError = exports.N8nApiError = void 0;
|
|
4
|
+
exports.handleN8nApiError = handleN8nApiError;
|
|
5
|
+
exports.getUserFriendlyErrorMessage = getUserFriendlyErrorMessage;
|
|
6
|
+
exports.logN8nError = logN8nError;
|
|
7
|
+
const logger_1 = require("./logger");
|
|
8
|
+
class N8nApiError extends Error {
|
|
9
|
+
constructor(message, statusCode, code, details) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.statusCode = statusCode;
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.details = details;
|
|
14
|
+
this.name = 'N8nApiError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.N8nApiError = N8nApiError;
|
|
18
|
+
class N8nAuthenticationError extends N8nApiError {
|
|
19
|
+
constructor(message = 'Authentication failed') {
|
|
20
|
+
super(message, 401, 'AUTHENTICATION_ERROR');
|
|
21
|
+
this.name = 'N8nAuthenticationError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.N8nAuthenticationError = N8nAuthenticationError;
|
|
25
|
+
class N8nNotFoundError extends N8nApiError {
|
|
26
|
+
constructor(resource, id) {
|
|
27
|
+
const message = id ? `${resource} with ID ${id} not found` : `${resource} not found`;
|
|
28
|
+
super(message, 404, 'NOT_FOUND');
|
|
29
|
+
this.name = 'N8nNotFoundError';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.N8nNotFoundError = N8nNotFoundError;
|
|
33
|
+
class N8nValidationError extends N8nApiError {
|
|
34
|
+
constructor(message, details) {
|
|
35
|
+
super(message, 400, 'VALIDATION_ERROR', details);
|
|
36
|
+
this.name = 'N8nValidationError';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.N8nValidationError = N8nValidationError;
|
|
40
|
+
class N8nRateLimitError extends N8nApiError {
|
|
41
|
+
constructor(retryAfter) {
|
|
42
|
+
const message = retryAfter
|
|
43
|
+
? `Rate limit exceeded. Retry after ${retryAfter} seconds`
|
|
44
|
+
: 'Rate limit exceeded';
|
|
45
|
+
super(message, 429, 'RATE_LIMIT_ERROR', { retryAfter });
|
|
46
|
+
this.name = 'N8nRateLimitError';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.N8nRateLimitError = N8nRateLimitError;
|
|
50
|
+
class N8nServerError extends N8nApiError {
|
|
51
|
+
constructor(message = 'Internal server error', statusCode = 500) {
|
|
52
|
+
super(message, statusCode, 'SERVER_ERROR');
|
|
53
|
+
this.name = 'N8nServerError';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.N8nServerError = N8nServerError;
|
|
57
|
+
function handleN8nApiError(error) {
|
|
58
|
+
if (error instanceof N8nApiError) {
|
|
59
|
+
return error;
|
|
60
|
+
}
|
|
61
|
+
if (error instanceof Error) {
|
|
62
|
+
const axiosError = error;
|
|
63
|
+
if (axiosError.response) {
|
|
64
|
+
const { status, data } = axiosError.response;
|
|
65
|
+
const message = data?.message || axiosError.message;
|
|
66
|
+
switch (status) {
|
|
67
|
+
case 401:
|
|
68
|
+
return new N8nAuthenticationError(message);
|
|
69
|
+
case 404:
|
|
70
|
+
return new N8nNotFoundError('Resource', message);
|
|
71
|
+
case 400:
|
|
72
|
+
return new N8nValidationError(message, data);
|
|
73
|
+
case 429:
|
|
74
|
+
const retryAfter = axiosError.response.headers['retry-after'];
|
|
75
|
+
return new N8nRateLimitError(retryAfter ? parseInt(retryAfter) : undefined);
|
|
76
|
+
default:
|
|
77
|
+
if (status >= 500) {
|
|
78
|
+
return new N8nServerError(message, status);
|
|
79
|
+
}
|
|
80
|
+
return new N8nApiError(message, status, 'API_ERROR', data);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else if (axiosError.request) {
|
|
84
|
+
return new N8nApiError('No response from n8n server', undefined, 'NO_RESPONSE');
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return new N8nApiError(axiosError.message, undefined, 'REQUEST_ERROR');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return new N8nApiError('Unknown error occurred', undefined, 'UNKNOWN_ERROR', error);
|
|
91
|
+
}
|
|
92
|
+
function getUserFriendlyErrorMessage(error) {
|
|
93
|
+
switch (error.code) {
|
|
94
|
+
case 'AUTHENTICATION_ERROR':
|
|
95
|
+
return 'Failed to authenticate with n8n. Please check your API key.';
|
|
96
|
+
case 'NOT_FOUND':
|
|
97
|
+
return error.message;
|
|
98
|
+
case 'VALIDATION_ERROR':
|
|
99
|
+
return `Invalid request: ${error.message}`;
|
|
100
|
+
case 'RATE_LIMIT_ERROR':
|
|
101
|
+
return 'Too many requests. Please wait a moment and try again.';
|
|
102
|
+
case 'NO_RESPONSE':
|
|
103
|
+
return 'Unable to connect to n8n. Please check the server URL and ensure n8n is running.';
|
|
104
|
+
case 'SERVER_ERROR':
|
|
105
|
+
return 'n8n server error. Please try again later or contact support.';
|
|
106
|
+
default:
|
|
107
|
+
return error.message || 'An unexpected error occurred';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function logN8nError(error, context) {
|
|
111
|
+
const errorInfo = {
|
|
112
|
+
name: error.name,
|
|
113
|
+
message: error.message,
|
|
114
|
+
code: error.code,
|
|
115
|
+
statusCode: error.statusCode,
|
|
116
|
+
details: error.details,
|
|
117
|
+
context,
|
|
118
|
+
};
|
|
119
|
+
if (error.statusCode && error.statusCode >= 500) {
|
|
120
|
+
logger_1.logger.error('n8n API server error', errorInfo);
|
|
121
|
+
}
|
|
122
|
+
else if (error.statusCode && error.statusCode >= 400) {
|
|
123
|
+
logger_1.logger.warn('n8n API client error', errorInfo);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
logger_1.logger.error('n8n API error', errorInfo);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=n8n-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"n8n-errors.js","sourceRoot":"","sources":["../../src/utils/n8n-errors.ts"],"names":[],"mappings":";;;AAwDA,8CAuCC;AAGD,kEAiBC;AAGD,kCAiBC;AAvID,qCAAkC;AAIlC,MAAa,WAAY,SAAQ,KAAK;IACpC,YACE,OAAe,EACR,UAAmB,EACnB,IAAa,EACb,OAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,eAAU,GAAV,UAAU,CAAS;QACnB,SAAI,GAAJ,IAAI,CAAS;QACb,YAAO,GAAP,OAAO,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAVD,kCAUC;AAED,MAAa,sBAAuB,SAAQ,WAAW;IACrD,YAAY,OAAO,GAAG,uBAAuB;QAC3C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AALD,wDAKC;AAED,MAAa,gBAAiB,SAAQ,WAAW;IAC/C,YAAY,QAAgB,EAAE,EAAW;QACvC,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ,YAAY,CAAC;QACrF,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAND,4CAMC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IACjD,YAAY,OAAe,EAAE,OAAiB;QAC5C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,iBAAkB,SAAQ,WAAW;IAChD,YAAY,UAAmB;QAC7B,MAAM,OAAO,GAAG,UAAU;YACxB,CAAC,CAAC,oCAAoC,UAAU,UAAU;YAC1D,CAAC,CAAC,qBAAqB,CAAC;QAC1B,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AARD,8CAQC;AAED,MAAa,cAAe,SAAQ,WAAW;IAC7C,YAAY,OAAO,GAAG,uBAAuB,EAAE,UAAU,GAAG,GAAG;QAC7D,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAGD,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAE3B,MAAM,UAAU,GAAG,KAAY,CAAC;QAChC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;YAEpD,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,GAAG;oBACN,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBAC7C,KAAK,GAAG;oBACN,OAAO,IAAI,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACnD,KAAK,GAAG;oBACN,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC/C,KAAK,GAAG;oBACN,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBAC9D,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC9E;oBACE,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;wBAClB,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC7C,CAAC;oBACD,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YAE9B,OAAO,IAAI,WAAW,CAAC,6BAA6B,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YAEN,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAGD,OAAO,IAAI,WAAW,CAAC,wBAAwB,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACtF,CAAC;AAGD,SAAgB,2BAA2B,CAAC,KAAkB;IAC5D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,sBAAsB;YACzB,OAAO,6DAA6D,CAAC;QACvE,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,KAAK,kBAAkB;YACrB,OAAO,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7C,KAAK,kBAAkB;YACrB,OAAO,wDAAwD,CAAC;QAClE,KAAK,aAAa;YAChB,OAAO,kFAAkF,CAAC;QAC5F,KAAK,cAAc;YACjB,OAAO,8DAA8D,CAAC;QACxE;YACE,OAAO,KAAK,CAAC,OAAO,IAAI,8BAA8B,CAAC;IAC3D,CAAC;AACH,CAAC;AAGD,SAAgB,WAAW,CAAC,KAAkB,EAAE,OAAgB;IAC9D,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO;KACR,CAAC;IAEF,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;QAChD,eAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;QACvD,eAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|