MCP server for operating n8n — ask an AI assistant what is failing, why, and since when. Read-only by default, zero dependencies.
Server demonstrates solid fundamentals: all 7 tools have clear verb-noun names (list_, get_, set_), descriptions are present and contextual (avg ~120 chars), and input schemas are properly typed with required fields marked. Tool composition is clean, each tool has one responsibility. However, parameter descriptions are sparse or missing entirely (e.g., 'active' in list_workflows lacks description; 'limit' and 'sample' lack guidance on valid ranges). Output schemas are not formally documented, responses are inferred from code. Error handling is minimal; no recovery guidance or actionable error messages visible. The design philosophy ('read-only by default', 'answers not dumps') is excellent and evident in failing_workflows and health_summary, which aggregate server-side rather than dumping raw data. This is a B-grade server: good intent and structure, but parameter and error documentation gaps prevent higher scores.
Which workflows are failing, ranked by failure count, with a sample error for each. Start here when something is wrong.
Get one execution including its error message if it failed.
Get one workflow's summary, optionally including its node list.
Instance overview: workflow counts, active count, recent error rate.
List recent executions, optionally filtered by status or workflow.
List workflows with id, name, active state, node count and tags.
Parameter descriptions missing or incomplete. 'active' in list_workflows, 'limit' in list_workflows/list_executions/failing_workflows, and 'sample' in health_summary lack descriptions. LLMs cannot infer valid ranges or semantics from names alone.
Output schemas not formally documented. Responses are inferred from code (e.g., failing_workflows returns 'failed_executions_examined', 'distinct_workflows_failing', 'workflows'). LLMs need explicit schema declarations to plan downstream calls and extract fields reliably.
No numeric constraints on 'limit' and 'sample' parameters. Defaults are provided (100, 50, 200) but min/max bounds are absent. LLMs could pass absurd values (limit=999999) that break APIs or cause timeouts.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Activate or deactivate a workflow. Changes what runs in production — confirm with a human before calling.
Error handling is silent. No visible error recovery guidance, categorization (retryable vs fatal), or actionable error messages. If an API call fails, the LLM has no guidance on what to do next.
set_workflow_active lacks confirmation/dry-run pattern. Irreversible operations (activating/deactivating production workflows) should support a confirmation step or explicit warning in the description. Current description mentions 'confirm with a human' but no tool-level mechanism enforces this.