Formio MCP vs MCP N8n

A side-by-side look at the Formio MCP and MCP N8n MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Formio MCP logoFormio MCPDeveloper Tools · Local subprocess (stdio)Create and manage Form.io forms, resources, actions, roles, and projects from your AI agent.64GoodAuth: not declaredMCP N8n logoMCP N8nDeveloper Tools · Local subprocess (stdio)Operate and build n8n: 61 tools, 560-node catalog, validation, autofix, snapshots and backups.64GoodAuth: not declared

Verdict: choose Formio MCP for developer tools work as a local process; choose MCP N8n for developer tools as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Formio MCP logoChoose Formio MCP when

  • You need dedicated capabilities in the Developer Tools domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like hello, form_create, form_get.
Explore Formio MCP

MCP N8n logoChoose MCP N8n when

  • You need dedicated capabilities in the Developer Tools domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: N8N_BASE_URL, N8N_API_KEY.
  • You want tools like n8n_create_workflow, n8n_list_workflows, n8n_list_workflows_summary.
Explore MCP N8n

Feature & specification comparison

Rows where the two servers differ are marked.

SpecFormio MCP logoFormio MCPMCP N8n logoMCP N8n
CategoryDeveloper ToolsDeveloper Tools
Quality signal64/100 · Good64/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNot declared
PricingNot declaredNot declared
Required env varsNone listedN8N_BASE_URLN8N_API_KEY
Verified ownerCommunity listingCommunity listing
GitHub stars821
Directory activity 3 views 0 installs 0 upvotes 1 views 0 installs 0 upvotes
Tools2161

Tools & capabilities

Formio MCP tools 21

  • helloSay hello — a connectivity check that confirms the server is running and reachable. Needs no Form.io project or credentials, so it is the first thing to try when other tools fail.
  • form_createCreate a new form in the Form.io project mapped to the user's current working directory. IMPORTANT: Before calling this tool, use the formio-schema skill to construct a properly structured Form.io form JSON definition based on the user's requirements. The skill documents all component types, validation options, layout patterns, and conditional logic available in Form.io. New forms default to `revisions: 'original'` so form change history is preserved. NOT for: creating a draft revision of an existing form. When the user says "create/save a draft", "draft <change>", call form_update with `formId` and `draft: true` instead.
  • form_getFetch a single form definition from the Form.io project mapped to the user's current working directory, by form ID or path. Pass `draft: true` to fetch the form's current in-flight draft instead of the published form.
  • form_listList forms from the Form.io project mapped to the user's current working directory with optional filtering and pagination.
  • form_revision_getFetch a single immutable form revision from the Form.io project mapped to the current working directory. `version` accepts either the revision `_vid` (e.g. "3") or the revision document `_id` (24-character hex). To revert the live form to this revision, pass its `form` body to `form_update` with a `note` like `Revert to v<vid>`.
  • form_revisions_listList immutable published revision summaries for a single form in the Form.io project mapped to the current working directory. Returns compact revision metadata (_vid, _id, modified, user, _vnote) for the form identified by `formIdOrPath`. To inspect a specific revision body, call `form_revision_get` with the desired `_vid`. To revert the live form to a prior revision, pass that revision body to `form_update` with a `note` like `Revert to v<vid>`.
  • form_updateUpdate an existing form in the Form.io project mapped to the user's current working directory. IMPORTANT: Before calling this tool, first use form_get to fetch the current form definition, then use the formio-schema skill to understand the schema so that you can apply the requested modifications (add, remove, or modify fields and settings), and finally call this tool with the complete updated form JSON. `draft`, `publish`, and `revert` are mutually exclusive — pass at most one. If `revisions` in the response differs from the stored value, the per-form revisions-mode gate prompted the USER and they chose.
  • project_exportExport the complete template (roles, resources, forms, actions) of the Form.io project mapped to the user's current working directory as a portable JSON document. Use this to snapshot a project before importing changes.
  • project_getReport which Form.io project the given working directory resolves to, which deployment hosts it, and which layer supplied each — the preflight to run before the first tool call that reads from or writes to a deployment. Answers from inside this server, using the same resolver every other tool uses, so what it reports is what the next call targets. There is no need to run any shell command to ask this. Branch on `status`. "ok" means both URLs resolved and you may proceed. "not-configured" means nothing is mapped for this directory: relay the message, ask the user for the single value it names, record it with project_set, and call this again. "base-url-unresolved" means the project IS recorded and only its deployment is missing — ask for the Base URL alone and do NOT re-ask for the Project URL. Reads only. It resolves and reports; project_set is what records a choice.
  • project_importImport a template JSON into the existing Form.io project mapped to the user's current working directory, merging roles, resources, forms, and actions in one call. Use the formio-resource-planner skill to construct the template before calling this tool. WARNING: import merges into the existing project — use project_export first to snapshot.
  • project_setSet the active Form.io project for the given working directory by recording its URL in ~/.formio/projects.json You MUST call this tool whenever the user asks to set, change, or switch the active Form.io project — do not merely acknowledge the request in text. Persisting the choice requires the tool call. The chosen URL is persisted to ~/.formio/projects.json keyed by the cwd argument when provided (or the MCP server process cwd otherwise). Pass the `cwd` argument whenever you know the user's current working directory — the server process cwd is fixed at spawn and may not match where the user actually is. Every Form.io tool resolves its project on each call, so a mapping written here needs no restart. It takes effect only where the mapping is the record that WINS, though: under a committed formio.json the mapping is the fallback if that file goes away, and this call reports the pair that actually resolves rather than the one it recorded. Read `ok` and `projectUrl` on the result rather than assuming the write governs. You normally pass only projectUrl. The base URL — which builds the portal-login URL and keys the cached token — is derived from it — https://api.form.io for a project on a form.io host, and the parent path for a project addressed as a sub-directory — so there is nothing to supply. Pass baseUrl ONLY when the server reports that it cannot be determined, which happens for a project URL that carries no path on a customer domain: there the deployment is a sibling sub-domain and nothing in the project URL names it. Do not ask the user for a base URL before the server says it needs one. This tool writes the machine-local mapping, which is keyed by absolute path and therefore does not survive a clone. To record the target with the code instead — versioned, visible in a diff, and shared with everyone who clones the repository — write a committed formio.json yourself, in the application's own folder: a JSON object holding {"projectUrl": "..."}, plus "baseUrl" only when it cannot be derived. This server reads that file and never writes it. Resolution is by scope, narrowest first, and precedence runs: a committed formio.json, then the working-directory mapping, then FORMIO_PROJECT_URL in the environment, which is the weakest of the three. So a mapping written here DOES override an environment value, and a committed file overrides both.
  • role_createCreate a new role in the Form.io project mapped to the user's current working directory.
  • +9 more on the listing page

