1. 为什么要在 n8n 里接 Fastgpt 的 MCP
n8n 接入 Fastgpt MCP 这件事,本质上是把「工作流编排」和「知识库检索」这两块能力拼到一起。n8n 负责触发、分支、循环、调外部接口,Fastgpt 负责把私有文档切片、向量化、按语义召回,再交给大模型生成答案。两者通过 MCP(Model Context Protocol)对接后,你在 n8n 里就能像调用一个普通工具那样,直接向 Fastgpt 的知识库提问,拿到带出处的回答,而不需要自己写向量检索那一整套逻辑。
它适合谁?三类人最明显:一是手里已经有一堆 PDF、Markdown、飞书文档,想让它们变成可问答知识库的团队;二是已经在用 n8n 做自动化,但回答环节只能靠通用大模型、经常答非所问的开发者;三是想搭一个可复用 RAG 工作流、后续接客服/内部助手/工单系统的同学。MCP 在这里扮演的角色,你可以理解成「万能插座」——Fastgpt 把知识库能力暴露成一个标准服务端,n8n 用标准客户端去插,插上就能用。
我试过把 Fastgpt 的知识库接到 n8n 的 AI Agent 里,最直观的感受是:以前要在 n8n 里手写 HTTP 请求、拼参数、解析返回,现在换成 MCP Client Tool 节点,填一个 SSE 地址就完事。下面按「前置准备 → 配置 → 验证 → 排障」的顺序走一遍,目标是你能照抄跑通。
2. 前置准备:n8n、Fastgpt 与模型接入
2.1 n8n 侧的环境
n8n 用 Docker 起最省事,版本建议 1.6x 以上,MCP Client Tool 节点在新版本里才稳定。命令如下:
docker pull n8nio/n8n:latest docker run -it -d \ --name n8n \ -p 5678:5678 \ -v n8n_data:/home/node/.n8n \ -e N8N_SECURE_COOKIE=false \ n8nio/n8n:latest启动后浏览器打开http://localhost:5678,第一次会让你建管理员账号。N8N_SECURE_COOKIE=false是为了本地 http 访问时不被 cookie 安全策略挡住,生产环境请用 https 并去掉这个变量。
2.2 Fastgpt 侧的环境
Fastgpt 建议用官方 docker-compose 部署,确保版本支持 MCP-Server 功能(较新的 4.x 版本才有对外 MCP 能力)。部署完成后登录管理后台,确认「知识库」里已经有一个可用的库,并且已经完成文档上传和向量化——没有向量的知识库,MCP 检索会返回空。
2.3 模型与 Key 的准备
Fastgpt 的问答链路里,大模型和向量模型都要配好。如果你本地没有 GPU 或者不想自己维护模型服务,可以用兼容 OpenAI 协议的模型网关来提供对话和 embedding 能力。TaoToken 提供的就是这类统一接入:官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。在 Fastgpt 的模型配置里,把 base_url 指向它、填入对应 Key,就能同时拿到对话模型和向量模型,省去分别对接的麻烦。
注意:Fastgpt 里「语言模型」和「索引模型(embedding)」要分别配置,两者都通了,知识库检索才完整。
3. 可复制配置:Fastgpt MCP-Server 与 n8n 节点
3.1 在 Fastgpt 创建对外 MCP-Server
登录 Fastgpt 后台,进入 MCP 相关配置页(不同小版本菜单名略有差异,一般在「应用」或「工具」区域)。新建一个 MCP-Server,填写:
| 参数 | 说明 | 示例 |
|---|---|---|
| 名称 | n8n 里识别用 | fastgpt-kb |
| 描述 | 便于团队理解 | 产品文档知识库检索 |
| 关联知识库 | 选择已向量化的库 | 产品手册库 |
| 传输方式 | 选 SSE | sse |
| 鉴权 | 生成的 Token | 复制保存 |
创建成功后会得到一个 SSE 地址,形如https://你的fastgpt域名/api/mcp/xxxx/sse。这个地址就是 n8n 要填的入口,先复制到记事本。
3.2 在 n8n 添加 MCP Client Tool
打开 n8n,新建工作流,拖入一个AI Agent节点(需要 LangChain 相关节点包,社区版自带)。在 Agent 的 Tool 区域点加号,搜索并添加MCP Client Tool。配置项:
{ "transport": "sse", "sseUrl": "https://你的fastgpt域名/api/mcp/xxxx/sse", "name": "fastgpt_kb", "description": "查询 Fastgpt 产品知识库,输入自然语言问题,返回带出处的答案" }description很关键,Agent 靠它判断什么时候调用这个工具。写清楚「查什么、输入什么、返回什么」,命中率会明显提升。
3.3 工作流 JSON 骨架
下面是一个最小可跑的骨架,包含 Chat 触发、AI Agent、MCP 工具和模型节点。你可以直接导入后改地址:
{ "nodes": [ { "parameters": {}, "name": "When chat message received", "type": "@n8n/n8n-nodes-langchain.chatTrigger", "position": [200, 300] }, { "parameters": { "promptType": "define", "text": "={{ $json.chatInput }}", "options": { "systemMessage": "你是产品助手,优先使用 fastgpt_kb 工具检索知识库再回答。" } }, "name": "AI Agent", "type": "@n8n/n8n-nodes-langchain.agent", "position": [480, 300] }, { "parameters": { "transport": "sse", "sseUrl": "https://你的fastgpt域名/api/mcp/xxxx/sse" }, "name": "MCP Client Tool", "type": "@n8n/n8n-nodes-langchain.mcpClientTool", "position": [700, 460] } ], "connections": { "When chat message received": { "main": [[{ "node": "AI Agent", "type": "main", "index": 0 }]] }, "MCP Client Tool": { "ai_tool": [[{ "node": "AI Agent", "type": "ai_tool", "index": 0 }]] } } }注意 MCP Client Tool 是通过ai_tool连接类型挂到 Agent 上的,不是 main 连接,导入后如果没连上,手动拖一下连线即可。
4. 验证请求:跑一次检索增强问答
配置保存后,点 n8n 右上角的 Chat 按钮,在对话框里输入一个只有你知识库里才有答案的问题,比如「XX 产品的保修期是多久」。观察执行过程:
Agent 会先判断需要调用fastgpt_kb,然后通过 SSE 把问题发给 Fastgpt,Fastgpt 在知识库里做向量召回,把命中的片段连同问题一起交给大模型生成答案,最后原路返回给 n8n。执行记录里你能看到 MCP 工具节点的输入输出,输入是自然语言问题,输出是带引用片段的回答。
如果返回里出现了你文档中的原文片段,说明链路通了。这一步的判定标准很简单:答案里包含知识库独有信息,而不是模型自己编的。你可以故意问一个知识库里没有的问题,正常表现是 Agent 说明「知识库中未找到相关内容」,而不是硬编一个答案。
验证通过后,双击最开头的 Chat Trigger 节点,开启「Make Chat Publicly Available」,保存并激活工作流,就能拿到一个可分享的 chat url。后续接企业微信、飞书或自建前端,都是往这个 url 或 webhook 上打。
5. 本篇常见错排查
MCP 节点连不上、报 SSE 超时:先确认 Fastgpt 的 SSE 地址在浏览器或 curl 里能访问。n8n 跑在 Docker 里时,localhost指的是容器自己,如果 Fastgpt 在宿主机,要把地址换成宿主机 IP 或 Docker 网络别名,别用 localhost。
Agent 不调用工具,直接自己回答:多半是工具description写得太模糊,或者 systemMessage 没强调优先检索。把描述改成「当问题涉及产品参数、政策、内部文档时必须调用」,并在系统提示里明确要求先检索。
检索返回空:检查 Fastgpt 知识库是否已完成向量化,以及 MCP-Server 关联的知识库是否正确。常见坑是建了库但文档还在「待索引」状态。
回答里没有出处:Fastgpt 的问答配置里要开启引用返回,MCP 透传时才会带上片段。这个在知识库应用的「引用」设置里勾选。
n8n 版本太旧找不到 MCP Client Tool:升级到较新版本,或确认已安装 LangChain 节点包。旧版本没有这个节点,只能退回手写 HTTP 请求。
6. 把链路固定下来:Key 管理与长期编码
链路跑通后,建议把模型接入这块也规范化。Fastgpt 里用到的对话模型和 embedding 模型,如果走统一网关,Key 的轮换和额度管理会省心很多。你可以在 TaoToken 控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 里创建和管理 API Key,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API Keys 页面是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。调试阶段想先验证模型通不通,可以直接用模型对话页 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 发一条消息试试。
如果你打算把这条 RAG 工作流长期跑在编码助手或 Agent 场景里,比如让 n8n 定时拉取工单、自动检索知识库再生成回复,那模型调用量会持续上来,用 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 会比按次计费更划算,也方便统一管理多个工作流的额度。Claude Code 这类工具要接 Anthropic 协议的话,参考 https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 里的配置方式即可。
最后给一个实用技巧:把 MCP Client Tool 的description和 Agent 的 systemMessage 当成「提示词资产」来维护,每次知识库更新后回归测几个固定问题,确认召回没退化。工作流本身导出成 JSON 存进 Git,换环境时改 SSE 地址和 Key 就能复用,这才是「可复用 RAG 工作流」的真正含义。