高级 12 分钟n8n

n8n 与 MCP:将您的工作流接入 LLM 本地

n8n 与 MCP 可以双向结合:借助 MCP Server Trigger 节点,n8n 可以将其工作流暴露为 MCP 工具;借助 MCP Client Tool 节点,n8n 智能体可以调用外部 MCP 服务器的工具。本指南介绍这两种搭建方式,使用的智能体运行在由 Ollama 提供服务的本地模型上,随后说明如何保护 n8n 发布的 URL。本指南依据 n8n 官方文档编写,不涉及为操控 n8n 而编写的第三方 MCP 服务器,那是另一个话题。

作者: Thomas P.·更新于 2026-10-26·已在 Windows、macOS 和 Linux 上测试

#n8n 与 MCP:两个节点,两个方向

模型上下文协议(Model Context Protocol,MCP)是一种开放协议,描述 AI 应用如何发现并调用服务器提供的工具。如果您对这一概念还不熟悉,《MCP:是什么?》指南介绍了基础知识;本文假定您已掌握客户端、服务器和工具这些术语。

在 n8n 中,MCP 以两个 AI 类节点的形式出现(n8n-nodes-langchain 包)。它们满足的是两种相反的需求,阅读教程时很容易把两者混淆。

MCP Server Trigger:让 n8n 成为服务器
该节点会发布一个 MCP URL。您挂接到它上面的每个工具(子工作流、HTTP 请求、内置工具)都会成为一个 MCP 工具,外部客户端可以列出并调用它。典型用法:让您的本地助手能够“创建工单”“在 CRM 中搜索”或“发送摘要”,而无需把您的凭据交给它。
MCP Client Tool:n8n 作为客户端
该节点作为工具挂接在 AI Agent 节点下。它连接到现有的 MCP 服务器,获取其工具列表并提供给智能体使用。典型用法:一个定时工作流,其中的智能体通过已部署的 MCP 服务器读取文件、查询数据库或检索文档。
MCP 不会改变的事
模型的选择与此相互独立。n8n 智能体可以运行在 Ollama 上;调用您的 MCP Server Trigger 的客户端同样可以使用本地模型。MCP 只传输工具描述及其调用,不传输模型本身。

这两种节点可以共存于同一个实例中:一个“服务器”工作流暴露若干业务操作,一个“智能体”工作流调用一个或多个 MCP 服务器。甚至可以让 n8n 智能体调用同一实例中另一个工作流的 MCP Server Trigger,这相当于把一个庞大的智能体拆分成可复用的模块。


#先决条件

打造专属 AI 智能体的完整套件。

借助我们的经验和引导式路径,进一步用好你的本地智能体和自动化流程。

  • 在线空间,终身可用
  • PDF + 文件
  • 30 天内退款
较新版本的 n8n 实例
自托管,最好使用 Docker。MCP 节点于 2025 年推出,此后一直在演进(传输方式、认证选项):请将 n8n 更新到最新版本,并以编辑器中实际显示的内容为准。安装过程本身详见《使用 Docker 部署 n8n》指南。
可从 n8n 访问的 Ollama
Ollama 默认监听 http://localhost:11434。如果 n8n 运行在容器中,localhost 指的是容器本身,而不是您的机器:需要使用其他地址(参见第一步)。
支持工具调用的模型
只有当模型能够生成结构化的工具调用时,智能体才有用。请选择在 Ollama 页面上标有 tools 能力的模型,例如 Qwen3 系列。在 Q4_K_M 量化下,8B 模型约需 5 GB 显存,14B 模型约需 9 GB,在 12 GB 的 RTX 3060 或 12 GB 的 RTX 4070 上运行仍然游刃有余。
用于第 2 步
一台可通过 HTTP 访问的 MCP 服务器。仅通过 stdio 在本地启动的服务器(一条 npx 或 uvx 命令)无法被 n8n 直接访问:需要一台在某个 URL 上监听的服务器。
用于第 4 步
能够与远程服务器通信的 MCP 客户端:LM Studio、Open WebUI、通过网关接入的 Claude Desktop,或用于测试的官方协议检查器。

#第 1 步:将 n8n 智能体连接到本地模型

