本项目是基于Model Context Protocol (MCP) 的服务器实现,专注于集成JuiceFS文件系统和Kubernetes环境的诊断及操作工具。它允许兼容MCP协议的LLM客户端通过标准接口调用这些工具,获取系统状态、运行诊断命令或查询日志,从而增强LLM在存储和容器领域的分析和交互能力。

主要功能点

  • JuiceFS 工具集成: 提供调用JuiceFS命令行工具的能力,如查找挂载点、运行性能测试、获取实时统计信息、查看访问日志、获取挂载参数等。
  • Kubernetes CSI 工具集成: 提供查询Kubernetes集群信息的能力,特别是与JuiceFS CSI驱动相关的资源,如获取应用Pod使用的JuiceFS PV、查找JuiceFS CSI Node Pod、获取Mount Pod日志、获取Pod或Node信息等。
  • 问题排查流程指引: 通过特定工具为LLM提供JuiceFS CSI挂载问题的诊断流程建议。
  • 多传输协议支持: 支持Stdio和SSE等传输协议与MCP客户端进行通信。

安装步骤

  1. 克隆仓库到本地。
  2. 确保已安装Go语言环境和相关的构建工具。
  3. 在项目根目录下执行构建命令:
    make build
  4. 构建成功后,将在 'bin/' 目录下生成可执行文件 'juicefs-mcp-server'。

服务器配置

MCP客户端需要知道如何启动并连接到此服务器。通常,这需要配置服务器的启动命令和参数。以下是此服务器所需的配置信息:

{
  "name": "juicefs-mcp-server",
  "command": "bin/juicefs-mcp-server",
  "args": [
    "--t", "<transport>",  // 指定传输协议,可选值: "stdio", "sse"。如果选择"sse",通常需要指定"--sseurl"
    "--sseurl", "<sse_url>", // 如果传输协议是"sse",指定SSE服务器监听的地址和端口,例如 "0.0.0.0:8088"
    "--debug", "<bool>",   // 是否启用调试模式,可选值: "true", "false"
    "--sysnamespace", "<namespace>", // JuiceFS CSI driver所在的Kubernetes命名空间,默认为 "kube-system"
    "--handler", "<handler_kind>" // 选择处理程序类型,可选值: "juicefs" (原生命令行), "csi" (Kubernetes CSI)。默认为 "csi"
  ],
  "env": {}, // 可选的环境变量
  "cwd": "" // 可选的当前工作目录
}

参数说明:

  • '--t': 指定服务器使用的传输协议。对于Stdio协议,服务器会通过标准输入输出与客户端通信;对于SSE协议,服务器会监听一个HTTP地址。
  • '--sseurl': 仅在 '--t' 设置为 'sse' 时有效,指定SSE服务器监听的IP地址和端口。
  • '--debug': 如果设置为 'true',服务器将输出更详细的调试日志信息。
  • '--sysnamespace': 指定JuiceFS CSI Driver相关Pod所在的Kubernetes命名空间,用于CSI工具的查询。
  • '--handler': 选择服务器集成的工具集。'juicefs' 对应直接调用本地JuiceFS命令的工具;'csi' 对应调用Kubernetes API诊断CSI挂载问题的工具。

基本使用方法

  1. 启动服务器: 根据上述配置,通过兼容MCP协议的客户端启动 'juicefs-mcp-server' 进程。
  2. 能力声明: 客户端连接成功后,服务器会向客户端声明其支持的工具列表(包括工具名称、描述和参数定义)。
  3. 调用工具: LLM客户端根据用户需求和服务器声明的工具列表,选择合适的工具并构建MCP请求(例如,CallTool请求)发送给服务器。
  4. 处理请求: 服务器接收请求,执行对应的内部逻辑(例如,运行命令行、调用Kubernetes API),并将结果通过MCP响应返回给客户端。
  5. LLM交互: LLM客户端接收到工具执行结果后,将其整合到对话上下文中,生成对用户的自然语言回复。

例如,LLM客户端可以通过调用 'get_juicefs_pv_of_app_pod' 工具,并提供应用Pod的名称和命名空间参数,来获取该Pod关联的JuiceFS PersistentVolume (PV) 信息。服务器执行该工具对应的处理逻辑,查询Kubernetes API并将结果返回给客户端,LLM即可根据这些信息辅助用户排查存储问题。

信息

分类

数据库与文件