Skip to main content
Glama

n8n-free-mcp

Free & open-source MCP server for n8n. Manage your workflows, debug executions and control your self-hosted n8n instance directly from Claude Code, Claude Desktop, Cursor, or any Model Context Protocol client.

  • 🆓 100% free, MIT licensed — no paywalls, no telemetry

  • 🏠 Built for self-hosted / homelab n8n instances (works with n8n Cloud too)

  • 🔑 Uses n8n's official public API (/api/v1) with your own API key

  • 🪶 Tiny: one file, two dependencies (@modelcontextprotocol/sdk + zod)

  • 🧠 Context-friendly: list tools return compact summaries instead of dumping full workflow JSON

Tools

Tool

Description

list_workflows

List workflows (id, name, active, tags, node count) with filters + pagination

get_workflow

Full workflow JSON: nodes, connections, settings

create_workflow

Create a new workflow from n8n-format JSON

update_workflow

Replace a workflow (read-only fields stripped automatically)

activate_workflow / deactivate_workflow

Toggle a workflow's triggers

delete_workflow

Delete a workflow (irreversible ⚠️)

list_executions

List executions, filter by status (error/success/waiting) or workflow

get_execution

Execution detail — with includeData=true returns per-node I/O for debugging

delete_execution

Delete an execution record

list_tags

List instance tags

check_connection

Verify the instance is reachable and the API key works

Related MCP server: n8n Workflow Builder MCP Server

Setup

1. Get an n8n API key

In your n8n instance: Settings → n8n API → Create an API key.

2. Install

git clone https://github.com/jserna0001/n8n-free-mcp.git
cd n8n-free-mcp
npm install
npm run build

3. Configure your MCP client

Claude Code:

claude mcp add --scope user n8n \
  --env N8N_API_URL=https://your-n8n-instance.com \
  --env N8N_API_KEY=your-api-key \
  -- node /path/to/n8n-free-mcp/dist/index.js

Claude Desktop / Cursor / other clients (claude_desktop_config.json, mcp.json, etc.):

{
  "mcpServers": {
    "n8n": {
      "command": "node",
      "args": ["/path/to/n8n-free-mcp/dist/index.js"],
      "env": {
        "N8N_API_URL": "https://your-n8n-instance.com",
        "N8N_API_KEY": "your-api-key"
      }
    }
  }
}

Alternative: .env file. Instead of passing env vars from the client, copy .env.example to .env in the project root and fill it in. Environment variables from the client take precedence.

4. Try it

Ask your assistant things like:

  • "List my n8n workflows"

  • "Show me the failed executions of the last runs and diagnose the error"

  • "Deactivate the workflow called X"

  • "Duplicate this workflow but change the webhook path"

Notes

  • The n8n public API does not expose credential values (by design). Credential management tools are intentionally out of scope.

  • update_workflow performs a full replace (PUT), as required by the n8n API — fetch with get_workflow, modify, then update.

  • n8n API keys are JWTs with an expiration date. If you start getting 401s, generate a new key.

Contributing

Issues and PRs welcome. Ideas on the roadmap:

  • Trigger workflows via webhook test URLs

  • Variables & projects endpoints

  • npm package (npx n8n-free-mcp)

  • Docker image

License

MIT © Justine Serna

Available Tools

12 tools
activate_workflowActivate workflowA

Activate a workflow (starts running on its triggers).

Inputs: id (required).

check_connectionCheck connectionA

Verify that the n8n instance responds and the API key is valid.

Inputs: no named parameters.

create_workflowCreate workflowA

Create a new workflow (created inactive; use activate_workflow to enable it). 'nodes' and 'connections' are JSON in n8n's standard export format.

Inputs: name (required), nodes (required), connections (required), settings.

deactivate_workflowDeactivate workflowA

Deactivate a workflow (stops responding to its triggers).

Inputs: id (required).

delete_executionDelete executionA

Delete an execution record. ⚠️ Irreversible.

Inputs: id (required).

delete_workflowDelete workflowA

Permanently delete a workflow. ⚠️ Irreversible — confirm with the user before using.

Inputs: id (required).

get_executionGet executionA

Get the details of an execution. With includeData=true it returns per-node data (can be very large) — ideal for diagnosing errors.

Inputs: id (required), includeData.

get_workflowGet workflowA

Get a full workflow by ID, including nodes, connections and settings.

Inputs: id (required), excludePinnedData.

list_executionsList executionsA

List workflow executions. Useful for debugging: filter by status ('error', 'success', 'waiting') or by workflowId.

Inputs: limit, cursor, status, workflowId.

list_tagsList tagsB

List the tags available on the n8n instance.

Inputs: limit, cursor.

list_workflowsList workflowsA

List workflows on the n8n instance. Returns id, name, active state, tags and dates. Supports cursor pagination.

Inputs: name, tags, limit, active, +2 more.

update_workflowUpdate workflowA

Replace an existing workflow (PUT). Pass the full workflow JSON (typically the result of get_workflow with modifications); read-only fields (id, active, tags, dates) are stripped automatically.

Inputs: id (required), workflow (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 12 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: workflow CRUD, execution management, connection check, and tag listing. There is no overlap or ambiguity between tools like activate/deactivate or create/delete.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with underscores (e.g., activate_workflow, list_executions, check_connection). No mixed conventions or irregular naming.

    Tool Count5/5

    12 tools is well-scoped for managing n8n workflows and executions. Each tool serves a distinct function without redundancy, covering the primary operations needed.

    Completeness5/5

    The tool set fully covers workflow lifecycle (create, get, update, delete, activate, deactivate) and execution operations (list, get, delete), plus connection check and tag listing. No obvious gaps for the domain.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers