开启左侧

dify调用Streamable HTTP MCP应用

[复制链接]
邓金婵9 发表于 6 小时前 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:CSDN博客
一、概述

上一篇文章,介绍了使用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调用Streamable HTTP MCP应用-1.png


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

点击插件MCP SSE,设置授权
dify调用Streamable HTTP MCP应用-2.png


输入mcp服务配置
dify调用Streamable HTTP MCP应用-3.png


完整内容如下:
  1. {
  2.     "mysql8-mcp-server": {
  3.         "transport": "streamable_http",
  4.         "url": "http://172.16.3.121:9000/mcp/",
  5.         "headers": {},
  6.         "timeout": 60
  7.     }
  8. }
复制代码
参数说明:
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调用Streamable HTTP MCP应用-4.png


三、dify工作流设置

创建工作流

类型:Chatflow
名称:test-mcp-mysql8
dify调用Streamable HTTP MCP应用-5.png


删除LLM节点,添加一个agnet,效果如下:
dify调用Streamable HTTP MCP应用-6.png


agent设置

agent策略

重点看agent配置
AGENT策略必须选择ReAct (Support MCP Tools)
dify调用Streamable HTTP MCP应用-7.png


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

模型随便选一个即可,这里选的是qwen3-32b
dify调用Streamable HTTP MCP应用-8.png


工具列表

注意:工具列表,这里一定要留空。
为什么?因为这里提供的方法,只支持SSE模式,并不支持Streamable HTTP,所以千万不要选。
dify调用Streamable HTTP MCP应用-9.png


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

dify调用Streamable HTTP MCP应用-10.png


mcp服务配置,完整内容如下:
  1. {
  2.     "mysql8-mcp-server": {
  3.         "transport": "streamable_http",
  4.         "url": "http://172.16.3.121:9000/mcp/",
  5.         "timeout": 60
  6.     }
  7. }
复制代码
注意:这里的url末尾要带斜杠,因为是fastmcp开发的,所有要带。
如果是java或者nodejs开发的mcp,我就不确定了,需要自行尝试。
指令

指令就是我们熟悉的提示词
dify调用Streamable HTTP MCP应用-11.png


  提示词和以前一样

dify调用Streamable HTTP MCP应用-12.gif



