Files
n8n-mcp/package.json
Romuald Członkowski fb2d306dc3 fix: intercept stdout writes to prevent JSON-RPC corruption in stdio mode (#673)
* fix: intercept process.stdout.write to prevent JSON-RPC corruption in stdio mode (#628, #627, #567)

Console method suppression alone was insufficient — native modules, n8n packages,
and third-party code can call process.stdout.write() directly, leaking debug output
(refCount, dbPath, clientVersion, protocolVersion, etc.) into the MCP JSON-RPC stream.

Added stdout write interceptor that only allows JSON-RPC messages through (objects
containing "jsonrpc" field). All other writes are redirected to stderr. This fixes
the flood of "Unexpected token is not valid JSON" warnings on every new Claude
Desktop chat.

Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: add Docker Hub login to fix buildx bootstrap rate limiting

GitHub-hosted runners hit Docker Hub anonymous pull limits when
setup-buildx-action pulls moby/buildkit. Add docker/login-action
for Docker Hub before setup-buildx-action in all 4 workflows:
docker-build.yml, docker-build-fast.yml, docker-build-n8n.yml, release.yml.

Uses DOCKERHUB_USERNAME and DOCKERHUB_TOKEN repository secrets.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 17:26:43 +01:00

178 lines
8.1 KiB
JSON

{
"name": "n8n-mcp",
"version": "2.41.2",
"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",
"build:ui": "cd ui-apps && npm install && npm run build",
"build:all": "npm run build:ui && npm run build",
"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:deprecated": "echo 'DEPRECATED: USE_FIXED_HTTP is deprecated. Use npm run start:http instead.' && 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",
"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",
"fetch:community": "node dist/scripts/fetch-community-nodes.js",
"fetch:community:verified": "node dist/scripts/fetch-community-nodes.js --verified-only",
"fetch:community:update": "node dist/scripts/fetch-community-nodes.js --update",
"generate:docs": "node dist/scripts/generate-community-docs.js",
"generate:docs:readme-only": "node dist/scripts/generate-community-docs.js --readme-only",
"generate:docs:summary-only": "node dist/scripts/generate-community-docs.js --summary-only",
"generate:docs:incremental": "node dist/scripts/generate-community-docs.js --incremental",
"generate:docs:stats": "node dist/scripts/generate-community-docs.js --stats",
"migrate:readme-columns": "node dist/scripts/migrate-readme-columns.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",
"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/**/*",
"ui-apps/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.28.0",
"@n8n/n8n-nodes-langchain": "^2.13.1",
"@supabase/supabase-js": "^2.57.4",
"dotenv": "^16.5.0",
"express": "^5.1.0",
"express-rate-limit": "^7.1.5",
"form-data": "^4.0.5",
"lru-cache": "^11.2.1",
"n8n": "^2.13.3",
"n8n-core": "^2.13.1",
"n8n-workflow": "^2.13.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",
"isolated-vm": "npm:empty-npm-package@1.0.0"
}
}