MCP 的两个方向都要经过一个智能体,无论是在 n8n 端还是客户端。因此,请先确认 n8n 能够与您的本地模型通信。基础连接已在《n8n + Ollama》指南中详细介绍;这里只列出最基本的内容。

终端
# Télécharger un modèle compatible avec l'appel d'outils
ollama pull qwen3:8b

# Vérifier qu'Ollama répond et liste le modèle
curl http://localhost:11434/api/tags

如果 n8n 运行在 Docker 中,而 Ollama 直接运行在宿主机上,请为 n8n 服务添加一条条目,使 host.docker.internal 指向宿主机。在 Docker Desktop(macOS、Windows)下,该名称已经存在;在 Linux 下则需要手动声明。

docker-compose.yml(节选)
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    extra_hosts:
      - "host.docker.internal:host-gateway"

在 Linux 上,Ollama 默认只监听 127.0.0.1:除非你在 Ollama 服务中设置了 OLLAMA_HOST=0.0.0.0,否则容器无法通过 host-gateway 访问它。如果两者在同一个 Compose 文件中运行,请改用服务名称,例如 http://ollama:11434。

  1. 01
    创建智能体
    在新工作流中添加一个 Chat Trigger 触发器(便于测试),然后添加一个 AI Agent 节点。
  2. 02
    接入模型
    在智能体的 Chat Model 输入端添加 Ollama Chat Model。使用基础 URL http://host.docker.internal:11434 创建凭据 Ollama(如果 n8n 未运行在容器中,则使用 http://localhost:11434),然后选择 qwen3:8b。
  3. 03
    不借助工具进行测试
    打开工作流的聊天界面,提一个简单的问题。收到回复即可确认 n8n 与 Ollama 的连接正常;本指南的其余部分将在此基础上添加工具。

#第 2 步:从 n8n 智能体调用 MCP 服务器

MCP Client Tool 节点与其他任何工具一样,连接到 AI Agent 的 Tool 输入端。执行时,它会查询 MCP 服务器,获取工具列表及其描述和参数 schema,并呈现给模型。由模型决定使用哪些参数调用哪个工具;n8n 负责转发调用并返回结果。

  1. 01
    添加节点
    在第一步创建的智能体下方,点击 Tool 输入端的 +,然后选择 MCP Client Tool。
  2. 02
    填写端点
    粘贴 MCP 服务器的 URL,并选择该服务器提供的传输方式。n8n 文档列出了 HTTP 流(streamable HTTP,即协议当前的传输方式)和 Server-Sent Events(SSE,较旧,但仍有部分服务器在使用)。如果服务器文档给出的 URL 以 /sse 结尾,通常就是 SSE;否则请尝试 HTTP。
  3. 03
    选择身份验证方式
    根据服务器的要求,可选择无认证、Bearer(在 Authorization 请求头中发送的令牌)或自定义请求头。具体选项取决于您的 n8n 版本;令牌作为 n8n 凭据存储,不会以明文形式保存在工作流中。
  4. 04
    筛选工具
    Tools to Include 参数提供 All、Selected 和 All Except 三个选项。建议选择 Selected:8B 的本地模型在三个描述清晰的工具中做选择,比在三十个工具中选择更准确,同时也能限制智能体可触发的操作。
  5. 05
    测试
    在聊天中请求一个需要使用该工具的操作。在智能体的执行日志中,您可以看到被调用的工具、模型生成的参数以及服务器的响应。
→
系统提示词决定了一半的效果
使用本地模型时,请在智能体的系统消息中说明何时使用每个工具、何时不应使用。小模型往往要么忽略工具,要么事事都调用工具。一条简短的指令加上少量精选工具,比一个引导不当的更大模型能带来更可靠的调用。

实用提示:n8n 必须能够访问到 MCP 服务器。在您本机上以 localhost:3000 地址启动的服务器,从 n8n 容器内是看不到的;同样适用 host.docker.internal 或 Docker 服务名这一规则。


#第三步:使用 MCP Server Trigger 暴露您的工作流

