项目简介
FanManager MCP 服务器是一个强大的工具,旨在通过智能代理(如大型语言模型)自动管理戴尔PowerEdge服务器的风扇速度。它能够监控CPU温度,并根据预设的温度范围和风扇速度参数,动态调整服务器风扇,以保持最佳运行状态和降低噪音。此服务器通过Model Context Protocol (MCP) 标准化接口,允许LLM客户端轻松集成并调用其功能。
主要功能点
- 获取CPU温度: 实时读取服务器的CPU核心温度。
- 设置风扇速度: 精确控制服务器风扇的转速(0-100%)。
- 自动风扇调速: 根据CPU温度自动调节风扇速度,支持自定义温度阈值、风扇速度范围和调速强度。
- 标准化接口: 通过MCP协议提供统一的JSON-RPC接口,便于LLM客户端进行功能调用。
- 多传输协议支持: 支持Stdio、HTTP和SSE等多种通信方式。
安装步骤
- 安装Python包: 确保您的系统已安装Python,然后通过pip安装'fan-manager'包:
python -m pip install fan-manager - Docker部署(推荐):
- 使用Docker Compose:
创建一个'docker-compose.yml'文件,并配置'fan-manager-mcp'服务。请根据您的需求,通过环境变量(例如:'INTENSITY', 'COLD'等)或直接在'environment'部分设置参数。
保存后,在'docker-compose.yml'文件所在目录运行以下命令启动服务:--- 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-stoppeddocker-compose up --build -d
- 使用Docker Compose:
创建一个'docker-compose.yml'文件,并配置'fan-manager-mcp'服务。请根据您的需求,通过环境变量(例如:'INTENSITY', 'COLD'等)或直接在'environment'部分设置参数。
服务器配置 (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': 温度对风扇速度影响的强度因子。
信息
分类
桌面与硬件