MCP N8n tools 61

  • n8n_create_workflowCreate a new workflow in n8n. Prefer n8n_search_nodes + n8n_validate_workflow first so the JSON is valid. You can specify nodes, connections, and settings.
  • n8n_list_workflowsList all workflows with full details. Can filter by active status, tags, name, or project. WARNING: Returns complete workflow data including nodes and connections - use n8n_list_workflows_summary for better token efficiency.
  • n8n_list_workflows_summaryList workflows with minimal data (id, name, active, tags, updatedAt only). Recommended for browsing and listing - uses 90% fewer tokens than n8n_list_workflows. Use n8n_get_workflow to fetch full details of a specific workflow.
  • n8n_get_workflowGet detailed information about a specific workflow by ID.
  • n8n_update_workflowUpdate an existing workflow. Supports partial updates: omitted fields keep their current values (the current workflow is fetched and merged automatically).
  • n8n_delete_workflowDelete a workflow permanently. A local snapshot is saved first so it can be restored with n8n_rollback_workflow (into a new workflow).
  • n8n_activate_workflowActivate a workflow to start receiving triggers.
  • n8n_deactivate_workflowDeactivate a workflow to stop receiving triggers.
  • n8n_transfer_workflowTransfer a workflow to another project.
  • n8n_get_workflow_tagsGet all tags associated with a workflow.
  • n8n_update_workflow_tagsUpdate tags for a workflow.
  • n8n_list_executionsList workflow executions. Can filter by status, workflow ID, or project. TIP: Set includeData=false and use fields parameter to reduce token usage.
  • +49 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Formio MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "formio-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@formio/mcp@0.14.1"
      ]
    }
  }
}

MCP N8n

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "mcp-n8n": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-n8n"
      ],
      "env": {
        "N8N_BASE_URL": "YOUR_N8N_BASE_URL_HERE",
        "N8N_API_KEY": "YOUR_N8N_API_KEY_HERE"
      }
    }
  }
}

Frequently asked questions

Formio MCP is categorized under Developer Tools and uses a local stdio subprocess. MCP N8n belongs to Developer Tools and uses a local stdio subprocess. Pick Formio MCP for developer tools work and MCP N8n for developer tools.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Formio MCP has no declared pricing — check the project's own site. MCP N8n has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add formio-mcp and mcp-n8n as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Formio MCP has a quality signal of 64/100 (Good) with 3 views, 0 installs and 8 GitHub stars. MCP N8n has 64/100 (Good) with 1 views, 0 installs and 21 GitHub stars.