gpu_info
GPU name, driver version, and CUDA version for each device.
Takes no parameters.

io.github.moezdilPublished by GitHub account moezdilv0.2.2Updated Nov 5, 2026
MCP server for GPU monitoring: nvidia-smi, VRAM, utilization, temperature
Local MCP server that exposes NVIDIA GPU metrics — name, driver, CUDA, VRAM, utilization and temperature — so an assistant can report GPU status in chat.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
mcp-name: io.github.moezdil/mcp-gpu-server
An MCP server that exposes NVIDIA GPU metrics as tools. Once connected, any MCP-compatible client can query your GPU status in real time directly from a conversation.
Instead of running nvidia-smi manually, you ask your AI assistant and it calls these tools automatically:
Example response from gpu_stats:
Queries NVML (pynvml) directly when available. Falls back to nvidia-smi subprocess if NVML is not accessible. Returns clean JSON in both cases. The nvidia-smi query does not include the CUDA version, so cuda is null on that path.
The package moved from mcp-gpu-server to gpu-server on PyPI in 0.2.1. The old name is frozen at 0.1.3, which does not start with mcp 2.x. The mcp-gpu-server command still works, and since 0.2.2 gpu-server does too.
Listed on the official MCP Registry as io.github.moezdil/mcp-gpu-server.
Add this to your MCP client config file:
Or without installing anything, using uv:
Release 0.2.2 was installed from PyPI into a clean virtual environment on a Linux host and tested against a real GPU on 2026-10-21.
Install the published package and run the GPU integration test:
Result: all 37 checks passed. They exercise the NVML path; the nvidia-smi fallback is only checked for presence, not parsed.
Then call every tool through a real MCP client over stdio:
Saved as e2e.py and run with venv/bin/python e2e.py venv/bin/gpu-server. Result: the client and server negotiated protocol 2026-07-28, all five tools are listed as read-only, and every call returned structured content without errors:
Python 3.10 or higher, MCP Python SDK 2.x. NVIDIA GPU with drivers installed on the host machine.
Source: README.md at commit a52bdcf
GPU name, driver version, and CUDA version for each device.
Takes no parameters.
GPU core and memory utilization percentage for each device.
Takes no parameters.
VRAM total, used, free (MiB) and utilization % for each device.
Takes no parameters.
Core temperature in °C for each device.
Takes no parameters.
Full snapshot: info, VRAM, utilization, and temperature for every device.
Takes no parameters.
80% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
Declare a license in the repository or the registry entry.
gpu_info GPU name, driver version, CUDA versiongpu_utilization core utilization % and memory controller busy %gpu_vram total, used, free VRAM in MiB and usage %gpu_temperature GPU core temperature in Celsiusgpu_stats everything above in one call{ "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 } }]}pip install gpu-server{ "mcpServers": { "gpu": { "command": "mcp-gpu-server" } }}{ "mcpServers": { "gpu": { "command": "uvx", "args": ["gpu-server"] } }}uv run pytest tests/test_server.py # no GPU neededuv run python tests/test_gpu.py # on a GPU hostpython3 -m venv venvvenv/bin/pip install gpu-server==0.2.2git clone --depth 1 https://github.com/moezdil/mcp-gpu-server.git repovenv/bin/python repo/tests/test_gpu.pyimport anyio, json, sysfrom 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)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}}]}