当前位置: 首页 > article >正文

dify调用Streamable HTTP MCP应用

一、概述

上一篇文章,介绍了使用python开发Streamable HTTP MCP应用,链接:https://www.cnblogs.com/xiao987334176/p/18872195

接下来介绍dify如何调用MCP

二、插件

安装插件

需要安装2个插件,分别是:Agent 策略(支持 MCP 工具),MCP SSE

Agent 策略(支持 MCP 工具)

Agent 策略集合(支持 MCP SSE 发现和调用工具)

github地址:https://github.com/junjiem/dify-plugin-agent-mcp_sse

MCP SSE / StreamableHTTP

通过 HTTP with SSE 或 Streamable HTTP 传输方式使用 MCP 协议来发现和调用工具。

github地址:https://github.com/junjiem/dify-plugin-tools-mcp_sse

注意:请确保插件是最新版本,因为新版本增加了Streamable HTTP

目前最新版本如下:

 请确保dify版本不要太低,最好是1.3以上

插件配置

点击插件MCP SSE,设置授权

 输入mcp服务配置

完整内容如下:

{"mysql8-mcp-server": {"transport": "streamable_http","url": "http://172.16.3.121:9000/mcp/","headers": {},"timeout": 60}
}

参数说明:

mysql8-mcp-server:mcp名字,名字可以随便写。

transport:mcp运行模式,streamable_http表示Streamable HTTP

url:mcp访问地址

注意:如果是使用fastmcp开发的,末尾必须带有斜杠,否则添加会报错

PluginInvokeError: {"args":{},"error_type":"Exception","message":"mysql8-mcp-server - Unsupported Content-Type: None"}

headers:请求头设置,如果没有特殊要求,这里设置为空。

timeout:超时时间,这里设置为60秒

注意:上面只是举例了一个mcp应用,如果有多个,在里面添加即可,比如:

三、dify工作流设置

创建工作流

类型:Chatflow

名称:test-mcp-mysql8

 删除LLM节点,添加一个agnet,效果如下:

agent设置

agent策略

 重点看agent配置

AGENT策略必须选择ReAct (Support MCP Tools)

为什么一定要选ReAct,因为我发现FunctionCalling有问题

模型

模型随便选一个即可,这里选的是qwen3-32b

 工具列表

注意:工具列表,这里一定要留空。

为什么?因为这里提供的方法,只支持SSE模式,并不支持Streamable HTTP,所以千万不要选。

agent插件,已经支持Streamable HTTP 工具列表自动发现,所以不需要选。

MCP服务配置

 mcp服务配置,完整内容如下:

{"mysql8-mcp-server": {"transport": "streamable_http","url": "http://172.16.3.121:9000/mcp/","timeout": 60}
}

注意:这里的url末尾要带斜杠,因为是fastmcp开发的,所有要带。

如果是java或者nodejs开发的mcp,我就不确定了,需要自行尝试。

指令

指令就是我们熟悉的提示词

  提示词和以前一样

