Dify MCP 集成实验(03):MCP 接入 Dify 全链路——MCP Server 如何接入 Dify 应用?

发布时间:2026/10/25 3:45:22

Dify MCP 集成实验(03):MCP 接入 Dify 全链路——MCP Server 如何接入 Dify 应用? Dify MCP 集成实验03MCP 接入 Dify 全链路——MCP Server 如何接入 Dify 应用Dify 实验系列 · MCP 集成 03/6 | 实验编号DIFY-107-03基于 Dify 1.16.1 实测2026-081. 业务场景先讲一个我们实际遇到的场景。一家做客服工单 SaaS 的公司客服门户的 AI 助手要能回答「我的工单 T12345 什么状态」——状态数据在 107-02 的 MCP server 里。现在要把这个 server 真正接进 DifyConsole 添加 MCP server → 工作流 tool 节点调用 → 冒烟验证。这是集成单最典型的场景外部系统数据通过 MCP 进入 Dify 应用。我们第一次接这类需求时第一反应是「Console 里填个 URL 就能连」。真正动手才发现——接入的未知点全藏在网络路径和 DSL 格式里api 容器访问外部 server 要过 SSRF 代理白名单没覆盖就 403MCP 工具节点在 DSL 里的准确字段网上查不到权威格式只能从 UI 导出反推。不实测排障全靠试。这不是个例。任何「外部系统数据通过 MCP 进入 Dify 应用」的集成都是这个模式网络路径通不通、DSL 字段怎么写——两个未知点不实测后面全凭猜。2. 场景痛点这个流程的痛点在接入时体现得最直接SSRF 双层 403api 容器连外部 MCP server 要走 squid 代理ssrf_proxy白名单没覆盖就 403——而且 403 可能来自两层SDK 2.0 的 DNS rebinding protection / squid 白名单报错信息都叫 403分不清是哪一层。DSL 字段靠猜MCP 工具节点在 DSL 里的准确字段provider_type: mcpprovider_id是什么——写错导入就失败网上又查不到权威格式。工具输出消费错结构化工具outputSchema输出是字段直接展开、text——下游引用 text 就收到空白LLM 误报「未找到」。模型 disabled 400DSL 里写了 disabled 模型本机 deepseek-chat disabledrun 直接 400。本质上接入的未知点集中在「网络路径」和「DSL 权威格式」两处——不实测排障全靠试。3. 方案为什么是 Console UI 导出实证把 107-01/02 的 MCP server 接入 Dify 全链路最可靠的方法是 Console 添加 UI 导出权威 DSL 运行级实证。选它的理由网络路径实测定位api 容器内 curl不走代理POST /mcp 返回 200Dify 客户端走代理403——用排错关键证据锁定代理层而不是瞎改配置UI 导出权威格式从 Console 导出含 MCP 工具节点的 DSL——UI 导出是权威格式回填 skill reference以后生成带 MCP 工具的 DSL 直接引用运行级实证三原语结论Console 工具列表只见 toolsresources/prompts 无入口——107-02 的对照结论用真实运行验证不是源码推断。这篇文章我们就用它把「工单状态查询」MCP 工具接入客服门户应用跑通全链路并固化 DSL 权威格式。4. 整体架构HTTP本地开发机dify107_02_support_serverStreamable HTTP :8902Dify 服务器apiFastAPI未知点1MCP 客户端是否走 squid 代理SSRF_PROXY 白名单 172.16.0.0/12 是否覆盖web控制台 → 工具页 → MCP tab应用 dify107_03_验证应用workflowstartticket_idtoolMCPLLMend链路很清晰本地 serverStreamable HTTP→ Dify api经 squid 代理→ web 控制台配置 → 工作流 tool 节点 → LLM → end。关键设计是验证应用用最简链路start → tool → LLM → end把未知点集中在 MCP 工具节点本身。5. 模块设计5.1 SSRF 双层 403 的修复未知点 1根因链※ MCP 客户端也走代理create_ssrf_proxy_mcp_http_clientDify api 容器core/mcp MCP 客户端SSRF 代理ssrf_proxy/squid :3128host.docker.internal.env 白名单已加本机 uvicorn :8902/mcpSDK 2.0 server层问题修复① SDK 2.0 serverstreamable-http 默认 DNS rebinding protectionHosthost.docker.internal 不在白名单 → 403run(transport_securityTransportSecuritySettings(enable_dns_rebinding_protectionFalse))开发环境生产用 allowed_hosts② squid SSRF 代理MCP 客户端也走 ssrf_proxyhost.docker.internal 不在 squid 白名单 → 403.env加SSRF_PROXY_ALLOW_PRIVATE_DOMAINSlocalhost,host.docker.internaldocker compose up -d --force-recreate ssrf_proxyrestart 不重跑 entrypoint必须 recreate排错关键证据api 容器内 curl不走代理POST /mcp 返回 200Dify 客户端走代理403 → 锁定代理层。5.2 MCP 工具节点 DSL 权威格式未知点 2UI 导出实测-data:provider_id:dify107_02_support_server# MCP provider 的 server_identifierprovider_name:dify107_02_support_serverprovider_show_name:dify107_02_support_serverprovider_type:mcp# ⚠️ 字符串 mcp区分 builtin/workflow 工具tool_name:get_ticket_statustool_node_version:2tool_parameters:ticket_id:type:mixedvalue:{{#start.ticket_id#}}tool_configurations:{}plugin_id:nullplugin_unique_identifier:nulloutput_schema:{}type:tool与 builtin/workflow 工具同 node 类型type: tool靠provider_type: mcp区分provider_id MCP provider 的 server_identifier不是行 UUID。6. 运行验证输入预期结果T1002存在 open工单 T1002 当前状态是 open最后更新于 2026-08-04 09:30:00通过T1001存在 closed工单 T1001 当前状态是 closed最后更新于 2026-08-01 10:00:00通过T9999不存在未找到该工单请核对工单号通过abc格式错 → 工具 isErrorworkflow failed显式失败非静默通过显式失败Console 工具列表只见 search_tickets / get_ticket_statustoolsresources/prompts 无入口通过三原语运行级实证7. 实战坑坑现象修复SSRF 双层 403① SDK 2.0 streamable-http 默认 DNS rebinding protectionHosthost.docker.internal → 403② MCP 客户端也走 squid 代理host.docker.internal 不在白名单 → 403① server.run 关掉或配 allowed_hosts ②.env加SSRF_PROXY_ALLOW_PRIVATE_DOMAINS force-recreaterestart 不生效实测MCP 工具输出 text 为空结构化工具outputSchema输出字段直接展开ticket_id/status/updated_attext下游引用展开字段{{#tool_status.status#}}别引用 text——首版 LLM 收空白误报「未找到」实测DSL provider_typeMCP 工具节点不认 builtin/workflow 的 provider_type 值写provider_type: mcpgraphon 枚举provider_idserver_identifier实测Model is disabledDSL 写 disabled 模型本机 deepseek-chat disabled→ run 400用 active 模型deepseek-v4-flash查GET model-providers/{provider}/models的 status实测MCP 删除/列表 UUID 语义列表接口 idserver_identifier删除/工具端点按 DB 行 UUID 查行 UUID 从 DB 查SELECT id FROM tool_mcp_providers创建响应 id行 UUID实测工具错误行为MCP 工具 isError → Dify tool 节点失败 → workflow failed显式非静默优雅降级 107-06 验收时按需加 fail 分支实测8. 实验文档及源码获取实验文档完整操作步骤DIFY-107-03MCP接入Dify全链路.md源码可直接导入含 MCP 工具节点权威格式dify107_03_验证应用.yml交付验证记录SSRF 根因链 DSL 权威格式 输出消费规则验证记录-03-MCP接入Dify全链路.md全部目录dify-107/experiments | dify-107/dsl | dify-107/servers | dify-107/delivery文章聚焦核心配置与采坑点实验的完整分步操作节点搭建/参数表/调试指引见实验文档原文。下一篇Dify MCP 集成实验04企业系统对接场景——企业系统对接选 MCP 还是插件 你在这个实验的场景里踩过什么坑欢迎评论区分享你的实战经验。
延伸阅读

