The n8n MCP server is built on a trigger node called MCP Server Trigger. When you add it, n8n gives you a public URL that speaks MCP over SSE. Any MCP-compatible client — Claude Desktop, Cursor, another n8n instance, or a custom agent — can connect to that URL and immediately see the tools you attached.
Here is the mental model:
- You drop an MCP Server Trigger onto a fresh workflow.
- You connect one or more tool nodes to it (for example, a sub-workflow tool, an HTTP Request tool, or any node configured in tool mode).
- Each connected tool becomes a callable MCP tool, named and described from its node settings.
- The trigger publishes a
/mcp/<path> endpoint plus an SSE endpoint that clients subscribe to.
The critical detail: the description you give each tool is not cosmetic. The LLM uses it to decide whether and how to call the tool. Vague descriptions produce wrong calls. Treat tool descriptions as part of the prompt, because functionally they are.
Follow these steps in a self-hosted or cloud n8n instance running a recent version (MCP nodes shipped in late-2024 builds and have been refined since).
- Create a new workflow and add the MCP Server Trigger node. Give the workflow a clear name like
MCP — CRM Tools. - Set the path on the trigger. n8n generates one, but a stable, readable path (e.g.
crm-tools) makes client config easier. - Add a tool node and connect its tool output into the trigger's tool input. A common choice is the Call n8n Workflow Tool, pointing at an existing automation.
- Write a sharp description on each tool: what it does, when to use it, and what each input means.
- Activate the workflow. MCP server endpoints only respond when the workflow is active.
- Copy the SSE URL from the trigger node — clients need this to connect.
A minimal client configuration that points an MCP-aware app at your server looks like this:
{
"mcpServers": {
"n8n-crm-tools": {
"url": "https://n8n.example.com/mcp/crm-tools/sse",
"transport": "sse"
}
}
}
If your instance is public-facing, put authentication in front of that endpoint (see the security section). Never expose write-capable tools on an unauthenticated URL.
The other direction is just as useful: letting an n8n AI Agent node call tools that live on an external MCP server. This is the n8n mcp integration pattern most teams reach for first, because it instantly gives an agent dozens of capabilities without rebuilding them.
- Add an AI Agent node and choose a chat model (OpenAI, Anthropic, or any supported provider) as its language model.
- Add an MCP Client Tool node and connect it to the agent's tool input.
- In the MCP Client Tool, paste the SSE endpoint of the MCP server you want to consume.
- Provide credentials or headers if the server requires auth.
- Optionally restrict which tools are exposed — pulling in fifty tools when the agent needs three only confuses the model.
- Run the agent with a prompt that would require one of those tools, and watch the execution log show the tool call and result.
The agent now reads the remote server's tool list at runtime, picks the right tool for the user's request, and feeds the result back into its reasoning loop. That is the entire value of mcp n8n wiring: the model plans, MCP executes, n8n governs.
Picture a support assistant. A user asks, "What's the status of order 4821 and can you email the customer an update?" Here is the flow:
- A Chat Trigger receives the message.
- An AI Agent node holds the system prompt and the model.
- An MCP Client Tool is connected, pointed at an internal MCP server that exposes
get_order and send_email. - The agent calls
get_order with { "orderId": "4821" }, reads the status, then calls send_email.
On the server side, get_order might be a sub-workflow that queries Postgres and returns JSON:
// Inside the Call-Workflow tool's downstream Code node
const orderId = $json.orderId;
const rows = await $helpers.queryDB(
'SELECT id, status, customer_email FROM orders WHERE id = $1',
[orderId]
);
return rows[0] ?? { error: 'not_found' };
This is the same skill that powers our broader work — the n8n workflow examples post shows several non-AI versions of these flows so you can see the plumbing without an agent on top. MCP simply makes those flows callable by a model.
We see the same handful of errors on nearly every first attempt. Avoid them and you skip days of debugging.
MCP Server Trigger endpoints return nothing until the workflow is active. A 404 on the SSE URL is almost always an inactive workflow, not a config bug.
If the model calls the wrong tool or passes garbage inputs, the description is usually too thin. State the purpose, the exact input fields, and constraints. "Sends an email" is weak; "Sends a plain-text email to a single recipient; requires to, subject, body" is strong.
An agent handed thirty tools picks badly. Scope each MCP client connection to the smallest useful set, and split unrelated tools across separate servers.
stdio is for local processes on the same machine; SSE/HTTP is for remote servers. A remote n8n instance must use the SSE endpoint — pointing a local stdio config at it will silently fail to connect.
You do not strictly need MCP. n8n's AI Agent can call ordinary node-based tools (HTTP Request, sub-workflows) without any protocol. So when is n8n model context protocol the right choice?
- Use MCP when tools must be shared across multiple agents or apps, when an external client (Claude Desktop, Cursor) needs to reach your automations, or when you want a clean, versioned tool contract.
- Skip MCP for a single agent that only calls a couple of internal sub-workflows. Direct tool nodes are simpler and one less moving part.
MCP shines as a boundary. The moment a second consumer wants your tools, the protocol pays for itself. Before that, it can be premature. We make this call per project, and it usually comes down to how many things will eventually call the same tool.
Teams rarely start on n8n. Many arrive from Zapier or Make and ask whether MCP changes that calculus. It does, modestly. Neither Zapier nor Make currently offers the open, self-hostable MCP server model that n8n does, which is a real edge if you want to own the tool layer your agents depend on.
If you are still choosing a platform, our n8n vs Zapier comparison and our n8n vs Make breakdown weigh cost, control, and AI-readiness honestly — MCP support is one of several factors, not the whole decision. For agent-heavy roadmaps, the ability to publish an n8n MCP server tilts things toward n8n.
An MCP server is an execution surface. Treat it like an API, because it is one. Our production checklist:
- Authenticate the endpoint. Put the SSE URL behind a reverse proxy with a bearer token or basic auth, or use n8n's header-auth options. Never ship an open write-capable server.
- Separate read and write tools. Read-only tools (
get_*, search_*) carry far less risk than write tools. Where possible, host writes on a tighter, separately-authed server. - Validate inputs inside the workflow. The model can pass malformed arguments. Add a guard node that rejects bad input before it touches a database.
- Log every tool call. n8n's execution history gives you an audit trail — keep it on for MCP workflows so you can trace what the agent did.
- Rate-limit. A looping agent can hammer a tool. Cap calls at the proxy or with an n8n branch that short-circuits after N invocations per session.
In our experience, the security model is the part teams underinvest in and regret. Getting it right early is cheaper than retrofitting after an agent does something unintended.
Debugging MCP feels opaque at first because two systems are involved. Make it observable:
- Test the server alone first. Use a generic MCP client or the MCP Inspector to connect and list tools before any agent is in the picture. If tools do not appear, the problem is server-side.
- Watch n8n execution logs. Every tool invocation creates an execution. Open it to see the exact input the model sent and the output returned.
- Add a temporary echo tool. A tool that just returns its input confirms the client-to-server round trip independent of your real logic.
- Check the SSE connection. A
curl against the SSE endpoint should hold the connection open and stream events; an immediate close points to auth or activation issues.
curl -N -H "Authorization: Bearer $TOKEN" \
https://n8n.example.com/mcp/crm-tools/sse
If that command streams events, your transport and auth are sound and any remaining issue is in tool logic or descriptions.
To go deeper on the surrounding stack, these pair well with this guide:
The n8n MCP integration is not just a new node — it is a clean boundary between AI reasoning and real execution. Build a sharp server with well-described, narrowly-scoped tools, secure the endpoint like the API it is, and consume it from an agent that only sees the tools it needs. Do that, and you move from prompt-and-pray demos to automations a model can safely drive in production. Start with one read-only tool, prove the round trip, then expand. The protocol rewards small, well-governed steps far more than ambitious all-at-once builds.