使用中文回复。当用户提问中涉及学生、教师、成绩、班级、课程等实体时,需要使用 MySQL MCP 进行数据查询和操作,表结构说明如下:# 学生管理系统数据库表结构说明## 1. 教师表 (teachers)| 字段名 | 类型 | 描述 | 约束 | 示例 |
|--------|------|------|------|------|
| id | varchar | 教师ID | 主键 | "T001" |
| name | varchar | 教师姓名 | 必填 | "张建国" |
| gender | enum | 性别 | "男"或"女" | "男" |
| subject | varchar | 教授科目 | 必填 | "数学" |
| title | varchar | 职称 | 必填 | "教授" |
| phone | varchar | 联系电话 | 必填 | "13812345678" |
| office | varchar | 办公室位置 | 必填 | "博学楼301" |
| wechat | varchar | 微信(可选) | 可选 | "lily_teacher" |
| isHeadTeacher | enum | 是否为班主任,"true"或"false" | 可选 | true |## 2. 班级表 (classes)| 字段名 | 类型 | 描述 | 约束 | 示例 |
|--------|------|------|------|------|
| id | varchar | 班级ID | 主键 | "202301" |
| className | varchar | 班级名称 | 必填 | "2023级计算机1班" |
| grade | int | 年级 | 必填 | 2023 |
| headTeacherId | varchar | 班主任ID | 外键(teachers.id) | "T003" |
| classroom | varchar | 教室位置 | 必填 | "1号楼302" |
| studentCount | int | 学生人数 | 必填 | 35 |
| remark | varchar | 备注信息 | 可选 | "市级优秀班集体" |## 3. 课程表 (courses)| 字段名 | 类型 | 描述 | 约束 | 示例 |
|--------|------|------|------|------|
| id | varchar | 课程ID | 主键 | "C001" |
| courseName | varchar | 课程名称 | 必填 | "高等数学" |
| credit | int | 学分 | 必填 | 4 |
| teacherId | varchar | 授课教师ID | 外键(teachers.id) | "T001" |
| semester | varchar | 学期 | 格式"YYYY-N" | "2023-1" |
| type | enum | 课程类型 | "必修"或"选修" | "必修" |
| prerequisite | varchar | 先修课程ID | 可选,外键(courses.id) | "C003" |## 4. 学生表 (students)| 字段名 | 类型 | 描述 | 约束 | 示例 |
|--------|------|------|------|------|
| id | varchar | 学号 | 主键 | "S20230101" |
| name | varchar | 学生姓名 | 必填 | "王强" |
| gender | enum | 性别 | "男"或"女" | "男" |
| birthDate | date | 出生日期 | 必填 | date("2005-01-15") |
| enrollmentDate | date | 入学日期 | 必填 | date("2023-8-1") |
| classId | varchar | 班级ID | 外键(classes.id) | "202301" |
| phone | varchar | 联系电话 | 必填 | "13812345678" |
| email | varchar | 电子邮箱 | 必填 | "20230101@school.edu.cn" |
| emergencyContact | varchar | 紧急联系人电话 | 必填 | "13876543210" |
| address | varchar | 家庭住址 | 必填 | "北京市海淀区中关村大街1栋101室" |
| height | int | 身高(cm) | 必填 | 175 |
| weight | int | 体重(kg) | 必填 | 65 |
| healthStatus | enum | 健康状况 | 必填,"良好"或"一般‌"或"较差" | "良好" |## 5. 成绩表 (scores)| 字段名 | 类型 | 描述 | 约束 | 示例 |
|--------|------|------|------|------|
| id | varchar | 成绩记录ID | 主键 | "S20230101C001" |
| studentId | varchar | 学生ID | 外键(students.id) | "S20230101" |
| courseId | varchar | 课程ID | 外键(courses.id) | "C001" |
| score | int | 综合成绩 | 0-100 | 85 |
| examDate | date | 考试日期 | 必填 | date("2024-5-20") |
| usualScore | int | 平时成绩 | 0-100 | 90 |
| finalScore | int | 期末成绩 | 0-100 | 80 |### 补考成绩记录说明
补考记录在_id后添加"_M"后缀,如"S20230101C001_M"## 表关系说明1. **一对多关系**:- 一个班级(classes)对应多个学生(students)- 一个教师(teachers)可以教授多门课程(courses)- 一个学生(students)有多条成绩记录(scores)2. **外键约束**:- students.classId → classes.id- courses.teacherId → teachers.id- scores.studentId → students.id- scores.courseId → courses.id- classes.headTeacherId → teachers.id
View Code

mysql表结构,参考文章:https://www.cnblogs.com/xiao987334176/p/18826422

查询

这里选择变量query,也就是开始步骤中的输入变量

最大迭代次数

最大迭代次数是一个重要的参数,用于控制工具调用的深度和复杂性。它主要用于防止无限循环或过度调用工具,从而避免资源浪费或系统性能问题。

 默认是3,也必须要设置一下,否则无法保存

最后连接直接回复

选择变量Agent.text

点击发布预览

四、dify测试

学生里面,男生多还是女生多?

 哪个老师带的学生最多?

 总成绩最好的是哪个班级?

相关文章:

dify调用Streamable HTTP MCP应用

一、概述 上一篇文章,介绍了使用python开发Streamable HTTP MCP应用,链接:https://www.cnblogs.com/xiao987334176/p/18872195 接下来介绍dify如何调用MCP 二、插件 安装插件 需要安装2个插件,分别是:Agent 策略(支持 …...

HCIP实验五

一、实验拓扑图: 二、实验需求分析: 1. PreVal策略:要求确保R4通过R2到达192.168.10.0/24 ,需在R4上针对去往该网段路由配置PreVal策略,为经R2的路径赋予更高优先值,影响本地路由表选路。 2. AS Path策略…...

java将图片转Base64字符串存储mysql数据库