这是搜索“n8n mcp”的用户最想要的方向:把现有的自动化流程变成助手可以调用的工具。MCP Server Trigger 与常规触发器不同:它不会启动一连串节点,而只连接工具节点并将其发布出去。

  1. 01
    创建服务器工作流
    新建工作流,添加 MCP Server Trigger 节点。该节点会显示一个测试 URL 和一个生产 URL,以及决定 URL 结尾部分的 Path 字段。如有需要,可将随机标识符替换为易读的路径,但要确保它难以被猜到。
  2. 02
    挂接工具
    点击触发器的 Tool 输入端并添加工具。最实用的是调用另一个 n8n 工作流的工具(Call n8n Workflow Tool):您现有的自动化流程由此变成一个 MCP 工具。您也可以挂接 HTTP Request Tool 或 n8n 提供的集成工具。
  3. 03
    认真撰写名称和描述
    客户端只能看到工具的名称、描述及其参数的模式(schema)。模型正是读取这段文字来决定是否调用。请用一两句话写出明确的描述:工具做什么、需要哪些参数、返回什么。
  4. 04
    定义子工作流的参数
    在被调用的工作流中,声明所需的输入字段(例如工单的标题和优先级)。MCP 客户端会收到该 schema,再由模型填写各项值。
  5. 05
    先测试,再激活
    测试 URL 仅在编辑器监听测试事件期间响应,此时执行过程会显示在画布中。生产 URL 只有在工作流激活后才能使用。请将测试 URL 用于调试,并将生产 URL 提供给您的客户端。
URL 格式(请复制节点显示的 URL)
Test        : https://n8n.mondomaine.lan/mcp-test/<chemin>
Production  : https://n8n.mondomaine.lan/mcp/<chemin>

基础地址沿用 n8n 用于 webhook 的地址。如果 n8n 显示 localhost:5678,而您是通过其他名称访问它的,请修改实例的 WEBHOOK_URL 变量:节点中显示的 URL 由它决定。

!
队列模式与多个 webhook 副本
MCP 传输会与某个特定进程保持连接。n8n 文档指出,在队列模式下运行多个 webhook 副本时,所有发往 /mcp* 路径的请求都必须路由到同一个专用副本,否则通信会间歇性失败。以单个容器运行的简单实例不受此影响。

#第 4 步:将本地 MCP 客户端连接到 n8n

接下来还需要让同样运行在本地模型上的助手来调用这些工具。在使用任何“智能”客户端之前,先用该协议的官方检查器验证服务器:它会列出所暴露的工具,并允许您手动调用它们,整个过程无需模型参与。

终端
# Lance l'inspecteur MCP dans le navigateur (nécessite Node.js)
npx @modelcontextprotocol/inspector

在界面中选择相应的传输方式,粘贴生产 URL;如果已启用认证,再添加 Authorization 请求头,然后列出工具。如果您的 n8n 工具连同其描述一起显示出来,说明服务器已就绪。

#LM Studio 及支持填写 URL 的客户端

较新的客户端可以直接接入以 URL 描述的远程 MCP 服务器。例如,LM Studio 会读取 mcpServers 格式的 mcp.json 文件;远程条目的形式如下所示。字段的确切名称可能因软件而异,请查阅您所用客户端的文档进行确认。

mcp.json
{
  "mcpServers": {
    "n8n": {
      "url": "https://n8n.mondomaine.lan/mcp/<chemin>",
      "headers": {
        "Authorization": "Bearer <votre-jeton>"
      }
    }
  }
}

#仅支持 stdio 的客户端:通过网关中转

有些客户端只能启动 stdio 方式的本地服务器。针对这种情况,n8n 文档介绍了使用 mcp-remote 网关的方法:它以 stdio 服务器的形式启动,并将调用转发到 n8n 的 URL。令牌通过环境变量传入,而不是硬编码在参数中。

客户端配置(mcpServers 格式)
{
  "mcpServers": {
    "n8n": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://n8n.mondomaine.lan/mcp/<chemin>",
        "--header",
        "Authorization: Bearer ${AUTH_TOKEN}"
      ],
      "env": {
        "AUTH_TOKEN": "<votre-jeton>"
      }
    }
  }
}

在模型方面,适用与第二步相同的规则:在客户端中加载支持工具调用的模型,只保留少量可见工具,并先用一个毫无歧义的请求进行测试。《MCP 与本地 LLM》指南详细介绍了 Ollama 及其界面的客户端配置。


