使用说明

项目简介

本项目是 'go-clusterscheduler' 仓库中的一个示例,展示了如何基于 Model Context Protocol (MCP) 构建一个服务器,以便大型语言模型 (LLM) 客户端能够与 Gridware 集群调度器进行交互。该服务器通过工具 (Tools) 的形式,向 LLM 提供集群的状态信息查询、作业提交和管理等能力,使得 LLM 应用能够智能化地利用集群资源。

主要功能点

  • 集群配置信息查询: 通过 'get_cluster_configuration' 工具,LLM 可以获取完整的集群配置信息,包括主机、队列、用户、项目等,帮助理解集群环境。
  • 作业状态查询: 提供 'qstat' 工具,允许 LLM 查询集群中作业的状态,例如运行中作业、已完成作业的详细信息。
  • 作业会计信息查询: 提供 'qacct' 和 'job_details' 工具,LLM 可以获取已完成作业的资源使用情况和详细的会计信息。
  • 作业提交: 通过 'submit_job' 工具,LLM 可以向集群提交新的作业,并支持 SGE 兼容的命令行参数,实现灵活的作业提交控制。
  • qsub 命令帮助: 提供 'qsub_help' 工具,方便 LLM 获取 'qsub' 命令的完整帮助文档,了解所有可用的作业提交选项。

安装步骤

  1. 安装 Docker: 确保您的系统已安装 Docker。
  2. 安装 Make 工具: 确保您的系统已安装 'make' 工具。
  3. 克隆仓库: 从 GitHub 克隆 'go-clusterscheduler' 仓库到本地。
    git clone https://github.com/hpc-gridware/go-clusterscheduler
    cd go-clusterscheduler
  4. 构建 Docker 容器: 使用 'make build' 命令构建包含 Open Cluster Scheduler 和 Go API 的 Docker 容器。
    make build
  5. 运行单节点集群: 使用 'make run' 命令在 Docker 容器中初始化并运行一个单节点 Open Cluster Scheduler 集群。
    make run

服务器配置

MCP 客户端需要配置以下 JSON 格式信息以连接到 MCP 服务器:

{
  "serverName": "GridwareSchedulerMCP",
  "command": "./describe-mcp",
  "args": [],
  "transport": "sse",
  "baseUrl": "http://localhost:8888"
  // "command": "./describe-mcp"  - MCP服务器的可执行文件启动命令
  // "args": []                     - 启动命令参数,本例中无需参数
  // "transport": "sse"             - 使用 SSE (Server-Sent Events) 传输协议
  // "baseUrl": "http://localhost:8888" - SSE 服务器的基础 URL
}

基本使用方法

  1. 启动 MCP 服务器: 在运行 'make run' 后,MCP 服务器已在 Docker 容器内通过 SSE 协议启动,监听 'http://localhost:8888'。
  2. 配置 MCP 客户端: 在您的 LLM 应用或 MCP 客户端中,配置上述 JSON 信息,指向 'http://localhost:8888' 以连接到 MCP 服务器。
  3. 调用工具: LLM 客户端可以通过 JSON-RPC 协议调用 MCP 服务器提供的工具,例如:
    • 调用 'get_cluster_configuration' 工具获取集群配置信息。
    • 调用 'qstat' 工具查询作业状态,例如 '{"arguments": {"arguments": ["-j", "123"]}}' 查询 Job ID 为 123 的作业信息。
    • 调用 'qacct' 工具查询作业会计信息,例如 '{"arguments": {"arguments": ["-j", "*"]}}' 查询所有已完成作业的会计信息。
    • 调用 'submit_job' 工具提交作业,例如 '{"arguments": {"command": "/path/to/your/job_script.sh", "arguments": ["-q", "all.q"]}}' 提交名为 'job_script.sh' 的作业到 'all.q' 队列。
    • 调用 'qsub_help' 工具获取 'qsub' 命令帮助。

注意: 此 MCP 服务器示例主要用于演示和研究目的。在生产环境中使用前,请根据实际需求进行安全性和稳定性的评估和增强。

信息

分类

AI与计算