mcpField
G
GPU Server

GPU Server

本地服务
github.com云与基础设施01 周前更新

关于 GPU Server

GPU Server 是一个向 MCP 客户端提供 NVIDIA GPU 实时指标的服务,适合需要在对话中查看 GPU 状态的用户。它通过 NVML 获取数据,并在不可用时回退到 nvidia-smi。

主要功能

  1. 01查询 GPU 名称及驱动和 CUDA 版本
  2. 02查看核心与内存控制器利用率
  3. 03读取显存总量、使用量和余量
  4. 04查询 GPU 温度
  5. 05一次获取完整 GPU 统计

适用场景

  1. 01在对话中查看 GPU 实时状态
  2. 02检查 GPU 利用率和温度
  3. 03核对显存使用情况

MCP 相关

向 MCP 客户端暴露五个只读 GPU 指标工具。客户端可通过 stdio 调用;数据由 NVML 获取,必要时改用 nvidia-smi。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"moezdil-mcp-gpu-server": {
"command": "uvx",
"args": [
"gpu-server"
]
}
}
}
启动命令uvx gpu-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypigpu-server0.2.2

工具

5

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

mcp-name: io.github.moezdil/mcp-gpu-server

mcp-gpu-server

PyPI

一个可将 NVIDIA GPU 指标作为工具提供的 MCP 服务。连接后,任何兼容 MCP 的客户端都可以直接在对话中实时查询 GPU 状态。

功能

无需手动运行 nvidia-smi,只需询问 AI 助手,它便会自动调用这些工具:

gpu_info         GPU 名称、驱动版本、CUDA 版本
gpu_utilization  核心利用率百分比和内存控制器繁忙百分比
gpu_vram         VRAM 总量、已用量、可用量(MiB)及使用百分比
gpu_temperature  GPU 核心温度(摄氏度)
gpu_stats        一次调用获取以上所有信息

gpu_stats 的响应示例:

{
  "count": 1,
  "gpus": [{
    "index": 0,
    "name": "NVIDIA L40S",
    "driver": "580.126.09",
    "cuda": "13.0",
    "temp_c": 29,
    "gpu_pct": 0,
    "mem_pct": 0,
    "vram": {
      "total_mib": 46068,
      "used_mib": 610,
      "free_mib": 45457,
      "pct": 1.3
    }
  }]
}

工作原理

如果 NVML(pynvml)可用,则直接查询 NVML;如果无法访问 NVML,则改用 nvidia-smi 子进程。两种情况下都会返回格式整洁的 JSON。nvidia-smi 查询不包含 CUDA 版本,因此在这种情况下,cuda 的值为 null。

安装

pip install gpu-server

该软件包于 PyPI 上从 mcp-gpu-server 更名为 gpu-server,更名发生在 0.2.1 版。旧名称固定在 0.1.3 版,无法与 mcp 2.x 启动。mcp-gpu-server 命令仍然可用;从 0.2.2 版开始,gpu-server 命令也可用。

该项目已作为 io.github.moezdil/mcp-gpu-server 收录在官方 MCP Registry 中。

连接到 MCP 客户端

将以下内容添加到 MCP 客户端配置文件中:

{
  "mcpServers": {
    "gpu": {
      "command": "mcp-gpu-server"
    }
  }
}

或者无需安装任何内容,使用 uv:

{
  "mcpServers": {
    "gpu": {
      "command": "uvx",
      "args": ["gpu-server"]
    }
  }
}

运行测试

uv run pytest tests/test_server.py   # 无需 GPU
uv run python tests/test_gpu.py      # 在配备 GPU 的主机上

在真实硬件上测试

2026-10-21,在 Linux 主机上的干净虚拟环境中从 PyPI 安装了 0.2.2 版,并使用真实 GPU 进行了测试。

GPUNVIDIA GeForce RTX 3090,24 GB
驱动 / CUDA580.178.04 / 13.0
Python3.14.4
软件包gpu-server 0.2.2、mcp 2.3.0、nvidia-ml-py 13.615.71

安装已发布的软件包并运行 GPU 集成测试:

python3 -m venv venv
venv/bin/pip install gpu-server==0.2.2
git clone --depth 1 https://github.com/moezdil/mcp-gpu-server.git repo
venv/bin/python repo/tests/test_gpu.py

结果:37 项检查全部通过。这些检查会执行 NVML 路径;对 nvidia-smi 回退路径只检查是否存在,不会解析其输出。

然后,通过真实 MCP 客户端使用 stdio 调用每个工具:

import anyio, json, sys
from mcp import Client, StdioServerParameters

async def main():
    async with Client(StdioServerParameters(command=sys.argv[1])) as c:
        print("protocol:", c.protocol_version)
        for t in (await c.list_tools()).tools:
            r = await c.call_tool(t.name, {})
            print(t.name, t.annotations.read_only_hint, json.dumps(r.structured_content))

anyio.run(main)

将代码保存为 e2e.py,并使用 venv/bin/python e2e.py venv/bin/gpu-server 运行。结果:客户端和服务端协商使用协议 2026-07-28,列出的五个工具均标记为只读,且每次调用都返回了结构化内容,没有发生错误:

gpu_stats {"count": 1, "gpus": [{"index": 0, "name": "NVIDIA GeForce RTX 3090",
  "driver": "580.178.04", "cuda": "13.0", "temp_c": 42, "gpu_pct": 0, "mem_pct": 0,
  "vram": {"total_mib": 24576, "used_mib": 451, "free_mib": 24124, "pct": 1.8}}]}

要求

Python 3.10 或更高版本,MCP Python SDK 2.x。主机上需安装 NVIDIA GPU 驱动。

链接

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。