开启左侧

Dify 与 MCP:开启智能体应用开发新征程

[复制链接]
惟爱_熙 发表于 10 小时前 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:CSDN博客
Dify 与 MCP:开启智能体应用开发新征程-1.png


在开始之前

本文将会涉及...

本文更偏向于实战,我会讲解如何通过 Dify 调用 1Panel 的 MCP Server,至于 MCP 的具体组成、MCP 各部分的含义本文将不会涉及或只在必要的地方予以说明。
本文选择 1Panel MCP Server 作为示例单纯是因为其操作简单、易于使用,同时我个人管理服务器使用的也是 1Panel。但是这不影响示例的普适性,只要支持 sse 的 MCP Server 都可以使用本文所述方式进行调用,即使是 stdio 模式的 MCP Server 也可以使用诸如 mcp-proxy 的工具来实现 sse 支持。
什么是MCP服务器?
Model Context Protocol (MCP) 是由Anthropic主导并于2024年开源的一种通信协议,旨在解决大型语言模型(LLM)与外部数据源及工具之间无缝集成的需求。MCP服务器是实现这一协议的服务端组件,它允许AI模型安全地与本地和远程资源进行交互。
MCP采用客户端-服务器架构:
MCP客户端(Client):通常是AI应用程序(如Claude Desktop或其他LLM工具),负责发起请求并与服务器通信。
MCP服务器(Server):轻量级程序,负责暴露特定的数据源或工具功能,并通过标准化协议与客户端交互。
MCP服务器的主要功能包括:
资源暴露:提供数据实体(如文件、数据库记录等)给客户端
工具提供:暴露可执行功能,让客户端调用完成特定任务
动态通知:当资源发生变化时主动推送更新
会话管理:处理客户端连接初始化、能力协商和会话关闭
你需要...

此指引写作时使用 Dify v1.2.0
目前所有较为先进的技术文档基本为英文,所以你至少要有基本的英语阅读能力。此外,由于我们会使用 Docker 来部署 MCP Server,你还需要有 Docker 部署和运维能力。
部署 MCP Server

MCP 的模式

在上文有提到,MCP Server 存在两种调用方式,一个是 stdio(Standard Input/Output / 标准输入输出),一个是 sse(Server-Sent Events / 服务器发送事件)。这两种调用方式可以简单理解为一个是命令行一个是网络请求。一般情况下 MCP Client 比如 Cursor 或者 Windsurf 都是同时支持这两种调用方式的,但是在 Dify 中,目前只支持 sse 调用方式,而且还是通过第三方插件拓展实现。
如果你要使用的 MCP Server 不支持 sse,你也可以通过 mcp-proxy 工具来实现将 stdio 转换为 sse 实现,再继续调用即可。
如何部署 1Panel MCP Server

官方仓库:1Panel MCP Server
在官方仓库中,提到了如何启用 sse 模式:
Dify 与 MCP:开启智能体应用开发新征程-2.png


于是我们只需要简单的通过如下 docker-compose.yaml 即可启动 1Panel MCP Server:
  1. services:
  2.   core:
  3.     command: ./mcp-1panel -transport sse -addr "http://localhost:8000"
  4.     environment:
  5.       - PANEL_HOST=http://<1Panel-Access-Address>:<Port>
  6.       - PANEL_ACCESS_TOKEN=<1Panel-Access-Token>
  7.       - TZ=Asia/Shanghai
  8.     image: 1panel/1panel-mcp-server:latest
  9.     ports:
  10.       - 8000:8000
  11.     restart: unless-stopped
复制代码
运行编排,若容器日志输出 2025/04/10 03:00:23 SSE server listening on :8000 的字样则代表 1Panel MCP Server 部署完成。
在 Dify 中调用

首先,在 Dify 插件市场安装 Agent 策略(支持 MCP 工具)插件。
Dify 与 MCP:开启智能体应用开发新征程-3.png


在 Dify 工作室中,新建 Chatflow 类型的工作流应用,之后在其中添加一个 Agent 节点,Agent 策略 选择 Function Calling。
Dify 与 MCP:开启智能体应用开发新征程-4.png


此处由于插件限制,需要在工具列表中指定至少一个工具进去,这里随便指派了一个获取当前时间的工具。然后,设定 MCP 服务配置如下:
  1. {
  2.   "mcp-1panel-anything-you-want": {
  3.     "url": "http://<Your-MCP-Server-Addr>:<Port>/sse"
  4.   }
  5. }
复制代码
如果你有多个 MCP Server,可以在此处配置多个,比如:
  1. {
  2.   "mcp-1panel-1": {
  3.     "url": "http://<Your-MCP-Server-Addr>:<Port>/sse"
  4.   },
  5.   "mcp-1panel-2": {
  6.     "url": "http://<Your-MCP-Server-Addr>:<Port>/sse"
  7.   }
  8. }
复制代码
但是请注意,此处的例子是不恰当的,因为两个 MCP Server 是相同的操作指令,在调用时可能会出现混乱。更推荐的方式是将单一功能重新封装为 Dify 工作流,再通过工作流工具的方式给其他应用调用。
在 指令 部分,Agent 策略(支持 MCP 工具)插件会通过 sse 自发现 MCP 指令,所以这里随便填个 . 避免 Dify 报错即可。
在 查询 部分,填写系统用户输入变量 {sys.query},如果你需要在后续通过 Workflow 进行封装的话,则可以直接设定为具体调用指令如:“获取1Panel服务器概览页状态”。
偶尔会出现报 “最大迭代次数”不能为空 的错误,此时重新输入一下最大迭代次数即可。
之后就可以进行测试了:
Dify 与 MCP:开启智能体应用开发新征程-5.png


我这里确实没有安装任何应用,所以回答完全没有问题。
拓展内容

1Panel MCP Server 调用报错?

检查你 docker-compose.yaml 的 PANEL_HOST=http://<1Panel-Access-Address>:<Port> 有没有正确设置,一定要注意 = 后面的内容不能用双引号括起来,同时 1Panel API 白名单设置允许 MCP Server 访问。如果你不确定,可以先将白名单设为 0.0.0.0/0 来暂时允许全部 IP 访问 API 来进行测试,切记测试完毕后禁用掉 0.0.0.0/0 白名单
Dify 没有回复内容?

检查你最后的“直接回复”节点是不是设置为 Agent 节点的输出文本。
一、大模型风口已至:月薪30K+的AI岗正在批量诞生

Dify 与 MCP:开启智能体应用开发新征程-6.png


2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K(数据来源:BOSS直聘报告)
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
Dify 与 MCP:开启智能体应用开发新征程-7.jpeg


二、如何学习大模型 AI ?

Dify 与 MCP:开启智能体应用开发新征程-8.jpeg
Dify 与 MCP:开启智能体应用开发新征程-9.jpeg
Dify 与 MCP:开启智能体应用开发新征程-10.jpeg
Dify 与 MCP:开启智能体应用开发新征程-11.jpeg
Dify 与 MCP:开启智能体应用开发新征程-12.jpeg
Dify 与 MCP:开启智能体应用开发新征程-13.jpeg
Dify 与 MCP:开启智能体应用开发新征程-14.jpeg
回复

使用道具 举报

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

本版积分规则

发布主题
阅读排行更多+

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