Skip to main content
Glama
notreallycheeks

hwprobe-mcp

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

psutil — CPU/mem/disk/net + component temps, fans, battery

Rich Linux sensors

sensors -j (lm-sensors) — temperatures, fan RPM, voltages, power

Deep inventory

lscpu -J, lsblk -O -J, dmidecode, lspci (Linux) · system_profiler -json (macOS) · CIM/WMI (Windows)

Devices

nvidia-smi (GPU inventory + telemetry) · smartctl -j (disk SMART: model, temp, health, hours)

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

hardware_inventory

Static deep inventory — CPU model/cores/arch/cache, RAM + DIMM layout, disks (model/serial/size), GPUs, motherboard/BIOS, OS/platform.

live_sensors

Live snapshot — CPU/component temperatures, fan RPM, battery, plus voltages/power (via lm-sensors) and NVIDIA GPU temp/power/util.

cpu_status

CPU identity + live per-core utilization %, per-core frequency, load average, core temperatures.

gpu_status

GPU inventory + live telemetry (NVIDIA via nvidia-smi: temp, util, power, clocks, memory).

disk_health

Per-disk SMART: model, serial, firmware, capacity, temperature, SMART pass/fail, power-on hours, power cycles.

system_snapshot

Everything above in a single call — the "tell me everything about this machine" tool.

check_dependencies

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-sensors

NVIDIA GPU telemetry uses the nvidia-smi binary 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-smartctl

hwprobe automatically uses sudo -n smartctl when it isn't root, so no code changes are needed.

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 --selftest

Platform 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-mcp returns everything it can read and flags the rest in warnings.

Roadmap

  • Windows deep sensors via a bundled LibreHardwareMonitor bridge

  • macOS powermetrics power/thermal integration (opt-in, needs sudo)

  • AMD/Intel GPU telemetry (rocm-smi, intel_gpu_top)

  • Optional streaming/subscribe tool for continuous sensor sampling

  • Publish to PyPI + uvx hwprobe-mcp

License

MIT © 2026 notreallycheeks

Available Tools

6 tools
cpu_statusA

