Announcing CIMD support for MCP Client registration
Learn more

n8n MCP server and Zapier MCP: when to move to agent-native tools

Diagram of an agent connected to an n8n MCP Server Trigger with one shared token, Zapier MCP acting as the server owner at 2 tasks per call, and an agent-native server with a per-user session token, beside a checklist for MCP tools that stop working
Nityashree Yadunath
Product Marketing Manager

An n8n MCP server is either a workflow built on the MCP Server Trigger node, serving its tools at a URL that can require a bearer or header credential, or n8n's instance-level server, which lets clients like Claude Code run and build workflows. Zapier MCP is one hosted endpoint that acts as the signed-in Zapier user and uses two tasks per successful tool call.

Both are quick ways to give an agent real tools, and for many teams they are the right ones. The limits appear when the agent serves your product's customers, and each call has to act as one customer with tools you chose and a credential that expires. Agent-native tool calling through managed MCP integrations is built for that case.

TL;DR

  • n8n has three MCP pieces: the MCP Server Trigger node (a workflow as a server), the MCP Client Tool node (n8n agents calling other servers) and instance-level MCP (clients that run and build workflows). Zapier MCP connects supported clients to 9,000+ apps and is included in every Zapier plan.
  • Both usually tie a tool call to an account inside the automation platform: a fixed n8n credential or an n8n user, or the Zapier user who owns the server. Zapier's White Label program, in limited access, is the exception. That model suits internal teams. A product with many customers needs each call bound to one of its own users, with scoped tools and a short-lived credential.
  • Zapier documents one cause for MCP tools that start returning 404: the connection token saved in the client is no longer valid, and rotating it fixes the error. On n8n, check that the client uses the production URL of a published workflow, or the Server URL ending in /mcp-server/http.

The three MCP pieces in n8n

n8n uses MCP in both directions: it can act as a server that other clients call, and its own agents can act as clients of other servers.

Piece
What it does
How clients authenticate
Watch for
Turns one workflow into an MCP server. Clients list and call the tool nodes attached to it, including other workflows through the Custom n8n Workflow Tool node.
None, Bearer auth or Header auth
Separate test and production URLs; SSE and streamable HTTP, no stdio
Lets an n8n AI Agent call tools on an external MCP server, filtered to All, Selected or All Except
Bearer, header, multiple headers, or OAuth2 (dynamic client registration on by default)
Servers in n8n's MCP registry connect from the node panel with a sign-in
Lets MCP clients search, run, create and edit workflows and data tables
OAuth (recommended) or a personal API key
Off until an owner or admin turns it on; workflows must be enabled for MCP

The MCP Server Trigger has two URLs. n8n registers the test URL when you select Listen for Test Event or Execute workflow in the editor, and registers the production URL when you publish the workflow. It supports SSE and streamable HTTP but not stdio, so n8n's documented Claude Desktop setup runs mcp-remote as a local gateway. Two limits matter in production: in queue mode with more than one webhook replica, all /mcp* traffic has to go to a single dedicated replica, and behind nginx the MCP location needs proxy buffering turned off.

A plain MCP Client node also exists for using an MCP tool as an ordinary workflow step. For agents, n8n's guidance is to prefer a built-in node when you know the exact action and want parameters pinned, and an MCP server when the agent needs a range of actions.

Instance-level MCP is a different server. An owner or admin turns it on under Settings, Instance-level MCP, and clients connect to the Server URL shown there, which ends in /mcp-server/http. Clients can preview any workflow the user can see through search_workflows, but they can read, run or change only the workflows enabled for MCP. Workflow access is not scoped per client: every client you connect sees every workflow you enabled, though each OAuth client holds only the permissions you approved when it connected. execute_workflow runs the published version of a workflow by default. n8n recommends coding agents such as Claude Code for building workflows this way, and publishes n8n Skills to teach them its conventions.

How Zapier MCP works

Every client connects to one endpoint, https://mcp.zapier.com/api/v1/connect, over Streamable HTTP only, so a client that can only use SSE cannot connect. Supported clients such as Claude, ChatGPT, Cursor and VS Code sign in with OAuth, and Zapier connects them to the user's default server, creating it on the first sign-in. Unlisted clients and your own code use a connection token: you create the server at mcp.zapier.com, and the token is long-lived, tied to that one server, and lets whoever holds it run the server's tools.

A server runs in one of two modes. In agentic mode, the default, the client gets a fixed set of meta-tools, and the agent searches for, enables and runs actions through them, starting from the apps you already connected in Zapier. In managed mode you pick the actions at mcp.zapier.com, each one becomes its own tool, and you can lock field values. Zapier MCP vs the Zapier API compares the meta-tools with Zapier's Actions and Trigger Inbox APIs in more detail.

