ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Dify MCP 保姆级教程来了!从零搭建智能体工作流,收藏这篇就足够了!

Dify MCP 保姆级教程来了!从零搭建智能体工作流,收藏这篇就足够了! 1. Dify 接入 MCP 到底解决什么问题智能体工具调用编排实战Dify 接入 MCP 这件事本质上解决的是「大模型怎么稳定调用外部工具」的问题。你可能已经在 Dify 里搭过聊天助手也配过几个内置工具但一旦遇到需要查实时数据、调第三方 API、操作本地软件的场景就会发现内置工具不够用自己写 HTTP 请求节点又特别繁琐。MCPModel Context Protocol就是把这个过程标准化的协议它让 Dify 这类 Host 软件可以用统一格式去连接各种 MCP Server工具描述、参数结构、调用方式全部由 Server 端声明Dify 端只需要填一段 JSON 配置就能挂载。我先把概念对齐一下。大语言模型本身只能生成文本不能联网、不能读数据库、不能操作浏览器。当它能够调用外部工具时才升级成智能体 Agent。以前实现工具调用靠的是写大段提示词做 Function Call每个开发者都要重新造轮子不同软件厂商的接口格式还各不相同。MCP 出现之后工具调用有了统一接口就像 Type-C 扩展坞一样软件和工具都能插上来供大模型调用。在 Dify 里MCP 的落地路径是这样的Dify 作为 MCP Host通过安装「MCP SSE / StreamableHTTP」插件获得连接能力插件里配置一个或多个 MCP Server 的地址然后在 Agent 应用或工作流中模型就能看到这些 Server 暴露出来的工具列表并根据用户意图自动选择调用。整个链路里你不需要写 Function Call 提示词也不需要自己解析工具返回格式Dify 插件会处理通信和结果回传。这篇文章面向的是想用 Dify 构建智能体的开发者尤其是已经用过 Dify 基础功能、想进一步接入外部工具链的人。我会从环境准备讲到 MCP 服务注册再到 Agent 工具调用编排最后给一次端到端调用验证确认工具链在 Dify 中正常触发。过程中会给出可复制的配置片段和工作流节点参数你跟着做就能跑通。需要提前说明的是MCP Server 分两种一种是托管型平台已经帮你部署好你拿到 SSE 地址直接用另一种是本地型需要你自己在电脑上跑起来。这篇教程主要走托管型路线因为对新手更友好不用折腾本地环境。国内目前比较头部的 MCP 平台是魔搭社区上面有 12306、力扣等现成的 MCP 服务可以直接拿地址。另外高德地图、智谱搜索也提供了 MCP 接口申请 Key 之后就能用。还有一个点要提醒Dify 的 MCP 插件在 v1.0.0 之后才完善如果你用的是老版本建议先升级。插件机制是 Dify 重构底层架构后引入的模型和工具都以插件形式独立运行新增功能不需要改主仓库代码。MCP SSE / StreamableHTTP 插件就是在这个机制下上架的安装之后在插件列表里能找到。2. TaoToken 前置准备模型接入与 API Key 配置在 Dify 里跑 MCP 智能体模型是大脑工具是手脚。大脑不够聪明工具调用就会乱套。我实测下来DeepSeek R1 和 V3 在 MCP 工具调用场景下效果一般换成豆包 doubao seed 1.6 250615 之后工具选择和参数提取明显更稳。所以模型这一环值得先花点时间配好。如果你手头没有合适的模型 API可以用 TaoToken 来统一接入。它的定位是模型 API 聚合平台兼容 OpenAI 接口格式Dify 里配置自定义模型时直接填 Base URL 和 Key 就行。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 地址后面不加 UTM 参数。具体操作路径先到官网注册账号然后进控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite API Keys 管理页是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。创建好 Key 之后复制保存后面在 Dify 模型配置里要用。Dify 里添加自定义模型的步骤进入「设置」→「模型供应商」→ 找到 OpenAI 兼容类型 → 填写 Base URL 为https://taotoken.net/apiAPI Key 填你刚创建的那串模型名称填你要用的模型 ID比如doubao-seed-1-6-250615或deepseek-v3。保存之后可以在模型列表里测试连通性。如果你不确定该选哪个模型可以先到模型对话页面试一下效果地址是 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。在对话页面里切换不同模型问几个需要工具调用的问题看看哪个模型对工具描述的理解更准确。我试过用豆包 seed 1.6 做 12306 车次查询它能正确提取出发站、到达站、日期三个参数返回结果也整理得比较自然。对于长期做编码或 Agent 开发的场景可以考虑 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它适合需要频繁调用模型、跑工作流编排的开发者比按次计费更划算。如果你只是偶尔测试 MCP 工具链用按量计费的 API Key 就够了。配置模型时有一个坑要注意Dify 的 OpenAI 兼容供应商默认会拼接/v1/chat/completions路径所以 Base URL 填https://taotoken.net/api即可不要自己再加/v1否则会变成/api/v1/v1/chat/completions导致 404。这个细节在后面的排错章节还会展开。模型配好之后先别急着接 MCP。建议在 Dify 里建一个最简单的聊天助手用刚配的模型跑一轮对话确认模型本身能正常返回。这一步过了再往下走 MCP 插件安装和配置出问题时排查范围会小很多。3. 可复制配置Dify MCP 插件安装与 JSON 片段这一章是整篇教程的核心操作部分我会把 Dify MCP 插件的安装、配置、以及 MCP Server 注册的 JSON 片段全部给出来你直接复制改改就能用。先装插件。进入 Dify 主界面左侧菜单找到「插件」在插件市场搜索「MCP SSE」或「MCP SSE / StreamableHTTP」。找到之后点击安装等待安装完成。安装好后在「已安装」列表里能看到它点击「去授权」进入配置页面。配置页面里需要填一段 JSON结构是mcpServers对象里面每个 key 是一个 Server 名称value 是该 Server 的连接参数。Dify 的 MCP 插件支持两种传输方式sse和streamable_http。托管型 MCP 服务大多用 SSE本地型可能用 streamable_http。下面是一个多 Server 配置示例你可以按需增删{ mcpServers: { 12306-mcp: { transport: sse, url: https://mcp.api-inference.modelscope.net/你的ID/sse, headers: {}, timeout: 60, sse_read_timeout: 300 }, amap-mcp: { transport: sse, url: https://mcp.amap.com/sse?key你在高德申请的Key, headers: {}, timeout: 60, sse_read_timeout: 300 }, zhipu-search: { transport: sse, url: https://open.bigmodel.cn/api/mcp/web_search/sse?Authorization你的APIKey, headers: {}, timeout: 60, sse_read_timeout: 300 } } }注意timeout和sse_read_timeout单位是秒。timeout是连接超时sse_read_timeout是读取超时。如果工具执行时间较长比如查车次、搜网页建议把sse_read_timeout设大一点300 秒比较稳妥。如果你从魔搭社区拿到的原始配置是这种格式{ mcpServers: { 12306-mcp: { type: sse, url: https://mcp.api-inference.modelscope.net/你的ID/sse } } }需要转换成 Dify 插件要求的格式也就是把type改成transport并补上headers、timeout、sse_read_timeout字段。手动改容易出错可以在 Dify 里建一个辅助智能体来做转换。提示词可以这样写你需要将用户输入的 mcp 配置 json 转为目标 json。 目标 json 结构为 { server名称: { url: 原始url, headers: {}, timeout: 60, sse_read_timeout: 300 } } 用户可能直接输入 url也可能输入完整 json都需要按上述结构返回。把魔搭的原始 JSON 贴进去辅助智能体会输出转换后的片段复制到 MCP 插件配置里即可。高德地图 MCP 的 Key 申请流程先注册高德开发者账号进入应用管理创建新应用然后为应用添加 Key服务平台选「Web 服务」。创建成功后拿到 Key拼到 SSE 地址里就是https://mcp.amap.com/sse?key你的Key。智谱搜索 MCP 的 Key 获取方式和大模型 API Key 一致拼到 URL 的Authorization参数里。配置保存后插件会尝试连接各个 Server。如果连接成功Server 名称旁边会显示绿色状态。如果失败检查 URL 是否完整、Key 是否有效、网络是否能访问该地址。托管型 MCP 服务一般不需要额外网络配置直接连就行。这里再给一个工作流节点的参数参考。在 Dify 工作流里你需要添加一个「Agent」节点在节点配置里选择模型就是第 2 章配好的那个然后在「工具」里勾选 MCP 插件暴露出来的工具。Agent 节点的策略建议选「Function Calling」这样模型会自主决定调用哪个工具。最大迭代次数设 5 到 10 次避免无限循环。4. 验证请求端到端调用 12306 MCP 查车次配置写完必须跑一次端到端调用确认工具链真的通了。这一章我用 12306 MCP 做验证从建 Agent 应用到实际查询把每一步的结果都展示出来。先在 Dify 里创建一个 Agent 应用。应用类型选「Agent」不是「聊天助手」因为只有 Agent 类型才支持工具调用编排。创建好后进入编排页面模型选第 2 章配好的豆包 seed 1.6 或同类支持 Function Calling 的模型。在「工具」区域点击添加找到 MCP SSE 插件勾选 12306-mcp 暴露出来的工具比如query_tickets、query_stations等。然后写系统提示词。提示词的作用是约束 Agent 的行为让它知道什么时候该调工具。可以参考这段你叫“火车侠”是 12306-MCP 专属 AI 助理专注于铁路出行服务。 你的核心任务是调用 MCP 工具时先获取工具列表再选择 12306-MCP 来回答。 需要了解清楚本 MCP 如何使用。查询车票、规划行程提供最优推荐。 当用户询问车次、余票、时刻表时必须调用工具获取实时数据不要凭记忆回答。提示词写好后保存进入调试预览。输入一个真实查询「明天银川到中卫的火车有哪些」正常情况下你会看到 Agent 的思考过程先识别意图然后调用 12306 MCP 的工具传入出发站、到达站、日期参数工具返回车次列表模型再把结果整理成自然语言。返回内容会包含车次号、出发到达时间、历时、座位类型和余票情况。比如 K195 次 01:15 银川站发车03:28 抵达中卫站硬座 24.5 元有票C8221 次城际 06:57 发车08:12 到中卫南二等座 37 元有票。这些数据来自实时接口比手动查 App 再复制粘贴方便得多。如果你在调试预览里看到工具调用卡片展开里面有请求参数和返回结果说明链路通了。如果模型直接凭记忆回答没有调工具检查两个地方一是 Agent 节点的工具是否勾选正确二是提示词里是否明确要求「必须调用工具」。有些模型对工具描述不敏感换豆包 seed 1.6 之后触发率会高很多。再验证一个稍微复杂的场景「帮我查后天从银川到中卫下午出发的动车二等座有票的。」这个查询需要模型先调工具拿全部车次再按时间过滤再按座位类型筛选。如果 Agent 能正确返回 D 字头动车、下午发车、二等座有票的车次说明工具调用和结果处理都没问题。验证通过后你可以把这个 Agent 应用发布然后在「探索」或「应用」里访问。也可以把它嵌到工作流里作为工具节点被其他流程调用。工作流里用 Agent 节点时输入变量接上游节点的输出输出变量接下游节点整个编排就串起来了。这里给一个工作流节点参数表方便你对照配置节点类型参数项建议值Agent 节点模型doubao-seed-1-6-250615Agent 节点工具12306-mcp 全部工具Agent 节点策略Function CallingAgent 节点最大迭代8Agent 节点输出变量text开始节点输入变量query (string)结束节点输出变量result (string)按这个配置跑一遍从开始节点传入 queryAgent 节点调 MCP 工具结束节点输出结果。如果整条链路没有报错工具链在 Dify 中就正常触发了。5. 本篇常见错排查401、local proxy failed、reading choicesMCP 接入过程中最容易卡在几个报错上这一章我把真实遇到过的错误和排查路径列出来你对照着看。401 Unauthorized。这个通常出现在 MCP Server 连接阶段或模型调用阶段。如果是 MCP Server 报 401检查 URL 里的 Key 或 Authorization 参数是否正确。高德 MCP 的 Key 拼在?key后面智谱的拼在?Authorization后面复制时不要带多余空格。如果是模型调用报 401检查 TaoToken 的 API Key 是否有效、是否过期、Base URL 是否填对。Base URL 应该是https://taotoken.net/api不要加/v1。local proxy failed。这个报错一般出现在 Dify 尝试连接 MCP Server 时提示本地代理失败。原因可能是 Dify 部署环境无法直接访问外网或者 MCP Server 地址写错。先确认 URL 能不能在浏览器里打开SSE 地址直接打开可能显示连接保持这是正常的。如果 Dify 是 Docker 部署检查容器网络是否能出站。托管型 MCP 服务不需要本地代理如果报这个错优先检查 URL 和网络。reading choices 相关报错。这个通常出现在模型返回格式不符合预期时比如模型没有按 Function Calling 格式返回Dify 解析choices字段失败。排查方向一是模型是否支持 Function Calling有些模型不支持工具调用配了也没用二是提示词是否过于复杂导致模型输出格式混乱三是 Agent 节点的策略是否选对选「Function Calling」而不是「ReAct」。换豆包 seed 1.6 之后这个报错明显减少。OAuth 相关报错。部分 MCP Server 需要 OAuth 授权比如某些需要登录的第三方服务。如果你用的托管型 MCP 不需要 OAuth报这个错说明配置里混入了需要授权的 Server。检查mcpServers里每个 Server 的 URL去掉需要 OAuth 的那些或者按平台文档完成授权流程。工具列表为空。MCP 插件连接成功但 Agent 节点里看不到工具。原因可能是插件配置保存后没有刷新或者 Agent 节点没有重新加载工具列表。解决办法保存插件配置后回到 Agent 编排页面刷新页面重新在工具区域搜索 MCP 相关工具。如果还是没有检查 MCP Server 是否真的暴露了工具有些 Server 只提供资源不提供工具。模型不调工具直接回答。这个不是报错但很常见。模型看到用户问题后凭训练数据直接回答没有触发工具调用。解决办法在提示词里明确写「必须调用工具获取实时数据不要凭记忆回答」换工具调用能力更强的模型在 Agent 节点里把工具描述写清楚让模型知道这个工具能做什么。超时无返回。MCP 工具执行时间超过sse_read_timeout设置的值连接被断开。把sse_read_timeout从默认值调到 300 秒或更大。如果是本地 MCP Server检查 Server 进程是否还在运行。配置 JSON 格式错误。Dify 插件配置里 JSON 格式要求严格多一个逗号、少一个引号都会保存失败。建议先在本地用 JSON 校验工具检查一遍再粘贴进去。常见错误是最后一个 Server 后面多了逗号或者headers写成了header。排查时有一个通用思路先确认模型本身能正常对话再确认 MCP 插件能连上 Server再确认 Agent 节点能看到工具最后确认模型会调工具。每一步单独验证出问题时定位就快。6. 语义一致 CTA从验证到长期编码的路径工具链跑通之后你可能会想把它用到更实际的场景里。MCP 的价值在于把外部能力标准化地接进 Dify让 Agent 能查实时数据、操作软件、调 API。12306 只是验证案例同样的配置方式可以接高德地图做路线规划、接智谱搜索做联网检索、接 Playwright 做网页操作。如果你在验证过程中遇到模型调用不稳定、工具触发率低的问题可以先到模型对话页面切换不同模型对比效果地址是 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。把同样的查询分别用豆包 seed 1.6、DeepSeek V3、Claude 系列跑一遍看哪个模型对工具描述的理解更准。实测下来工具调用场景对模型的指令遵循能力要求比较高选对模型能省很多调试时间。需要创建新的 API Key 或查看用量到 API Keys 管理页操作https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有 OpenAI 兼容接口的详细说明配 Dify 自定义模型时可以参考。如果你打算长期做 Agent 开发、频繁跑工作流编排Coding Plan 会比按量计费更合适地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它面向的是需要持续调用模型、调试工具链的开发者不用每次担心余额。最后说一个实际经验MCP 工具调用调试时先把sse_read_timeout设大再把 Agent 最大迭代次数设够然后从最简单的查询开始验证。不要一上来就配五六个 MCP Server先跑通一个再加第二个。每加一个 Server重新验证一次工具列表和调用链路。这样出问题时你知道是哪个环节引入的。工具链稳定之后再往工作流里串整个智能体的能力就搭起来了。
返回列表