#保护 n8n 的 MCP 端点

MCP Server Trigger URL 是一个入口点,会使用 n8n 中保存的凭据触发您的工作流。在未启用身份验证的情况下,任何知道该 URL 的人都可以创建您的工单或读取您的 CRM。请像对待 API 密钥一样对待它。

启用身份验证
该节点支持 Bearer 令牌认证或请求头认证。请始终启用认证,即使在局域网中也是如此。生成一个足够长的随机令牌(例如使用下面的 openssl 命令),并为每个客户端使用不同的令牌,以便可以单独吊销其中一个。
如无必要,不要将 n8n 暴露到互联网
对于个人或小团队使用,请将 n8n 保留在局域网内或置于 VPN(WireGuard、Tailscale)之后。如果确实需要对外暴露,请通过启用 HTTPS 的反向代理,并尽可能配合 IP 过滤。
限制每个工具的权限范围
一个 MCP 工具应当只做一件明确的事,并使用有边界的参数。避免暴露“执行 SQL 查询”或“调用任意 URL”这类通用工具:模型一旦出错,或者智能体读取到恶意内容,都可能导致该工具被滥用。
警惕提示词注入
如果智能体会读取外部内容(电子邮件、网页、文档),同时又拥有可执行操作的工具,那么一段精心构造的恶意文本就可能指使它调用工具。请将读取类工具与操作类工具分开,并在任何不可逆操作之前加入人工确认(等待或审批节点)。
在第三方 MCP 服务器端进行审计
在客户端方向,只为智能体添加您了解其发布者和代码的 MCP 服务器。服务器提供的工具描述会直接进入模型的上下文。
监控执行情况
每次工具调用都会在 n8n 中产生一次执行记录。请定期查看服务器工作流的历史记录:这就是您的审计日志。
终端
# Générer un jeton aléatoire de 64 caractères hexadécimaux
openssl rand -hex 32

如果 n8n 前面有反向代理,它必须允许流式响应通过。n8n 文档给出了一个 nginx 示例,为 MCP 路径禁用了缓冲;下面的片段沿用了这些指令,请根据您的配置进行调整,如果您通过代理进行测试,还需补充 /mcp-test/ 路径。

nginx(server {} 片段)
location /mcp/ {
    proxy_pass http://127.0.0.1:5678;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_buffering off;
    proxy_cache off;
    chunked_transfer_encoding off;
    gzip off;
}

#n8n MCP 故障排查:常见卡点

客户端看不到任何工具
请检查:MCP Server Trigger 的 Tool 输入端确实连接了工具;你使用的是生产 URL 且工作流已激活,或者在编辑器处于监听状态时使用的是测试 URL。
401 或 403 错误
令牌不匹配,或者客户端没有发送该请求头。请使用 MCP Inspector 测试,它会准确显示发送的请求头。注意“Bearer”后面的空格。
连接中断或卡住
几乎总是因为代理对流进行了缓冲,或客户端选择了错误的传输方式(SSE 与 HTTP)。请直接在 5678 端口上测试,以排除代理的影响。
显示的 URL 包含 localhost
n8n 的 WEBHOOK_URL 变量未设置:该 URL 将无法从其他机器访问。请将其设置为实例的公网或局域网地址,然后重启 n8n。
连接 Ollama 时出现 ECONNREFUSED
容器中的 n8n 会在容器内部查找 Ollama。请使用 host.docker.internal 或 Docker 服务名称,并确认 Ollama 监听在可访问的网络接口上。
模型从不调用工具
可能是模型不支持工具调用、工具描述过于含糊,或暴露的工具过多。请换用标有 tools 的模型,重写描述,并精简所选工具。
模型编造参数
子工作流的 schema 约束过于宽松。请声明带类型的字段并描述期望的值;在执行任何操作之前,先在工作流中校验输入。
i
关于性能
本指南不公布任何速度数据或工具调用成功率。结果取决于模型、其量化方式、工具描述的长度以及您的硬件。要做出判断,请用一组有代表性的请求测试您自己的工具,并比较执行日志。

#深入了解

本指南介绍 n8n 中的 MCP。关于协议基础、Ollama 端的 MCP 客户端配置,或将 n8n 连接到本地模型,请参阅以下指南。

这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。