Zapier MCP is included in every Zapier plan and has no separate bill. Each successful tool call uses two tasks from the same allowance your Zaps use; failed calls and listing tools do not count. On the Free plan's 100 tasks a month, that is 50 tool calls. When the allowance runs out and pay-per-task billing is off, tool calls stop until the billing cycle resets, you upgrade, or you turn on pay-per-task billing.

On security, Zapier MCP runs under Zapier's SOC 2 Type II certification, Enterprise SAML SSO extends to MCP access, and the History tab logs each tool call. Account-level app and action restrictions apply to MCP calls too, as do the permissions inside each app. It runs on multi-tenant infrastructure; dedicated VPC or on-premises deployments are not currently offered.

When n8n or Zapier is the right tool

  • Zapier MCP for the widest catalog with the least setup. 9,000+ apps, a documented sign-in setup for each supported client, and nothing new to buy if your company already pays for Zapier. Admins can roll it out to a whole Claude, ChatGPT or Cursor organization.
  • The n8n MCP Server Trigger when the tool is really a workflow. Several steps, branching and error handling that should run the same way every time are easier to build and inspect in n8n than to describe to a model, and any MCP client can then call the result as one tool.
  • n8n instance-level MCP when you want a coding agent to build automations. Claude Code or Codex can create, test and publish n8n workflows from a description.
  • n8n when you need to self-host. The Community edition runs free on your own infrastructure. Zapier MCP cannot be self-hosted.
  • Either one for internal agents. When everyone using the agent already has an n8n or Zapier account, both platforms can give each person their own connected accounts, as the next section describes.

Who the agent acts as

By default an n8n credential is fixed: the same account is used no matter who runs the workflow. An MCP Server Trigger protected by Bearer auth adds one more shared value, because every client that calls it presents the same token, and the workflow behind it runs with whatever credentials its nodes hold.

n8n's answer for per-person access is end-user credentials. A project admin creates an OAuth credential as a template, each user connects their own account, and n8n resolves the credential at runtime to the user who triggered the workflow. The MCP Server Trigger is one of the supported triggers. End-user credentials are an Enterprise feature in Preview, work only with OAuth credential types in team projects, and each person must be a user on your n8n instance.

Zapier MCP ties identity to the Zapier account. Each tool call runs through the app connections of the Zapier user who owns the server, and giving teammates access to that server lets them help manage its tools but not connect a client or run tools on the owner's behalf. Zapier's guidance for connection tokens is to give each user their own server and token.

For products, the Zapier MCP embed gives each of your users a unique server URL, which your back end calls with your embed secret as a bearer token; each server appears in that user's own Zapier MCP server list. White Label, in limited access, lets your users connect apps without a Zapier account, including for AI agents that call tools through Zapier MCP, and bills you per task. Third-party consent screens show Zapier as the app requesting access, because Zapier maintains the OAuth client registrations.

Outside White Label, the user behind a call is an account in the automation platform. That fits a team. When the users are your product's customers, who already have an account with you, it adds a second account to manage for each of them.

Signs it is time to move to agent-native tool calling

Agent-native tool calling means the agent calls tools defined for it, through an MCP server or SDK your back end controls, and each call is bound to one of your own users. These are the signs a team has reached that point:

  • Your agent serves customers, and each one connects their own Gmail, Slack or Salesforce. Consent and token storage should be keyed by your user ID.
  • Each agent role should see the same fixed tool list for every user, and some runs should be read-only without a second server.
  • The credential your client holds should name one user and expire on its own. A Zapier connection token is long-lived, and a bearer token on an n8n trigger is shared by every caller.
  • Agent usage should be budgeted apart from your automations. On Zapier, each call draws two tasks from the allowance your Zaps use; Enterprise workspaces can set MCP task quotas.
  • The agent loop lives in your own code, in LangGraph, the OpenAI Agents SDK or a custom loop, and you want tools as typed function definitions rather than calls into a workflow.
Question
n8n
Zapier MCP
Agent-native (Scalekit)
Who a tool call acts as
A fixed credential by default; with end-user credentials, the n8n user who triggered it (Enterprise, Preview)
The Zapier user who owns the server, through their app connections; with White Label (limited access), your end user
The user named when the session token was minted, through their connected account
Credential the MCP client sends
Bearer or header value on the trigger; OAuth or a personal API key for instance-level MCP
An OAuth token held by the client, or a long-lived connection token
A session token for one user and one server, 60 seconds to 24 hours (one hour by default)
Tools the model sees
The tool nodes in the workflow, or the workflows you enabled for MCP
A fixed set of meta-tools (agentic mode) or one tool per chosen action (managed mode)
The exact tools you list per Virtual MCP server; read-only tokens drop write tools
Cost unit
Your n8n plan; the self-hosted Community edition is free
Two tasks per successful tool call
Tool calls; 10,000 a month on the Free plan
Best fit
Multi-step workflows and self-hosted automation
Personal and team agents across 9,000+ apps
Agents that act for many end users of your product

What agent-native tool calling looks like with Scalekit

Scalekit AgentKit is an MCP gateway built for the multi-user case. You create a Virtual MCP server once per agent role, listing the tools that role needs, and every user shares its URL. Before each run, you check that the user's connected accounts are active and mint a session token bound to that user and that server. The agent never receives the user's OAuth token, and Scalekit sends a webhook when a token can't be refreshed or an account expires, so you can ask the user to reconnect before a call fails.

The example below sets up a channel-digest agent that reads a user's Slack channels and posts a summary. It runs with the Python SDK and your environment's credentials.

import os from datetime import timedelta from scalekit import ScalekitClient from scalekit.actions.models.mcp_config import McpConfigConnectionToolMapping actions = ScalekitClient( env_url=os.environ["SCALEKIT_ENVIRONMENT_URL"], client_id=os.environ["SCALEKIT_CLIENT_ID"], client_secret=os.environ["SCALEKIT_CLIENT_SECRET"], ).actions # Once per agent role: one Virtual MCP server whose URL every user shares config = actions.mcp.create_config( name="channel-digest", description="Reads the user's Slack channels and posts a digest", connection_tool_mappings=[ McpConfigConnectionToolMapping( connection_name="slack", tools=[ "slack_list_channels", "slack_fetch_conversation_history", "slack_send_message", ], ), ], ).config def start_run(user_id: str, read_only: bool = False) -> dict: """Return auth links the user still needs, or a URL and token for this run.""" accounts = actions.mcp.list_mcp_connected_accounts( config_id=config.id, identifier=user_id, include_auth_link=True ) pending = { a.connection_name: a.authentication_link for a in accounts.connected_accounts if a.connected_account_status != "ACTIVE" } if pending: return {"needs_auth": pending} session = actions.mcp.create_session_token( mcp_config_id=config.id, identifier=user_id, expiry=timedelta(minutes=30), access_level="READ_ONLY" if read_only else None, ) return {"url": config.mcp_server_url, "token": session.token}

start_run returns authorization links for any connection the user has not authorized, which you show to the user, or a URL and token for the run. The agent then connects with the token as a bearer header. With the MCP Python SDK:

import asyncio import httpx2 from mcp import Client from mcp.client.streamable_http import streamable_http_client async def list_agent_tools(url: str, token: str) -> list[str]: headers = {"Authorization": f"Bearer {token}"} async with httpx2.AsyncClient(headers=headers, timeout=30) as http: async with Client(streamable_http_client(url, http_client=http)) as mcp: result = await mcp.list_tools() return [tool.name for tool in result.tools]

A read-only token lists only the tools annotated read-only, so a summary-only run on this server sees the two Slack read tools and not slack_send_message. Session tokens are short-lived by design and cannot be refreshed: when one expires, or is sent to a different server's URL, the server returns 401, and you mint a new one. The catalog covers 500+ connectors and 20,000+ tools, and the Free plan includes 10,000 tool calls a month.

Per-user OAuth for MCP integrations explains how this isolation works and how to test it, and hosted MCP servers compared sets Scalekit beside Zapier MCP and four other hosted services.

Keep your workflows where they run

Moving per-user tool calls does not mean retiring your automations. An MCP host can connect to several servers at once, so an agent can call Scalekit tools for actions that run as a specific customer and an n8n MCP Server Trigger for a fixed internal process, such as filing an approved refund. Keep deterministic, multi-step processes in n8n or Zapier, and move the calls that act for your customers.

Why Zapier MCP tools return 404 errors

Zapier's troubleshooting docs give one cause for MCP tools that worked before and now return 404 (not found): the connection token stored in the client is no longer valid. Tokens can become invalid after long inactivity or a security event. Only clients that store a connection token are affected; OAuth clients store and refresh their own token. To fix it:

  1. Open your server in the Zapier MCP dashboard at mcp.zapier.com and go to the Settings tab.
  2. In the API token section, select Rotate token. Every client that uses the old token loses access until you update it.
  3. Update the server URL in each MCP client's configuration, then restart the client.

Zapier's docs cover two related cases. When tools are missing rather than failing, confirm the server URL in the client matches the one on the Settings tab, and note that removing a client from a server signs it out until it goes through Zapier sign-in again. A client still configured against an SSE endpoint needs the Streamable HTTP endpoint, https://mcp.zapier.com/api/v1/connect.

The n8n equivalents

n8n's docs describe when an MCP URL is live and what has to be in place for a client to reach it:

  • Test URL in a client. The MCP Server Trigger's test URL is registered when you select Listen for Test Event or Execute workflow in the editor, for testing. Publish the workflow and give clients the production URL.
  • Editor address in place of the Server URL. The instance-level Server URL ends in /mcp-server/http, and n8n warns against pasting the address from your browser.
  • MCP access turned off. If approving a client shows “You do not have sufficient permissions to authorize this request”, instance-level MCP is off. An owner or admin turns it on.
  • Workflow not enabled for MCP. Clients can preview it through search but cannot run it until it is marked Available in MCP.
  • Load balancers and proxies. Route all /mcp* traffic to one webhook replica, turn off proxy buffering for the MCP location, and let the MCP-Protocol-Version, Mcp-Method and Mcp-Name headers through.

More MCP status codes and their fixes are in MCP server errors and how to fix them. On a Scalekit server, an expired token or a token for another server returns 401 with invalid or expired bearer token; mint a new token for that server.

Connect n8n, Zapier and Scalekit servers to Claude Code, Codex and Cursor

In Claude Code, each server is one command:

# n8n instance-level MCP: run /mcp in Claude Code afterwards to finish the OAuth sign-in claude mcp add --transport http n8n https://<your-n8n-domain>/mcp-server/http # Zapier MCP: restart Claude Code, then sign in to Zapier in the browser claude mcp add --transport http "Zapier-MCP" https://mcp.zapier.com/api/v1/connect # Scalekit Virtual MCP server: URL from create_config, token from start_run claude mcp add --transport http channel-digest "$MCP_SERVER_URL" \ --header "Authorization: Bearer $SESSION_TOKEN"

In Codex, n8n and Zapier use OAuth after a one-line add:

# n8n instance-level MCP codex mcp add n8n --url "https://<your-n8n-domain>/mcp-server/http" codex mcp login n8n # Zapier MCP (run the login command if no browser window opens) codex mcp add zapier --url https://mcp.zapier.com/api/v1/connect codex mcp login zapier

For a Scalekit server, Codex reads the session token from an environment variable:

# ~/.codex/config.toml: Scalekit Virtual MCP server [mcp_servers.channel-digest] url = "<mcp_server_url>" bearer_token_env_var = "SCALEKIT_SESSION_TOKEN"

In Cursor, n8n's Connect a client dialog offers one-click setup, or you add the Server URL to ~/.cursor/mcp.json. Zapier installs as a plugin from the Cursor marketplace. A Scalekit server goes in mcp.json with the token in a header:

{ "mcpServers": { "channel-digest": { "url": "<mcp_server_url>", "headers": { "Authorization": "Bearer ${env:SCALEKIT_SESSION_TOKEN}" } } } }

A session token lasts at most 24 hours, so a config file you edit by hand needs a fresh token at least once a day. In Claude Code, a headersHelper script can mint one for you: Claude Code runs the helper on every connection and, after a 401, runs it again and retries the call once.

FAQs

Does n8n have an MCP server?

Yes, in two forms. The MCP Server Trigger node turns one workflow into an MCP server protected by no auth, a bearer token or a header. Instance-level MCP, turned on under Settings, Instance-level MCP, lets clients such as Claude Code search, run and build the workflows you enable for MCP.

Why do my Zapier MCP tools return 404 errors?

Zapier's docs give one cause for tools that worked before and now return 404: the connection token saved in your client is no longer valid. Rotate the token on the server's Settings tab at mcp.zapier.com, update the server URL in your client and restart it. Only clients that store a connection token are affected.

How many Zapier tasks does an MCP tool call use?

Two tasks per successful tool call, taken from the same allowance your Zaps use. Failed calls and listing the available tools do not count. The Free plan's 100 tasks a month cover 50 tool calls.

Can an n8n workflow run with each user's own account?

Yes, with end-user credentials, an Enterprise feature that is in Preview. A project admin creates an OAuth credential as a template, each n8n user connects their own account, and the MCP Server Trigger is one of the triggers that resolve it. Each person has to be a user on your n8n instance.

Can I use Zapier MCP for my product's customers?

Yes, through the Zapier MCP embed, which gives each of your users a unique server URL that your back end calls with your embed secret as a bearer token. Each server appears in that user's own Zapier MCP server list. White Label, which is in limited access, lets users connect apps without a Zapier account, including for AI agents, and bills you per task.

When should I stay with n8n or Zapier?

Stay when the people using the agent are your colleagues, when the tool is a fixed multi-step workflow, or when you need the widest app catalog with the least setup. Move to agent-native tool calling when the agent acts for your product's customers and each call has to be bound to one user with a tool list you chose.

Details checked October 2026.

No items found.
On this page
Share this article

Acquire enterprise customers with
‍zero upfront cost.

Every feature unlocked. No hidden fees.