1、mysql数据库的表里新增一个字段image_data,使用TEXT或LONGTEXT类型: CREATE TABLE IMAGES( id INT AUTO_INCREMENT PRIMARY KEY, image_name VARCHAR(255), image_data LONGTEXT, upload_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 2、Java核心…...

题目 3330: 蓝桥杯2025年第十六届省赛真题-01 串

题目 3330: 蓝桥杯2025年第十六届省赛真题-01 串 时间限制: 2s 内存限制: 192MB 提交: 310 解决: 24 题目描述 给定一个由 0, 1, 2, 3 的二进制表示拼接而成的长度无限的 01 串。 其前若干位形如 011011100101110111 。 请求出这个串的前 x 位里有多少个 1 。 输入格…...

初识 Flask 框架

目录 1. Flask 框架概述 1.1 安装 Flask 1.2 创建你的第一个 Flask 应用 1.3 运行 Flask 应用 2. Flask 路由与视图函数 2.1 动态路由 2.2 支持多种 HTTP 请求方法 2.3 使用 Jinja2 模版渲染 HTML 2.5 模版继承与块 3. Flask 表单处理与用户输入 3.1 安装 Flask-WTF …...

MYSQL故障排查和环境优化

一、MySQL故障排查 1. 单实例常见故障 (1)连接失败类问题 ERROR 2002 (HY000): Cant connect to MySQL server 原因:MySQL未启动或端口被防火墙拦截。 解决:启动MySQL服务(systemctl start mysqld)或开放…...

vivado fpga程序固化

一般下载到fpga上的程序在掉电之后就会丢失,如果想要掉电之后程序不丢失,就需要将比特流文件固化到板载的flash上。 以下以我的7a100t开发板为例,介绍程序固化的流程 点击OK就可以下载了。 一个奇怪的问题 有一次我的一个工程固化之后&…...

OpenCV CUDA模块图像特征检测与描述------图像中快速检测特征点类cv::cuda::FastFeatureDetector

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::FastFeatureDetector 是 OpenCV 的 CUDA 加速模块中的一部分,用于在图像中快速检测特征点。FAST(Features fro…...

SpringMVC(结合源码浅析工作流程)

SpringMVC 概念 Spring MVC 是基于前端控制器(Front Controller)设计模式的 Web 框架,在 Web 应用中指一个统一的入口,用来接收所有客户端请求,并统一进行分发、处理。在 SpringMVC 中,前端控制器就是 Di…...

学习STC51单片机13(芯片为STC89C52RC)

我去,兄弟们我们今天来学习一个牛逼 的硬件,它叫超声波测距模块HC—SR04 硬件:HC—SR04 哎,想当初最想要玩的就是这个模块,科技感十足,那现在就让我们玩玩吧 超声波测距传感器 原理就是说需要给Trig 10u…...

Claude 4 系列 Opus 4 与 Sonnet 4正式发布:Claude 4新特性都有哪些?

随着 Claude 4 系列(Opus 4 与 Sonnet 4)的正式发布,Anthropic 把自家大模型从“会聊天”推进到“能当自主代理”──不仅推理更深、上下文更长,还内置代码执行、多模态理解、工具调用等一揽子全新能力;同时&#xff0…...

Swagger API 未授权访问漏洞【原理扫描】修复

一、背景 漏洞名称:Swagger API 未授权访问漏洞【原理扫描】 风险等级:中 详细描述: Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,方便开发者快速了解和调试接口。但由于…...

深度“求索”:DeepSeek+Dify构建个人知识库

目录 前言 环境部署 安装Docker 安装Dify 配置Dify 部署知识库 创建应用 前言 在当今数字化信息爆炸的时代,数据隐私和个性化知识管理成为企业和个人关注的焦点。Dify,作为一款备受瞩目的开源 AI 应用开发平台,为用户提供了完整的私有…...

基于R语言的空间异质性数据分析技术

在自然和社会科学领域,存在大量与地理或空间相关的数据,这些数据通常具有显著的空间异质性。传统的统计学方法在处理这类数据时往往力不从心。基于R语言的一系列空间异质性数据分析方法,如地理加权回归(GWR)、地理加权…...

C++:动态刷新打印内容

目录 1.简介1.1 Display类原理简述 2.代码2.1 main.cpp:无注释版2.2 main.cpp:有注释版 3.编译运行 1.简介 本文介绍一个用于命令行动态覆盖输出的C实现(Display类); 效果说明: 普通输出会直接换行显示。…...

网络学习-TCP协议(七)

一、TCP协议 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 1、三次握手 客户端: 1、先发起连接,发送SYN置1,seqnum12345(随机值)----半连接…...

基于微信小程序的高校校园微活动管理系统设计与实现(源码+定制+开发)高校微信小程序校园活动发布与互动平台开发 面向大学生群体的校园活动移动平台设计与实现

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

Python 项目中安装 OpenAI 库的详细指南

在 Windows 系统中指定版本安装 OpenAI 库的指南 在 Windows 系统中,尤其是使用 Python 3.7.8 时,安装 OpenAI 库可能会遇到一些问题。本文将为你提供一个简单易懂的解决方案,帮助你成功安装指定版本的 OpenAI 库。 一、问题背景 当你在 W…...

云计算与大数据进阶 | 27、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(上)

数据中心里,存储系统是至关重要的组成部分。由于相关硬件组件与存储操作系统的多样性和复杂性,如何在保证存储稳定、安全、可靠的同时,实现灵活扩展和自服务,一直是困扰数据中心全面云化的难题。 简单来说,现在的难题…...

使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第二部分)

建立向量嵌入数据库 from langchain_community.document_loaders import TextLoader from langchain_text_splitters import CharacterTextSplitter from langchain.docstore.document import Document from langchain_chroma.vectorstores import Chromaimport vertexai from…...

IvorySQL-WASM:免安装的数据库探索之旅

简介 为了降低社区用户的使用门槛,提升使用体验,IvorySQL 社区特别推出了 IvorySQL-WASM 项目,帮助用户快速在线 Demo。 IvorySQL-WASM 基于开源的 Postgres-WASM 框架开发。它允许用户直接在网页浏览器中体验 IvorySQL,无需本地…...

飞牛fnNAS远程映射盘符

目录 一、NAS、PC端配置Zerotier 二、使用网上邻居 三、使用WebDAV 1.开启WebDAV 2.PC上安装RaiDrive并设置 如果能将NAS作为本机一个盘符来使用,一定会令我非常方便。如果是本地,可以很方便实现。 将飞牛NAS映射为本地盘符,常用两种方式,一种是网上邻居,另一种是We…...

Java设计模式:探索编程背后的哲学

设计模式是软件开发中的一种常见方法,它为常见问题提供了解决方案。在Java世界中,设计模式的应用尤为广泛。本文将深入探讨Java设计模式的起源、分类和实际应用,帮助读者更好地理解和应用这些模式。设计模式不仅是编程的技术,更是…...

会话管理有哪些

 使用服务器或者框架的会话管理控制。应用程序应当只识别有效的会话标识符。  会话标识符必须总是在一个可信系统(比如:服务器)上创建。  会话管理控制应当使用通过审查的算法以保证足够的随机会话标识符。  为包含已验证的会…...

《C++20新特性全解析:模块、协程与概念(Concepts)》

引言:C20——现代C的里程碑 C20是继C11之后最具革命性的版本,它通过模块(Modules)、协程(Coroutines)和概念(Concepts)三大核心特性,彻底改变了C的代码组织方式、并发模…...

Docker部署OpenSearch集群

OpenSearch 简介 OpenSearch 是一款开源的搜索与分析引擎,最初由亚马逊 AWS 开发,于 2021 年 9 月将其移交至 Linux 基金会旗下的 OpenSearch 软件基金会,此后实现了社区主导的治理模式。其具有高性能、可扩展性强、兼容性强等优点&#xff…...

三宽用到的网络类型

用家宽、企宽和专线运行P2P的网络类型本质要求一致,但具体配置和优化方向因宽带类型而异。以下是关键差异与共性分析: 一、核心网络类型要求(三者的共性) 公网IP 必要性:均需公网IP(非内网IP)以…...

【AS32X601驱动系列教程】PLIC_中断应用详解

平台中断控制器(Platform Level Interrupt Controller,PLIC)是国科安芯AS32系列MCU芯片的中断控制器,主要对中断源进行采样,优先级仲裁和分发。各外设中断统一连到PLIC,PLIC统一管理并输出中断请求到内核。…...

单目视觉测量及双目视觉测量

一、单目视觉测量 1.1 原理部分讲解 单目视觉系统通过采集图像,将图像转换为二维数据,然后对采集的图像进行模式识别,通过图像匹配算法识别行驶过程中的车辆、行人、交通标志等,最后依据目标物体的运动模式和定位…...

python学习打卡day34

DAY 34 GPU训练及类的call方法 知识点回归: CPU性能的查看:看架构代际、核心数、线程数GPU性能的查看:看显存、看级别、看架构代际GPU训练的方法:数据和模型移动到GPU device上类的call方法:为什么定义前向传播时可以直…...