dify调用Streamable HTTP MCP应用-13.gif

  1. 使用中文回复。
  2. 当用户提问中涉及学生、教师、成绩、班级、课程等实体时,需要使用 MySQL MCP 进行数据查询和操作,表结构说明如下:
  3. # 学生管理系统数据库表结构说明
  4. ## 1. 教师表 (teachers)
  5. | 字段名 | 类型 | 描述 | 约束 | 示例 |
  6. |--------|------|------|------|------|
  7. | id | varchar | 教师ID | 主键 | "T001" |
  8. | name | varchar | 教师姓名 | 必填 | "张建国" |
  9. | gender | enum | 性别 | "男"或"女" | "男" |
  10. | subject | varchar | 教授科目 | 必填 | "数学" |
  11. | title | varchar | 职称 | 必填 | "教授" |
  12. | phone | varchar | 联系电话 | 必填 | "13812345678" |
  13. | office | varchar | 办公室位置 | 必填 | "博学楼301" |
  14. | wechat | varchar | 微信(可选) | 可选 | "lily_teacher" |
  15. | isHeadTeacher | enum | 是否为班主任,"true"或"false" | 可选 | true |
  16. ## 2. 班级表 (classes)
  17. | 字段名 | 类型 | 描述 | 约束 | 示例 |
  18. |--------|------|------|------|------|
  19. | id | varchar | 班级ID | 主键 | "202301" |
  20. | className | varchar | 班级名称 | 必填 | "2023级计算机1班" |
  21. | grade | int | 年级 | 必填 | 2023 |
  22. | headTeacherId | varchar | 班主任ID | 外键(teachers.id) | "T003" |
  23. | classroom | varchar | 教室位置 | 必填 | "1号楼302" |
  24. | studentCount | int | 学生人数 | 必填 | 35 |
  25. | remark | varchar | 备注信息 | 可选 | "市级优秀班集体" |
  26. ## 3. 课程表 (courses)
  27. | 字段名 | 类型 | 描述 | 约束 | 示例 |
  28. |--------|------|------|------|------|
  29. | id | varchar | 课程ID | 主键 | "C001" |
  30. | courseName | varchar | 课程名称 | 必填 | "高等数学" |
  31. | credit | int | 学分 | 必填 | 4 |
  32. | teacherId | varchar | 授课教师ID | 外键(teachers.id) | "T001" |
  33. | semester | varchar | 学期 | 格式"YYYY-N" | "2023-1" |
  34. | type | enum | 课程类型 | "必修"或"选修" | "必修" |
  35. | prerequisite | varchar | 先修课程ID | 可选,外键(courses.id) | "C003" |
  36. ## 4. 学生表 (students)
  37. | 字段名 | 类型 | 描述 | 约束 | 示例 |
  38. |--------|------|------|------|------|
  39. | id | varchar | 学号 | 主键 | "S20230101" |
  40. | name | varchar | 学生姓名 | 必填 | "王强" |
  41. | gender | enum | 性别 | "男"或"女" | "男" |
  42. | birthDate | date | 出生日期 | 必填 | date("2005-01-15") |
  43. | enrollmentDate | date | 入学日期 | 必填 | date("2023-8-1") |
  44. | classId | varchar | 班级ID | 外键(classes.id) | "202301" |
  45. | phone | varchar | 联系电话 | 必填 | "13812345678" |
  46. | email | varchar | 电子邮箱 | 必填 | "20230101@school.edu.cn" |
  47. | emergencyContact | varchar | 紧急联系人电话 | 必填 | "13876543210" |
  48. | address | varchar | 家庭住址 | 必填 | "北京市海淀区中关村大街1栋101室" |
  49. | height | int | 身高(cm) | 必填 | 175 |
  50. | weight | int | 体重(kg) | 必填 | 65 |
  51. | healthStatus | enum | 健康状况 | 必填,"良好"或"一般‌"或"较差" | "良好" |
  52. ## 5. 成绩表 (scores)
  53. | 字段名 | 类型 | 描述 | 约束 | 示例 |
  54. |--------|------|------|------|------|
  55. | id | varchar | 成绩记录ID | 主键 | "S20230101C001" |
  56. | studentId | varchar | 学生ID | 外键(students.id) | "S20230101" |
  57. | courseId | varchar | 课程ID | 外键(courses.id) | "C001" |
  58. | score | int | 综合成绩 | 0-100 | 85 |
  59. | examDate | date | 考试日期 | 必填 | date("2024-5-20") |
  60. | usualScore | int | 平时成绩 | 0-100 | 90 |
  61. | finalScore | int | 期末成绩 | 0-100 | 80 |
  62. ### 补考成绩记录说明
  63. 补考记录在_id后添加"_M"后缀,如"S20230101C001_M"
  64. ## 表关系说明
  65. 1. **一对多关系**:
  66.    - 一个班级(classes)对应多个学生(students)
  67.    - 一个教师(teachers)可以教授多门课程(courses)
  68.    - 一个学生(students)有多条成绩记录(scores)
  69. 2. **外键约束**:
  70.    - students.classId → classes.id
  71.    - courses.teacherId → teachers.id
  72.    - scores.studentId → students.id
  73.    - scores.courseId → courses.id
  74.    - classes.headTeacherId → teachers.id
复制代码
View Code
mysql表结构,参考文章:https://www.cnblogs.com/xiao987334176/p/18826422
查询

这里选择变量query,也就是开始步骤中的输入变量
dify调用Streamable HTTP MCP应用-14.png


最大迭代次数

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


默认是3,也必须要设置一下,否则无法保存
最后连接直接回复
选择变量Agent.text
dify调用Streamable HTTP MCP应用-16.png


点击发布预览
dify调用Streamable HTTP MCP应用-17.png


四、dify测试

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

dify调用Streamable HTTP MCP应用-18.png


哪个老师带的学生最多?

dify调用Streamable HTTP MCP应用-19.png


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

dify调用Streamable HTTP MCP应用-20.png




原文地址:https://blog.csdn.net/shykevin/article/details/148101832
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )