本项目是基于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客户端进行通信。
安装步骤
- 克隆仓库到本地。
- 确保已安装Go语言环境和相关的构建工具。
- 在项目根目录下执行构建命令:
make build - 构建成功后,将在 '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挂载问题的工具。
基本使用方法
- 启动服务器: 根据上述配置,通过兼容MCP协议的客户端启动 'juicefs-mcp-server' 进程。
- 能力声明: 客户端连接成功后,服务器会向客户端声明其支持的工具列表(包括工具名称、描述和参数定义)。
- 调用工具: LLM客户端根据用户需求和服务器声明的工具列表,选择合适的工具并构建MCP请求(例如,CallTool请求)发送给服务器。
- 处理请求: 服务器接收请求,执行对应的内部逻辑(例如,运行命令行、调用Kubernetes API),并将结果通过MCP响应返回给客户端。
- LLM交互: LLM客户端接收到工具执行结果后,将其整合到对话上下文中,生成对用户的自然语言回复。
例如,LLM客户端可以通过调用 'get_juicefs_pv_of_app_pod' 工具,并提供应用Pod的名称和命名空间参数,来获取该Pod关联的JuiceFS PersistentVolume (PV) 信息。服务器执行该工具对应的处理逻辑,查询Kubernetes API并将结果返回给客户端,LLM即可根据这些信息辅助用户排查存储问题。
信息
分类
数据库与文件