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

使用Dify+fastmcp 实现mcp服务,内含详细步骤与源码

文章目录

    • 概要
    • 整体架构流程
    • 技术细节
      • 1.配置dify
        • 1.1 添加节点
        • 1.2 Agent节点配置
        • 1.3 Agent策略安装与配置
        • 1.4 Agent mcp服务配置
        • 1.5 查询配置
      • 2. 基于fastmcp进行mcp服务器搭建
        • 2.1 创建server.py函数
        • 2.2 启动mcp服务器
        • 2.3 进入dify进行测试
      • 小结

概要

使用dify+python-fastmcp完成mcp服务器,以实现运维智能客服免知识库进行运维数据获取与分析。

整体架构流程

问题: 配置本地知识库与dify知识库都是不小的工作量,而机器运维场景需要获取实时信息。

基本流程: 使用mcp服务器实现大模型实时根据接口返回数据进行分析,生成分析结果与建议再返回给用户。

场景详情: 本文给出一个运维使用场景,用户可以实时查询某台机器cpu,内存,磁盘使用情况。通过mcp服务器进行远程机器指令调用,将结果返回给agent,最后大模型根据返回结果自行整理语言进行返回

实现效果如下图:

在这里插入图片描述

技术细节

1.配置dify

如下图所示,简单在dify中配置mcp服务器配置信息,将dify作为mcp客户端使用。

1.1 添加节点

在dify中创建一个chatflow,然后添加Agent结点。
在这里插入图片描述

1.2 Agent节点配置

从这里进入Marketplace。如果发现自己dify没有Agent或者没有MarketPlace的,可能是dify版本过低。这里使用dify1.2版本。
在这里插入图片描述

1.3 Agent策略安装与配置

在Marketplace中安装Agent 策略
在这里插入图片描述
随后在Agent策略中选择刚刚安装的Agent策略,选择FunctionCalling支持MCP工具
在这里插入图片描述

1.4 Agent mcp服务配置

随后配置工具与MCP服务器配置,工具个人测试下来是可选配的。
后续再看看具体是什么功能。因为我把工具无论是删除还是禁用,也不影响mcp服务器的调用。如果有知道的大佬,可以评论区告知一下。
在这里插入图片描述

1.5 查询配置

查询这里就和其他的节点配置类似,选择开始的query就行。
在这里插入图片描述

2. 基于fastmcp进行mcp服务器搭建

环境:python >= 3.10 已安装fastmcp

2.1 创建server.py函数

使用FastMCP创建一个服务器,使用@mac_server.tool进行工具创建。
填写description进行描述,用来使用dify大模型更容易解析语言去定位使用哪个工具。
RemoteQuickHandler是使用paramiko实现远程调用目标机器类。
main函数中设置transport为sse对应上方dify agent配置中的transport 值
其他几个tool函数,是实现获取内存,cpu,磁盘信息的功能。


from fastmcp import FastMCP
import psutil
from remote_excute import RemoteQuickHandler
# 创建一个MCP服务器实例
mcp_server = FastMCP(name = "My MCP Server",port=8002 , host = "0.0.0.0")#path = "/xxx" 这里可以自行配置path,不填默认sse# 定义一个工具
@mcp_server.tool(description = "这是一个计算两个数加法函数")
def add(a: int, b: int) -> int:return a + b@mcp_server.tool(description = "这是一个获取当前服务器CPU使用率以及前10高CPU进程信息的函数")
def get_cpu_usage() -> dict:"""获取当前服务器CPU总使用率及前10高CPU进程信息"""# 1. 获取整体CPU使用率(间隔0.1秒采样)total_cpu = psutil.cpu_percent(interval=0.1)# 2. 获取所有进程的CPU使用率(需处理权限问题)processes = []for proc in psutil.process_iter(['pid', 'name', 'cpu_percent']):try:# 进程CPU使用率需要主动更新(部分系统需要)proc.cpu_percent()  # 第一次调用初始化cpu_pct = proc.cpu_percent(interval=0.1)  # 第二次调用获取实际值processes.append({"pid": proc.info['pid'],"name": proc.info['name'],"cpu_percent": cpu_pct})except (psutil.NoSuchProcess, psutil.AccessDenied):# 跳过已结束或无权限访问的进程continue# 3. 按CPU使用率降序排序,取前10top_processes = sorted(processes, key=lambda x: x['cpu_percent'], reverse=True)[:10]# 返回结构化数据return {"total_cpu_usage": total_cpu,"top_10_cpu_processes": top_processes}@mcp_server.tool(description = "这是一个查询目标服务器CPU使用率以及前10高CPU进程信息的函数")
def get_host_cpu_usage(host_ip: str) -> dict:"""获取目标服务器C
http://www.lryc.cn/news/588670.html

相关文章:

  • Mac IDEA启动报错:Error occurred during initialization of VM
  • Twisted study notes[1]
  • [附源码+数据库+毕业论文+开题报告]基于Spring+MyBatis+MySQL+Maven+jsp实现的车辆运输管理系统,推荐!
  • etcd自动压缩清理
  • easy-ui中的相对路径和绝对路径问题
  • 现代CSS实战:用变量与嵌套重构可维护的前端样式
  • 【GPIO】从STM32F103入门GPIO寄存器
  • 腿姐政治笔记唯物辩证法(2)(12356)
  • 面试遇到的问题
  • 使用JS编写用户信息采集表单
  • 利用android studio,对图片资源进行二次压缩
  • 网络编程-epoll模型/udp通信
  • Node.js 中http 和 http/2 是两个不同模块对比
  • AutoGPT vs BabyAGI:自主任务执行框架对比与选型深度分析
  • python的形成性考核管理系统
  • 1.easypan-登录注册
  • P3842 [TJOI2007] 线段
  • 基于多智能体强化学习的医疗检索增强生成系统研究—MMOA-RAG架构设计与实现
  • 编程技能:多文件编译
  • c++图形题练习程序
  • LVS三种模式实战
  • 图机器学习(6)——图自编码器
  • 【电脑】显卡(GPU)的基础知识
  • 【轨物方案】当补贴退潮,光伏电站如何回归价值本质?
  • MySQL数据库----函数
  • 【PTA数据结构 | C语言版】二叉树前序序列化
  • 跨平台游戏引擎 Axmol-2.7.1 发布
  • git起步
  • 微信小程序翻书效果
  • 《汇编语言:基于X86处理器》第8章 高级过程(1)