hwprobe-mcp
hwprobe-mcp is an MCP server that gives AI agents deep hardware inventory and live sensor telemetry about the host machine through clean, JSON-returning tools.
Tools & Capabilities:
hardware_inventory— Static deep hardware details: CPU model/cores/architecture/cache, total RAM and DIMM layout, disk models/serials/sizes, GPUs, motherboard/BIOS, and OS/platform info.live_sensors— Real-time snapshot of CPU/component temperatures, fan RPM, battery status, voltages, and power consumption (via lm-sensors on Linux, plus NVIDIA GPU telemetry).cpu_status— CPU identity with live per-core utilization percentages, per-core frequencies, system load averages, and core temperatures.gpu_status— NVIDIA GPU inventory and live telemetry: name, driver version, temperature, utilization, power draw, clock speeds, and memory usage.disk_health— Per-disk SMART data: model, serial, firmware, capacity, temperature, SMART pass/fail status, power-on hours, and power cycle counts.system_snapshot— A single call that combines all of the above into one comprehensive report.check_dependencies— Reports which optional backend tools (e.g.,nvidia-smi,smartctl,lm-sensors) are installed or missing, what capabilities they unlock, and provides exact install commands.
Additional Highlights:
Works across Linux, macOS, and Windows with graceful degradation — missing tools or insufficient privileges produce
warnings[]entries rather than crashes.Returns a consistent JSON envelope with
ok,platform,sources,warnings, anddatafields.
Provides GPU inventory and live telemetry (temperature, utilization, power, clocks, memory) via nvidia-smi.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hwprobe-mcp check disk SMART health and current GPU power draw"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hwprobe-mcp
A hardware probe for AI agents, over MCP.
hwprobe-mcp is a Model Context Protocol server that gives an
AI agent (any MCP client) both deep hardware inventory and
live sensor telemetry through a small set of clean, JSON-returning tools.
Most "system monitor" MCP servers are thin psutil wrappers that only report utilization. hwprobe-mcp
deliberately fuses three layers so an agent gets the whole picture in one place:
Layer | Backends |
Cross-platform core |
|
Rich Linux sensors |
|
Deep inventory |
|
Devices |
|
Everything degrades gracefully: a missing tool, an absent GPU, or a lack of root privileges becomes a
warnings[] entry, never a crash.
Tools
MCP tool | What it returns |
| Static deep inventory — CPU model/cores/arch/cache, RAM + DIMM layout, disks (model/serial/size), GPUs, motherboard/BIOS, OS/platform. |
| Live snapshot — CPU/component temperatures, fan RPM, battery, plus voltages/power (via lm-sensors) and NVIDIA GPU temp/power/util. |
| CPU identity + live per-core utilization %, per-core frequency, load average, core temperatures. |
| GPU inventory + live telemetry (NVIDIA via |
| Per-disk SMART: model, serial, firmware, capacity, temperature, SMART pass/fail, power-on hours, power cycles. |
| Everything above in a single call — the "tell me everything about this machine" tool. |
| Fleet view across every tailnet host, a ranked "where should this run" answer, and Claude account usage — see Fleet below. |
| Which optional backends are installed vs missing, what each unlocks, and the exact command to install any missing one (auto-detects the package manager). |
Every tool returns a consistent envelope:
{
"ok": true,
"platform": "Linux",
"sources": ["psutil", "lm-sensors"],
"warnings": ["nvidia-smi: NVIDIA driver not loaded"],
"data": { "...": "..." }
}Related MCP server: DivLens MCP
Install
Requires Python 3.10+.
# from source (until published to PyPI)
git clone git@github.com:notreallycheeks/hwprobe-mcp.git
cd hwprobe-mcp
pip install -e .For the fullest data on Linux, install the native helpers (all optional):
sudo apt install lm-sensors smartmontools pciutils util-linux dmidecode
sudo sensors-detect --auto # one-time, sets up lm-sensorsNVIDIA GPU telemetry uses the
nvidia-smibinary shipped with the NVIDIA driver — there is no pip extra to install.
Checking what's installed
hwprobe works with whatever is present and degrades gracefully — but it will also tell you what's missing and how to install it. Run the built-in doctor:
hwprobe-mcp --doctor...or have your agent call the check_dependencies tool. Each missing backend comes with the
exact install command for your platform's package manager, and the JSON-returning tools embed the
same hint in their warnings.
Two backends need elevated privileges to return data — smartctl (disk SMART) and
dmidecode (motherboard/BIOS/DIMM). Run the server as root, or grant scoped passwordless
sudo just for smartctl so disk_health works from the unprivileged server:
echo "$USER ALL=(root) NOPASSWD: $(command -v smartctl)" | sudo tee /etc/sudoers.d/hwprobe-smartctl
sudo chmod 0440 /etc/sudoers.d/hwprobe-smartctlhwprobe automatically uses sudo -n smartctl when it isn't root, so no code changes are needed.
Fleet: every machine on your tailnet, in one view
hwprobe-fleet turns hwprobe into a fleet monitor so an AI agent can see which machine is
busy and which is idle before it delegates work. Each host runs a tiny agent; a hub (or any
agent) aggregates them; agents read the result over MCP, CLI or HTTP.
Piece | Command | What it does |
Agent |
| Serves this host's CPU %, RAM, disk, GPU and Claude usage on |
Hub |
| Collects reports on |
Client |
| Table / ranked recommendation, from the hub or by polling every Tailscale peer directly |
MCP tools |
| On the hub (HTTP) and in the stdio |
Orca panel |
| Right-sidebar "Fleet" panel in Orca |
Skill |
| Tells Claude Code / Codex agents when and how to consult the fleet |
Claude usage
For every Claude Code account signed in on a host (~/.claude, $CLAUDE_CONFIG_DIR, Orca
managed-account folders), the agent reports email, plan, the 5-hour and 7-day windows,
per-model weekly windows and reset times — the same numbers as Claude Code's /usage — plus
whatever Orca tracks (orca account list --json) when Orca is installed.
Tokens are read only to make that request and never leave the machine.
HOST OS STATUS CPU RAM DISK GPU CLAUDE (5h / 7d / per-model) AGE
alpha* Linux ok 5% 12/64G (19%) 310G free/954G (68% used) RTX 4070 2% me@example.com 5h:93% 7d:31% f:24% 2sInstall the agent on a machine
# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/notreallycheeks/hwprobe-mcp/main/scripts/install-agent.sh | \
HWPROBE_FLEET_HUB=http://hub-host:7790 HWPROBE_FLEET_TOKEN=<token> bash# Windows
$env:HWPROBE_FLEET_HUB='http://hub-host:7790'; $env:HWPROBE_FLEET_TOKEN='<token>'
irm https://raw.githubusercontent.com/notreallycheeks/hwprobe-mcp/main/scripts/install-agent.ps1 | iexBoth create a venv, install this package, write fleet.json, and register a login service
(systemd --user / launchd / Task Scheduler). Leave the hub variables out to run peer-to-peer
only. Everything is per-user; nothing needs root.
Run the hub
See deploy/README.md: docker compose -f deploy/docker-compose.yml up -d
on the machine that stays up, then claude mcp add --transport http fleet-hub http://<host>:7790/mcp --header "Authorization: Bearer <token>"
on every machine. The hub only ever receives connections, so Docker NAT is fine.
Install the Orca panel
This repository is also an Orca plugin catalog (orca-catalog.json). In Orca, open
Settings → Plugins → Add catalog, enter https://github.com/notreallycheeks/hwprobe-mcp.git
and install Fleet, or open
orca://plugins/notreallycheeks.hwprobe-fleet?catalog=https://github.com/notreallycheeks/hwprobe-mcp.git.
Then set the hub URL and token under Settings → Plugins → Fleet. For a new release, commit the
plugin, run orca plugin release-entry orca-plugin and add its entry to the top of releases.
Security model
Agents listen only on loopback and the Tailscale address and refuse non-tailnet source IPs. The hub requires a bearer token (generated on first start if you do not set one) because its Docker port is reachable from every interface of its host. Reports carry hostnames, resource figures and Claude account e-mails/usage — fine for a personal tailnet, so keep the token private.
Use with an MCP client
Add it to your MCP client's server config:
{
"mcpServers": {
"hwprobe": {
"command": "hwprobe-mcp"
}
}
}Then ask your agent things like "what's this machine's CPU and how hot is it right now?" or "check disk SMART health and current GPU power draw."
Try it without an MCP client
--selftest runs every collector and dumps the JSON an agent would see — handy for verifying your
box and for CI:
# from the repo root, before install:
PYTHONPATH=src python -m hwprobe_mcp --selftest | jq .
# or, once installed (pip install -e .):
hwprobe-mcp --selftestPlatform support
Capability | Linux | macOS | Windows |
Inventory (CPU/mem/disk/GPU/OS) | ✅ full | ✅ (system_profiler) | ✅ (CIM/WMI) |
Component temps / fans | ✅ psutil + lm-sensors | ⚠️ limited | ⚠️ needs LibreHardwareMonitor |
Voltages / power | ✅ lm-sensors | ⚠️ | ⚠️ |
Battery | ✅ | ✅ | ✅ |
NVIDIA GPU telemetry | ✅ | — | ✅ |
Disk SMART | ✅ (root) | ✅ (root) | ✅ (admin) |
Note: deep motherboard/BIOS/DIMM inventory (
dmidecode) and full SMART data need root/admin. Without it,hwprobe-mcpreturns everything it can read and flags the rest inwarnings.
Roadmap
Windows deep sensors via a bundled LibreHardwareMonitor bridge
macOS
powermetricspower/thermal integration (opt-in, needs sudo)AMD/Intel GPU telemetry (
rocm-smi,intel_gpu_top)Optional streaming/
subscribetool for continuous sensor samplingPublish to PyPI +
uvx hwprobe-mcp
License
MIT © 2026 notreallycheeks
Available Tools
6 toolscpu_statusA
CPU identity + LIVE load: per-core utilization %, per-core frequency, load average, and core temperatures.
Inputs: no named parameters. Returns: object
disk_healthA
Per-disk SMART health via smartctl: model, serial, firmware, capacity, temperature, SMART pass/fail, power-on hours, power cycles. Full data needs root.
Inputs: no named parameters. Returns: object
gpu_statusA
GPU inventory + LIVE telemetry. NVIDIA via nvidia-smi (name, driver, temp, utilization, power, clocks, memory). Returns a warning if no GPU/driver is present.
Inputs: no named parameters. Returns: object
hardware_inventoryA
Deep STATIC hardware inventory of this machine.
CPU model/cores/arch/cache, RAM total + DIMM layout, disks (model/serial/size),
GPUs, motherboard/BIOS, and OS/platform. Aggregates platform, psutil, and
native tools (lscpu/lsblk/lspci/dmidecode on Linux; system_profiler on macOS;
CIM/WMI on Windows). Motherboard/BIOS/DIMM detail needs root; anything unreadable
is reported in warnings.
Inputs: no named parameters. Returns: object
live_sensorsA
LIVE sensor snapshot right now.
CPU/component temperatures, fan RPM, battery, plus voltages/power via lm-sensors (Linux) and NVIDIA GPU temp/power/utilization when a driver is present.
Inputs: no named parameters. Returns: object
system_snapshotA
EVERYTHING in one call: inventory + live sensors + CPU/GPU/memory/disk/network. The 'tell me everything about this machine' tool.
Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Most tools have distinct focuses: cpu_status on CPU load, disk_health on disk SMART, gpu_status on GPU telemetry, hardware_inventory on static hardware, live_sensors on general sensors, and system_snapshot as an aggregate. Minor overlap exists between cpu_status and live_sensors for CPU temperatures, but descriptions clarify the scope difference.
All tool names use snake_case and follow a noun_noun pattern. Variations in suffixes ('_status', '_health', '_inventory', '_sensors', '_snapshot') are justified by the different data types. The naming is clear and predictable.
With 6 tools, the server focuses on hardware probing and monitoring. Each tool covers a specific subsystem or data type, and the aggregate system_snapshot provides a convenience method. The count is well-sized for the domain.
The set covers CPU, disk, GPU, sensors, and a general inventory comprehensively. A minor gap is the lack of a dedicated network tool; network info is only included in system_snapshot. Otherwise, the surface is complete for hardware diagnostics.
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
Deterministic IT asset registry operated by AI agents over MCP. Agents propose, humans approve.
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Related MCP Servers
- FlicenseBqualityDmaintenanceA lightweight MCP server that provides real-time hardware statistics including CPU, memory, disk, and NVIDIA GPU usage. It enables users to monitor system performance and retrieve comprehensive host machine specifications through a standardized interface.1-
- AlicenseNot gradedqualityCmaintenanceA real-time system diagnostics MCP server that gives AI agents live access to CPU, RAM, disk, network, processes, and hardware health metrics, with zero cloud dependency.7Apache 2.0
- AlicenseAqualityDmaintenanceProvides system hardware information (CPU, memory, storage, etc.) and system status (OS, network, resource usage) via MCP tools.210 npmISC
- AlicenseAqualityDmaintenanceA secure, read-only MCP server for AI-powered system monitoring. It provides real-time OS metrics, config discovery, and safe log tailing to enable autonomous infrastructure audits without shell access risks.41ISC