发布时间:2026/8/24 13:56:23
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/8/24 13:56:22

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

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

2026/8/24 13:51:22

k8s的工作原理和部署方式

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

2026/8/24 13:51:22

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

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

2026/8/24 16:06:39

​地球物理大地测量学计算系列之十六外部场元Poisson积分计算

1、Possion积分算法公式 系列十三使用边界面的高程异常格网反算重力场元也是采用的Possion积分,本文是根据边界面的扰动重力格网计算外部空间的扰动重力及扰动重力梯度。 由边界面大地高格网(m)及其面上残差扰动场元格网,按Poisso…

2026/8/24 16:06:39

DeepSeek V4 Flash原生多模态模型:从本地部署到生产实践全解析

在实际 AI 应用开发中,模型的选择与部署是决定项目成败的关键环节。近期,DeepSeek 推出的 V4 Flash 模型因其“原生多模态”特性而备受关注。对于开发者而言,理解一个模型是否真正支持多模态、如何将其集成到现有系统中、以及在生产环境中部署…

2026/8/24 16:06:39

CTIFoundry:索引时构建结构,如何提升智能体F1分数与RAG效果

最近在折腾智能体项目时,我遇到了一个典型问题:智能体在处理复杂、多步骤任务时,经常“跑偏”或“失忆”。比如,让它分析一份长文档并回答几个关联问题,它要么漏掉关键信息,要么给出的答案前后矛盾。这背后…

2026/8/24 16:06:39

四、SpringMVC实现增删改查api接口

package com.example.springboot.common;import lombok.Data;import java.io.Serializable;Data public class Result implements Serializable {private static final long serialVersionUID 1L;private int code; // 状态码private String msg; // 提示信息private Object d…

2026/8/24 16:01:39

基于DeepSeek API的AI字幕翻译实战:从SRT提取到视频封装全流程

1. 这篇文章真正要解决的问题 如果你是一位对经典科幻动画、AI技术应用,或者视频字幕制作感兴趣的开发者或技术爱好者,你很可能遇到过这样的困境:你找到了一部心仪已久但只有英文字幕的海外作品,比如一部1979年的经典科幻动画《科…

2026/8/24 0:07:22

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 8:17:29

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 1:09:25

3条命令跑通LocalAI:无GPU本地AI引擎部署

3条命令跑通LocalAI:无GPU本地AI引擎部署 【免费下载链接】LocalAI LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required. 项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI…

2026/8/24 1:09:25

AI推理性能测试怎么做:MLPerf Inference完整上手指南

AI推理性能测试怎么做:MLPerf Inference完整上手指南 【免费下载链接】inference Reference implementations of MLPerf inference benchmarks 项目地址: https://gitcode.com/gh_mirrors/inf/inference 同一个模型换一张卡,速度快多少你知道吗&a…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/23 6:14:43

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…