更多相关文章

2026/10/24 1:53:41

2027北京具身智能机器人展海外订单对接六月启幕

国产智能机器人产品竞争力持续提升,海外市场需求稳步释放。但是跨境贸易链路漫长、手续复杂,很多制造企业缺少成熟出海履约通道。2027北京具身智能机器人展(赛逸展)依托亦庄保税物流配套,加速意向订单跨境履约。 组委会…

2026/10/24 23:47:12

k8s的工作原理和部署方式

目录 一、Kubernetes介绍 二、Kubernetes 核心架构 1. 控制平面(Master) 2. 工作节点(Node) 工作流程 三、k8s 集群部署 构建harbor镜像仓库 生成key 启动并验证 所有主机配置 所有主机彼此建立解析 所有主机配置kube…

2026/10/24 10:42:15

别让你的docker镜像撑爆你的服务器

事情发生在一个风和日丽的周五下午。我打算把我写的"下班倒计时服务"部署到生产环境——它就干一件事:返回距离下班还有多少秒。简单、纯粹、毫无商业价值但每个打工人都需要。 kubectl apply 一气呵成,然后我盯着 Pod 状态等它变成 Running。…

2026/10/25 3:43:04

顺序表原理与Java实现详解

1. 顺序表基础概念解析顺序表是数据结构中最基础的线性存储结构之一,也是学习数据结构的第一个重要门槛。它本质上是在内存中用一组地址连续的存储单元依次存储线性表的数据元素,这种物理上的连续性是顺序表区别于链表等结构的核心特征。在实际开发中&am…

