mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-01-30 06:22:04 +00:00
* feat: add n8n_deploy_template tool for one-click template deployment (v2.27.0) Add new MCP tool that deploys n8n.io workflow templates directly to user's n8n instance in a single operation. Features: - Fetch template from local database - Extract and report required credentials - Optionally strip credentials (default: true) - Optionally auto-upgrade node typeVersions (default: true) - Optionally validate before deployment (default: true) - Return workflow ID, URL, and setup guidance Parameters: - templateId (required): Template ID from n8n.io - name (optional): Custom workflow name - autoUpgradeVersions (default: true) - validate (default: true) - stripCredentials (default: true) Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: address code review findings for n8n_deploy_template - Fix health check tool count (12 → 13) to include new tool - Add templateId validation (must be positive integer) - Use deep copy of workflow to prevent template mutation - Expand unit tests with negative/zero/decimal validation cases Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: update README with n8n_deploy_template tool - Update management tools count from 12 to 13 - Add n8n_deploy_template to the tools list Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: prevent workflow validator from mutating node types The validator was incorrectly mutating node types from full form (n8n-nodes-base.*) to short form (nodes-base.*) during validation. This caused deployed workflows to show "?" icons in n8n UI because the API requires full form node types. Also updated SplitInBatches detection to check both node type forms since workflows may contain either format. Conceived by Romuald Członkowski - www.aiadvisors.pl/en 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * test: update tool counts in handlers-n8n-manager test Update expected managementTools count from 12 to 13 and totalAvailable from 19 to 20 to account for the new n8n_deploy_template tool. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: pin MCP SDK and Zod versions to prevent Zod v4 resolution Fixes #440, #444, #446, #447, #450 Root cause: package.json declared `"@modelcontextprotocol/sdk": "^1.20.1"` which allowed npm to resolve to SDK 1.23.0. That version accepts `"zod": "^3.25 || ^4.0"`, causing npm to deduplicate to Zod v4. SDK 1.23.0's `isZ4Schema()` function crashes when called with undefined, which happens for plain JSON Schema objects. Changes: - Pin SDK to exact version 1.20.1 (removes ^ prefix) - Pin Zod to exact version 3.24.1 (removes ^ prefix) - Add CI workflow to verify fresh installs get compatible versions The new CI workflow: - Packs and installs package fresh (without lockfile) - Verifies SDK is exactly 1.20.1 - Verifies Zod is NOT v4 (blocks 4.x.x) - Runs weekly to catch upstream dependency changes Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * chore: improve dependency-check workflow based on code review - Add workflow_dispatch for manual triggering/debugging - Add explicit "not found" handling for version detection failures - Use regex pattern for Zod v4 check to catch pre-release versions - Add Zod error pattern detection in functionality test - Capture stderr output for comprehensive error checking Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
168 lines
7.4 KiB
JSON
168 lines
7.4 KiB
JSON
{
|
|
"name": "n8n-mcp",
|
|
"version": "2.27.0",
|
|
"description": "Integration between n8n workflow automation and Model Context Protocol (MCP)",
|
|
"main": "dist/index.js",
|
|
"types": "dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"require": "./dist/index.js",
|
|
"import": "./dist/index.js"
|
|
}
|
|
},
|
|
"bin": {
|
|
"n8n-mcp": "./dist/mcp/index.js"
|
|
},
|
|
"scripts": {
|
|
"build": "tsc -p tsconfig.build.json",
|
|
"rebuild": "node dist/scripts/rebuild.js",
|
|
"rebuild:optimized": "node dist/scripts/rebuild-optimized.js",
|
|
"validate": "node dist/scripts/validate.js",
|
|
"test-nodes": "node dist/scripts/test-nodes.js",
|
|
"start": "node dist/mcp/index.js",
|
|
"start:http": "MCP_MODE=http node dist/mcp/index.js",
|
|
"start:http:fixed": "MCP_MODE=http USE_FIXED_HTTP=true node dist/mcp/index.js",
|
|
"start:n8n": "N8N_MODE=true MCP_MODE=http node dist/mcp/index.js",
|
|
"http": "npm run build && npm run start:http:fixed",
|
|
"dev": "npm run build && npm run rebuild && npm run validate",
|
|
"dev:http": "MCP_MODE=http nodemon --watch src --ext ts --exec 'npm run build && npm run start:http'",
|
|
"test:single-session": "./scripts/test-single-session.sh",
|
|
"test:mcp-endpoint": "node scripts/test-mcp-endpoint.js",
|
|
"test:mcp-endpoint:curl": "./scripts/test-mcp-endpoint.sh",
|
|
"test:mcp-stdio": "npm run build && node scripts/test-mcp-stdio.js",
|
|
"test": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:run": "vitest run",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:ci": "vitest run --coverage --coverage.thresholds.lines=0 --coverage.thresholds.functions=0 --coverage.thresholds.branches=0 --coverage.thresholds.statements=0 --reporter=default --reporter=junit",
|
|
"test:watch": "vitest watch",
|
|
"test:unit": "vitest run tests/unit",
|
|
"test:integration": "vitest run --config vitest.config.integration.ts",
|
|
"test:integration:n8n": "vitest run tests/integration/n8n-api",
|
|
"test:cleanup:orphans": "tsx tests/integration/n8n-api/scripts/cleanup-orphans.ts",
|
|
"test:e2e": "vitest run tests/e2e",
|
|
"lint": "tsc --noEmit",
|
|
"typecheck": "tsc --noEmit",
|
|
"update:n8n": "node scripts/update-n8n-deps.js",
|
|
"update:n8n:check": "node scripts/update-n8n-deps.js --dry-run",
|
|
"fetch:templates": "node dist/scripts/fetch-templates.js",
|
|
"fetch:templates:update": "node dist/scripts/fetch-templates.js --update",
|
|
"fetch:templates:extract": "node dist/scripts/fetch-templates.js --extract-only",
|
|
"fetch:templates:robust": "node dist/scripts/fetch-templates-robust.js",
|
|
"prebuild:fts5": "npx tsx scripts/prebuild-fts5.ts",
|
|
"test:templates": "node dist/scripts/test-templates.js",
|
|
"test:protocol-negotiation": "npx tsx src/scripts/test-protocol-negotiation.ts",
|
|
"test:workflow-validation": "node dist/scripts/test-workflow-validation.js",
|
|
"test:template-validation": "node dist/scripts/test-template-validation.js",
|
|
"test:essentials": "node dist/scripts/test-essentials.js",
|
|
"test:enhanced-validation": "node dist/scripts/test-enhanced-validation.js",
|
|
"test:ai-workflow-validation": "node dist/scripts/test-ai-workflow-validation.js",
|
|
"test:mcp-tools": "node dist/scripts/test-mcp-tools.js",
|
|
"test:n8n-manager": "node dist/scripts/test-n8n-manager-integration.js",
|
|
"test:n8n-validate-workflow": "node dist/scripts/test-n8n-validate-workflow.js",
|
|
"test:typeversion-validation": "node dist/scripts/test-typeversion-validation.js",
|
|
"test:error-handling": "node dist/scripts/test-error-handling-validation.js",
|
|
"test:workflow-diff": "node dist/scripts/test-workflow-diff.js",
|
|
"test:transactional-diff": "node dist/scripts/test-transactional-diff.js",
|
|
"test:tools-documentation": "node dist/scripts/test-tools-documentation.js",
|
|
"test:structure-validation": "npx tsx scripts/test-structure-validation.ts",
|
|
"test:url-configuration": "npm run build && ts-node scripts/test-url-configuration.ts",
|
|
"test:search-improvements": "node dist/scripts/test-search-improvements.js",
|
|
"test:fts5-search": "node dist/scripts/test-fts5-search.js",
|
|
"migrate:fts5": "node dist/scripts/migrate-nodes-fts.js",
|
|
"test:mcp:update-partial": "node dist/scripts/test-mcp-n8n-update-partial.js",
|
|
"test:update-partial:debug": "node dist/scripts/test-update-partial-debug.js",
|
|
"test:issue-45-fix": "node dist/scripts/test-issue-45-fix.js",
|
|
"test:auth-logging": "tsx scripts/test-auth-logging.ts",
|
|
"test:docker": "./scripts/test-docker-config.sh all",
|
|
"test:docker:unit": "./scripts/test-docker-config.sh unit",
|
|
"test:docker:integration": "./scripts/test-docker-config.sh integration",
|
|
"test:docker:security": "./scripts/test-docker-config.sh security",
|
|
"sanitize:templates": "node dist/scripts/sanitize-templates.js",
|
|
"db:rebuild": "node dist/scripts/rebuild-database.js",
|
|
"benchmark": "vitest bench --config vitest.config.benchmark.ts",
|
|
"benchmark:watch": "vitest bench --watch --config vitest.config.benchmark.ts",
|
|
"benchmark:ui": "vitest bench --ui --config vitest.config.benchmark.ts",
|
|
"benchmark:ci": "CI=true node scripts/run-benchmarks-ci.js",
|
|
"db:init": "node -e \"new (require('./dist/services/sqlite-storage-service').SQLiteStorageService)(); console.log('Database initialized')\"",
|
|
"docs:rebuild": "ts-node src/scripts/rebuild-database.ts",
|
|
"sync:runtime-version": "node scripts/sync-runtime-version.js",
|
|
"update:readme-version": "node scripts/update-readme-version.js",
|
|
"prepare:publish": "./scripts/publish-npm.sh",
|
|
"update:all": "./scripts/update-and-publish-prep.sh",
|
|
"test:release-automation": "node scripts/test-release-automation.js",
|
|
"prepare:release": "node scripts/prepare-release.js"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/czlonkowski/n8n-mcp.git"
|
|
},
|
|
"keywords": [
|
|
"n8n",
|
|
"mcp",
|
|
"model-context-protocol",
|
|
"ai",
|
|
"workflow",
|
|
"automation"
|
|
],
|
|
"author": "Romuald Czlonkowski @ www.aiadvisors.pl/en",
|
|
"license": "MIT",
|
|
"bugs": {
|
|
"url": "https://github.com/czlonkowski/n8n-mcp/issues"
|
|
},
|
|
"homepage": "https://github.com/czlonkowski/n8n-mcp#readme",
|
|
"files": [
|
|
"dist/**/*",
|
|
"data/nodes.db",
|
|
".env.example",
|
|
"README.md",
|
|
"LICENSE",
|
|
"package.runtime.json"
|
|
],
|
|
"devDependencies": {
|
|
"@faker-js/faker": "^9.9.0",
|
|
"@testing-library/jest-dom": "^6.6.4",
|
|
"@types/better-sqlite3": "^7.6.13",
|
|
"@types/express": "^5.0.3",
|
|
"@types/node": "^22.15.30",
|
|
"@types/ws": "^8.18.1",
|
|
"@vitest/coverage-v8": "^3.2.4",
|
|
"@vitest/runner": "^3.2.4",
|
|
"@vitest/ui": "^3.2.4",
|
|
"axios": "^1.11.0",
|
|
"axios-mock-adapter": "^2.1.0",
|
|
"fishery": "^2.3.1",
|
|
"msw": "^2.10.4",
|
|
"nodemon": "^3.1.10",
|
|
"ts-node": "^10.9.2",
|
|
"typescript": "^5.8.3",
|
|
"vitest": "^3.2.4"
|
|
},
|
|
"dependencies": {
|
|
"@modelcontextprotocol/sdk": "1.20.1",
|
|
"@n8n/n8n-nodes-langchain": "^1.120.1",
|
|
"@supabase/supabase-js": "^2.57.4",
|
|
"dotenv": "^16.5.0",
|
|
"express": "^5.1.0",
|
|
"express-rate-limit": "^7.1.5",
|
|
"lru-cache": "^11.2.1",
|
|
"n8n": "^1.121.2",
|
|
"n8n-core": "^1.120.1",
|
|
"n8n-workflow": "^1.118.1",
|
|
"openai": "^4.77.0",
|
|
"sql.js": "^1.13.0",
|
|
"tslib": "^2.6.2",
|
|
"uuid": "^10.0.0",
|
|
"zod": "3.24.1"
|
|
},
|
|
"optionalDependencies": {
|
|
"@rollup/rollup-darwin-arm64": "^4.50.0",
|
|
"@rollup/rollup-linux-x64-gnu": "^4.50.0",
|
|
"better-sqlite3": "^11.10.0"
|
|
},
|
|
"overrides": {
|
|
"pyodide": "0.26.4"
|
|
}
|
|
}
|