CPU identity + LIVE load: per-core utilization %, per-core frequency, load average, and core temperatures.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description implies a read-only operation by listing output metrics but does not explicitly state non-destructiveness or any side effects. Adequate for a simple status tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key information ('CPU identity + LIVE load'), no wasted words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simplicity (0 params, output schema present), description fully covers what the tool does. No gaps for an agent to misuse.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist (0 params), so baseline is 4. Description adds value by listing returned data fields, though schema already covers this via output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb (return) and resource (CPU identity + LIVE load) with specific metrics (per-core utilization, frequency, load average, core temperatures). Differentiates from sibling tools which cover other hardware components.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use vs. alternatives. Sibling tool names imply different scopes, but the description does not state use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that full data requires root access, which is a key behavioral trait for a read-only tool. It does not mention side effects or return behavior in non-root cases, but the core permission requirement is addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise lines: the first states the tool's purpose, the second lists fields. It is front-loaded with the key action and includes an important usage note about root. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema likely covering the listed fields, the description is fairly complete. However, it does not clarify behavior when root is unavailable or specify return format, which would enhance completeness for a health-check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the baseline is 4. The description adds meaning by listing the data the tool returns (model, serial, etc.), compensating for the lack of parameters. No additional parameter details are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it provides per-disk SMART health information, listing specific fields like model, serial, temperature, SMART pass/fail. The verb 'SMART health' and resource 'disk' are explicit, and it distinguishes from sibling tools like cpu_status or gpu_status by focusing on disk health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks explicit guidance on when to use this tool versus alternatives like hardware_inventory or live_sensors. It implies usage for disk-specific health data and mentions a root requirement, but does not compare to siblings or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the tool returns live telemetry via nvidia-smi, lists the data fields, and mentions a warning for missing GPU/driver. This is fairly transparent, though it does not explicitly state it is read-only or discuss permissions or side effects, but the nature of a status tool suggests safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded with 'GPU inventory + LIVE telemetry'. It then lists key data points and an edge case in a single, well-structured sentence. No redundant or unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema (not shown but exists), the description is complete. It explains the data returned (inventory + live telemetry) and a warning condition. No further context is needed given the simplicity and the presence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the schema is 100% covered (empty). The description adds value by explaining what the tool does without needing to clarify parameters. Per guidelines, a 4 is baseline for no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides GPU inventory and live telemetry, listing specific data points like name, driver, temp, etc. The verb+resource is implicit from the name and description, and it distinguishes itself from sibling tools like cpu_status or hardware_inventory by focusing specifically on NVIDIA GPUs and real-time metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention when not to use it, nor does it compare with sibling tools like hardware_inventory or live_sensors. The usage context is implied but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description fully covers behavior: aggregates multiple sources, needs root for some details, reports unreadable items in warnings. Discloses privilege requirements and error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and front-loaded with purpose, followed by details. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no annotations, and existence of output schema, the description fully covers tool behavior, inputs, sources, and conditions. Complete for a comprehensive inventory tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so description doesn't need to cover them. Baseline 4 per rule for 0 parameters. Description adds value by explaining tool scope and output, but no parameter-specific info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Deep STATIC hardware inventory of this machine' with specific components listed. Distinguishes from sibling tools like cpu_status, disk_health, gpu_status, which are more focused or dynamic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage by describing static inventory; contrasts with siblings that are dynamic or focused. No explicit 'when to use this vs alternatives' or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description transparently discloses the data sources (lm-sensors, NVIDIA driver on Linux) and implies real-time reading. It conveys that the tool is a read-only snapshot without side effects. However, it does not mention potential permission requirements or fallback behavior if sensors are unavailable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences. The first sentence establishes the core purpose, and the second provides meaningful detail. Every word contributes to understanding, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (which likely defines the return structure), the description sufficiently covers input (none) and relevant dependencies. A minor gap is the lack of mention of platform restrictions beyond Linux or whether root access is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is 100%. The description adds value by describing the returned sensor categories and dependencies, which helps the agent understand the output without needing to examine the output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it provides a 'LIVE sensor snapshot right now' and lists specific categories (temperatures, fan RPM, battery, voltages, power) and dependencies (lm-sensors, NVIDIA driver). This clearly distinguishes from sibling tools like cpu_status or gpu_status which focus on individual subsystems.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives such as system_snapshot or individual sensor tools. There is no mention of use cases, exclusions, or prerequisites beyond the implicit real-time context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_snapshotA

EVERYTHING in one call: inventory + live sensors + CPU/GPU/memory/disk/network. The 'tell me everything about this machine' tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It states what data is returned but does not disclose any behavioral traits such as performance impact, read-only nature, or potential latency. For a comprehensive snapshot, some caveats might be expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, the first front-loaded with the tool's action and scope. Every word adds value; no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an output schema present, the description adequately lists the data categories. It is complete for a snapshot tool but could mention that it aggregates data from siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100% (vacuously). Per calibration, baseline for 0 parameters is 4. The description does not need to add param details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses 'EVERYTHING in one call' and lists specific categories (inventory, live sensors, CPU/GPU/memory/disk/network), clearly identifying the tool's purpose as a comprehensive system overview. It distinguishes from siblings like cpu_status or disk_health, which are more specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'The "tell me everything about this machine" tool' implies use when a broad overview is needed. Sibling tools are listed, suggesting alternatives for specific data, but no explicit when-not-to-use or alternative names are given in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.2/5.0
Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A 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
  • F
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    7
  • A
    license
    A
    quality
    F
    maintenance
    Provides system hardware information (CPU, memory, storage, etc.) and system status (OS, network, resource usage) via MCP tools.
    2
    24
    ISC
  • F
    license
    A
    quality
    C
    maintenance
    A 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.
    4

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/notreallycheeks/hwprobe-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server