2026/10/25 3:43:04

LobeChat本地部署:Docker、环境变量与反向代理实战

1. 先把聊天界面从模型里拆出来,这件事本身就值得做很多人第一次接触本地聊天机器人,顺序是反的:先去折腾模型权重、量化精度、显存占用,结果折腾了三天,模型跑起来了,却只能对着终端敲curl,连个…

2026/10/25 3:43:04

用LLM做科研搭档:指令微调生成可验证研究想法

1. 项目概述:当文献阅读变成研究创意的“自动播种机”你有没有过这种体验:花一整天精读三篇顶会论文,笔记记了二十页,合上电脑却只记得“好像很有启发”,但具体能延展出什么新问题、新方法、新实验路径,脑子…

2026/10/25 3:43:04

3D高斯泼溅误差分离:Detector、Lifting与Representation三重归因

1. 项目概述:这不是“调参”,而是一次对3D高斯泼溅底层误差结构的外科手术你最近是不是也刷到了那篇标题里带着“Semantic Lifting”“Detector Error”“Lifting Error”“Representation Error”的论文?标题长、术语密、动词冷峻——“Sepa…

2026/10/25 3:43:04

教育AI中的跨模型共识机制:诊断分歧比一致更有教学价值

1. 这不是“投票决定对错”,而是用共识机制暴露模型认知盲区你有没有遇到过这样的场景:在K-12数学辅导对话分析中,让三个不同架构的大语言模型——比如一个基于Llama 3微调的推理型模型、一个专为教育对话优化的Phi-4变体、还有一个轻量级Qwe…

2026/10/25 3:38:04

impeccable质量标准:从主观感知到可测可验的工程实践

1. 项目概述:当“impeccable”不再只是词典里的形容词最近在多个技术社区、设计论坛和内容创作小组里,频繁看到一个词被反复拎出来讨论——impeccable。它不是新发布的工具名,不是某个开源项目的代号,甚至不是缩写或黑话。它就静静…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