workflow-lint
Provides linting for n8n workflows, catching misconfigurations, naming issues, reliability problems, and structural mistakes, with safe fixes available via --fix.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@workflow-lintlint this n8n workflow JSON and fix what's safe"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
workflow-lint
Catch the mistakes in an n8n workflow before it runs: a node still called "HTTP Request", a placeholder URL, an API call with no retry, a Set node that drops its input. workflow-lint reports each one on the line where it lives and fixes the ones that have a safe fix. It runs from the terminal, a pre-commit hook, CI, or an AI agent over MCP.

Installation
Requires Node.js 24 or newer.
Run it without installing:
npx workflow-lint --helpAdd it to a project:
npm install --save-dev workflow-lintBuild from source:
git clone https://github.com/LudwigGerdes/workflow-lint.git
cd workflow-lint
pnpm install && pnpm buildRelated MCP server: automatelab-n8n-mcp
Getting started
Download a sample workflow that has several things wrong with it, and lint it:
curl -LO https://raw.githubusercontent.com/LudwigGerdes/workflow-lint/main/docs/demo/order-sync.json
npx workflow-lint lint order-sync.jsonExpected output:
order-sync.json
1:1 warn n8n/typeversion-policy No n8n version is pinned, so typeVersion findings were withheld; set settings.n8nVersion or pass --n8n-version to check them.
4:5 info reliability/webhook-input-contract Webhook "Order Received" accepts its payload without checking it; validate the required fields and stop on bad input.
17:5 warn naming/decision-node-question-mark Decision node "Is Valid" should be phrased as a question ending in "?".
27:5 warn hygiene/no-placeholder-api-url Node "HTTP Request" still points at the placeholder URL "https://api.example.com/orders".
27:5 warn naming/external-node-name-format Node "HTTP Request" calls an external service; name it to match ^(GET|POST|PUT|PATCH|DELETE|UPSERT) .+ - .+$.
27:5 warn naming/no-default-node-name Node "HTTP Request" still has its default name; rename it to describe what it does.
27:5 warn reliability/http-retry-config Node "HTTP Request" calls out over the network but does not retry on failure.
27:5 warn structure/branch-entry-pass-through Branch 0 of "Is Valid" goes straight into "HTTP Request"; open it with a NoOp or a pass-through Set.
40:5 warn naming/no-default-node-name Node "Edit Fields" still has its default name; rename it to describe what it does.
40:5 warn structure/branch-entry-pass-through Pass-through Set "Edit Fields" on branch 1 of "Is Valid" does not set includeOtherFields, so it drops the incoming data.
40:5 error structure/set-pass-through-include-other-fields Pass-through Set "Edit Fields" assigns nothing and does not set includeOtherFields, so it emits empty items.
x 11 problems (1 error, 9 warnings, 1 info) 3 fixable with --fixApply the safe fixes:
npx workflow-lint lint order-sync.json --fixExpected output:
order-sync.json
1:1 warn n8n/typeversion-policy No n8n version is pinned, so typeVersion findings were withheld; set settings.n8nVersion or pass --n8n-version to check them.
4:5 info reliability/webhook-input-contract Webhook "Order Received" accepts its payload without checking it; validate the required fields and stop on bad input.
27:5 warn hygiene/no-placeholder-api-url Node "HTTP Request" still points at the placeholder URL "https://api.example.com/orders".
27:5 warn naming/external-node-name-format Node "HTTP Request" calls an external service; name it to match ^(GET|POST|PUT|PATCH|DELETE|UPSERT) .+ - .+$.
27:5 warn naming/no-default-node-name Node "HTTP Request" still has its default name; rename it to describe what it does.
27:5 warn structure/branch-entry-pass-through Branch 0 of "Is Valid?" goes straight into "HTTP Request"; open it with a NoOp or a pass-through Set.
43:5 warn naming/no-default-node-name Node "Edit Fields" still has its default name; rename it to describe what it does.
x 7 problems (0 errors, 6 warnings, 1 info)To use a workflow of your own, open it in n8n and choose Download from the … menu.
Usage
Lint every workflow under the current directory:
workflow-lint lintFix what can be fixed safely:
workflow-lint lint --fixTidy the canvas layout:
workflow-lint fmtWrite a config file, where you pin your n8n version and switch rules on or off:
workflow-lint initExpected output:
Created workflow-lint.config.yamlAdopt it on an existing repository by accepting today's findings and failing only on new ones:
workflow-lint lint --gen-baselineReport in a format your CI understands:
workflow-lint lint --format sarifDocumentation
Full documentation is at workflowtools.dev/workflow-lint:
License
MIT © Ludwig Gerdes
Bundled n8n node descriptions are covered by THIRD_PARTY_NOTICES.md. Not affiliated with n8n GmbH.
This server cannot be deployed
Maintenance
Related MCP Connectors
Security scanner for n8n workflows + live MCP Trust-Check. 18 rules, OWASP mapped. Paid x402 API.
MCP server (stdio): lint OpenAPI specs with Spectral via the AgentForge API
Open-source Zapier/n8n alternative as an MCP server: agents build, run and debug your workflows.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceProvides seamless integration between MCP-compatible AI assistants and n8n workflow automation, enabling intelligent management and automation of n8n workflows through natural language.5-
- AlicenseAqualityCmaintenanceAn MCP server for n8n that gives Claude, Cursor, and other AI agents tools for generating workflows, linting, diagnosing failed executions, and driving live n8n instances.1272 npm12MIT
- AlicenseAqualityDmaintenanceAn MCP server for n8n that gives AI agents tools for generating workflows, linting, diagnosing failed executions, and driving live n8n instances.1272 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI models to manage workflows, credentials, nodes, templates, and monitor executions on the n8n automation platform through a standardized MCP interface.46,471 npmMIT