A Model Context Protocol (MCP) server that exposes live system information to Claude and other LLM clients - CPU, memory, disk, processes, network.
Server defines 7 tools with explicit schemas and descriptions. All tools follow verb_noun naming (get_*) and have non-empty descriptions (avg ~120 chars, within baseline 34-392). Input schemas are present with proper JSON Schema structure. However, several parameters lack descriptions (e.g., 'path' in get_disk_info has description but 'interface' in get_network_info is minimal). No output schemas documented, LLMs cannot predict response structure. Error handling is generic ('Error in {name}: {exc}') with no recovery guidance. No tool annotations (readOnlyHint, etc.). Parameter constraints are present (enums for sort_by, resource) but some numeric params lack min/max bounds. Overall solid foundation but missing production-grade polish.
Return CPU utilisation (overall and per-core), clock frequency, and load averages on Linux/macOS.
Return disk usage for all mounted partitions, or for a specific path if supplied.
Return RAM and swap usage (total, used, free, percentage).
Return network I/O counters (bytes sent/received, packet counts, errors) and IP addresses for each interface.
Return a table of running processes, optionally sorted by cpu, memory, pid, or name.
Return general system details: OS name/version, hostname, CPU core counts, uptime, and boot time.
Return detailed info on the N processes consuming the most CPU or memory, including RSS, status, and owner.
No output schemas documented. LLMs cannot predict response structure, field names, or types. Agents must infer from trial-and-error.
Error handling is generic and non-actionable. Exception messages like 'Error in get_cpu_info: ...' provide no recovery guidance. LLMs cannot self-correct.
Numeric parameters lack min/max bounds. 'interval' in get_cpu_info and 'limit' in get_process_list have no documented constraints. LLMs may pass absurd values (negative, zero, millions).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 72 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared in the schema, forcing LLMs to infer safety.
Parameter 'interface' in get_network_info has minimal description ('Filter to a single interface (default: all).'), does not explain format (eth0? en0? wlan0?) or behavior when interface not found.