项目简介

FanManager MCP 服务器是一个强大的工具,旨在通过智能代理(如大型语言模型)自动管理戴尔PowerEdge服务器的风扇速度。它能够监控CPU温度,并根据预设的温度范围和风扇速度参数,动态调整服务器风扇,以保持最佳运行状态和降低噪音。此服务器通过Model Context Protocol (MCP) 标准化接口,允许LLM客户端轻松集成并调用其功能。

主要功能点

  • 获取CPU温度: 实时读取服务器的CPU核心温度。
  • 设置风扇速度: 精确控制服务器风扇的转速(0-100%)。
  • 自动风扇调速: 根据CPU温度自动调节风扇速度,支持自定义温度阈值、风扇速度范围和调速强度。
  • 标准化接口: 通过MCP协议提供统一的JSON-RPC接口,便于LLM客户端进行功能调用。
  • 多传输协议支持: 支持Stdio、HTTP和SSE等多种通信方式。

安装步骤

  1. 安装Python包: 确保您的系统已安装Python,然后通过pip安装'fan-manager'包:
    python -m pip install fan-manager
  2. Docker部署(推荐):
    • 使用Docker Compose: 创建一个'docker-compose.yml'文件,并配置'fan-manager-mcp'服务。请根据您的需求,通过环境变量(例如:'INTENSITY', 'COLD'等)或直接在'environment'部分设置参数。
      ---
      services:
        fan-manager-mcp:
          image: knucklessg1/fan-manager:latest
          container_name: server_fan_speed
          privileged: true # 必需,以便访问/dev/ipmi0
          environment:
            MODE: "fan-manager-mcp"
            HOST: 0.0.0.0
            PORT: 8030
            TRANSPORT: "http" # 可选值: stdio, http, sse。指定MCP服务器的通信协议。
            # 以下参数用于配置自动风扇调速的默认行为,可选。
            # INTENSITY: 5    # 温度调速强度,影响风扇速度对温度变化的响应敏感度 (0-10)
            # COLD: 50        # CPU温度的最低阈值,低于此温度风扇将降至最低速度 (摄氏度)
            # WARM: 80        # CPU温度的最高阈值,高于此温度风扇将升至最高速度 (摄氏度)
            # SLOW: 5         # 风扇的最低转速百分比 (0-100)
            # FAST: 100       # 风扇的最高转速百分比 (0-100)
            # POLL_RATE: 24   # CPU温度轮询间隔 (秒)
          volumes:
            - /dev/ipmi0:/dev/ipmi0 # 必须挂载,用于与服务器硬件(IPMI)交互
          restart: unless-stopped
      保存后,在'docker-compose.yml'文件所在目录运行以下命令启动服务:
      docker-compose up --build -d

服务器配置 (MCP客户端配置)

MCP客户端需要一个配置文件(通常是'mcp.json')来连接到FanManager MCP服务器。以下是配置示例及其参数说明:

{
  "mcpServers": {
    "fan-manager": {
      "command": "uv",             // 启动MCP服务器的执行命令。这里指使用'uv'工具。
      "args": [                    // 传递给启动命令的参数列表。
        "run",
        "--with", "fan-manager",
        "fan-manager-mcp"
        // 可以在此处添加更多参数,以自定义MCP服务器的启动方式,例如:
        // "--transport", "http",  // 指定MCP服务器的通信协议 (可选值: stdio, http, sse)。默认是stdio。
        // "--host", "0.0.0.0",    // 在HTTP/SSE模式下,MCP服务器监听的IP地址。
        // "--port", "8030"        // 在HTTP/SSE模式下,MCP服务器监听的端口号。
      ],
      "timeout": 200000            // MCP客户端等待MCP服务器启动并响应的最长时间(毫秒)。
    }
  }
}
  • 'fan-manager': 这是您在MCP客户端中用于识别和调用此服务器的唯一名称。
  • 'command': 指定用于启动FanManager MCP服务器的可执行命令。
  • 'args': 一个列表,包含启动MCP服务器时需要传递的所有命令行参数。您可以根据需要添加'--transport', '--host', '--port'等参数来控制服务器的通信方式。
  • 'timeout': 客户端等待MCP服务器完成启动并准备好接收请求的最长时间。

基本使用方法

一旦MCP服务器启动并被MCP客户端正确配置,LLM客户端就可以通过调用以下工具与服务器交互,实现风扇管理功能:

  • 'get_temperature()': 用于获取服务器当前的CPU温度。
  • 'set_fan_speed(fan_level: int)': 用于设置服务器风扇的指定转速。'fan_level'是一个介于0到100之间的整数,代表风扇速度的百分比。
  • 'mcp_automatic_fan_speed(minimum_fan_speed: float, maximum_fan_speed: float, minimum_temperature: float, maximum_temperature: float, temperature_power: int)': 启动自动风扇调速功能。您可以选择性地提供参数来微调其行为,所有参数都有默认值:
    • 'minimum_fan_speed': 自动调速时的最低风扇转速百分比。
    • 'maximum_fan_speed': 自动调速时的最高风扇转速百分比。
    • 'minimum_temperature': CPU温度的下限阈值。
    • 'maximum_temperature': CPU温度的上限阈值。
    • 'temperature_power': 温度对风扇速度影响的强度因子。

信息

分类

桌面与硬件