sysmetrics-mcp
A lightweight MCP (Model Context Protocol) server that exposes Linux system metrics through MCP tools. Works on any Linux system including Raspberry Pi.
Documentation
SysMetrics MCP Server
A lightweight MCP (Model Context Protocol) server that exposes Linux system metrics through MCP tools. Works on any Linux system including Raspberry Pi.
Features
- 19 MCP Tools: System info, CPU, memory, disk, disk I/O, network, network connections, processes, thermal, Docker, system health, service status, plus monitoring and alerting tools
- MCP Resources: Subscribable `sys://metrics/*` resources for proactive state reads
- MCP Prompts: `analyze_system_health` and `diagnose_performance_issue` prompt templates
- Streaming Metrics: Delta-based throughput sampling (network bytes/s, disk IOPS/bytes/s) and history
- Threshold Alerting: Background monitoring that generates warning/critical alerts on resource saturation
- Configurable: CLI arguments for temperature units, process limits, mount points, and interfaces
- Cross-Platform: Works on any Linux system (enhanced metrics for Raspberry Pi)
- AI-Ready: Designed for integration with Claude Desktop, Cursor, or any MCP client
Installation
Prerequisites
- Go 1.25.6 or higher
- Linux system (tested on Ubuntu, Debian, Raspberry Pi OS)
Build from Source
The project uses a `Makefile` for common tasks.
git clone
cd sysmetrics-mcp
make buildThe compiled binary will be located in `bin/sysmetrics-mcp`.
Install to PATH
# Option 1: System-wide (installs to /usr/local/bin)
sudo make install
# Option 2: User-local
mkdir -p ~/.local/bin
cp bin/sysmetrics-mcp ~/.local/bin/
# Add to PATH if not already: export PATH="$HOME/.local/bin:$PATH"Verify Installation
sysmetrics-mcp --helpConfiguration
Local AI Agents (Gemini CLI / Personal Agents)
Add to your agent's configuration file:
{
"sysmetrics": {
"type": "stdio",
"command": "sysmetrics-mcp",
"args": [
"--temp-unit", "celsius",
"--max-processes", "10"
]
}
}Available CLI Flags
| Flag | Default | Description |
|---|---|---|
| `--temp-unit` | `celsius` | Temperature unit: `celsius`, `fahrenheit`, or `kelvin` |
| `--max-processes` | `10` | Default maximum processes to list (1-50) |
| `--mount-points` | `""` | Comma-separated mount points (empty = all) |
| `--interfaces` | `""` | Comma-separated interfaces (empty = all, excludes `lo`) |
| `--enable-gpu` | `true` | Attempt to read GPU metrics (Raspberry Pi only) |
| `--monitor-interval` | `5` | Default sampling interval in seconds for monitoring (1-60) |
MCP Tools
`get_system_info`
Returns system information including hostname, OS, uptime, and platform details.
`get_cpu_metrics`
Returns CPU usage, temperature, core count, and load average.
Optional Arguments:
- `temp_unit`: Override temperature unit
`get_memory_metrics`
Returns RAM and swap usage statistics with both bytes and human-readable formats.
`get_disk_metrics`
Returns disk usage for all or specified mount points.
Optional Arguments:
- `mount_points`: Comma-separated mount points to check
- `human_readable`: Include human-readable sizes (default: true)
`get_network_metrics`
Returns network interface statistics including bytes sent/received and IP addresses.
Optional Arguments:
- `interfaces`: Comma-separated interface names to check
`get_process_list`
Returns list of running processes sorted by resource usage.
Optional Arguments:
- `limit`: Maximum number of processes (1-50)
- `sort_by`: Sort by `cpu`, `memory`, or `pid` (default: `cpu`)
`get_thermal_status`
Returns thermal status including CPU/GPU temperatures and throttling information (Raspberry Pi).
Optional Arguments:
- `temp_unit`: Override temperature unit
`get_disk_io_metrics`
Returns disk I/O statistics including read/write throughput, IOPS, and I/O time per device.
Optional Arguments:
- `devices`: Comma-separated device names to check (e.g. `sda,nvme0n1`)
`get_system_health`
Returns an aggregated health dashboard with CPU, memory, disk, and uptime. Includes an overall status of `healthy`, `warning`, or `critical` based on resource thresholds.
`get_docker_metrics`
Returns Docker container metrics including CPU and memory usage via cgroups. Returns an empty list gracefully if Docker is not available.
Optional Arguments:
- `container_id`: Filter to a specific container by ID or name
`get_network_connections`
Returns active TCP/UDP network connections with local/remote addresses, status, and owning PID.
Optional Arguments:
- `kind`: Connection type filter (`tcp`, `udp`, or `all`; default: `all`)
- `status`: Filter by connection status (e.g. `LISTEN`, `ESTABLISHED`)
`get_service_status`
Returns systemd service health information via `systemctl show`.
Required Arguments:
- `services`: Comma-separated list of service names to check
`start_monitoring`
Starts background sampling of system metrics. Once running, the server retains a history buffer and evaluates resource thresholds to generate alerts.
Optional Arguments:
- `interval`: Sampling interval in seconds (defaults to `--monitor-interval`)
`stop_monitoring`
Stops background sampling.
`get_monitoring_status`
Returns whether monitoring is running, the aggregate health status, and the latest snapshot.
`get_metrics_history`
Returns recent metric snapshots captured by the monitor.
Optional Arguments:
- `seconds`: Only return snapshots captured within the last N seconds
`get_alerts`
Returns threshold alerts generated since the last read (read-then-drain).
Optional Arguments:
- `severity`: Filter by `warning` or `critical`
`get_network_throughput`
Returns per-interface network throughput rates (bytes/sec) since the last sample.
`get_disk_throughput`
Returns per-device disk I/O throughput rates (bytes/sec and IOPS) since the last sample.
MCP Resources
The server exposes subscribable resources under the `sys://metrics/*` namespace so clients can read current state without issuing a tool call:
| URI | Description |
|---|---|
| `sys://metrics/overview` | Aggregated health dashboard |
| `sys://metrics/cpu` | CPU model, cores, temperature |
| `sys://metrics/memory` | RAM usage |
| `sys://metrics/disk` | Disk usage across mount points |
| `sys://metrics/network` | Network interface throughput |
| `sys://metrics/processes/top` | Template: top N processes (e.g. `sys://metrics/processes/top?limit=10`) |
MCP Prompts
- `analyze_system_health` — gathers and summarizes overall system health.
- `diagnose_performance_issue` — diagnoses a reported performance problem by checking CPU, memory, disk, network, and top processes.
Example Usage
Once configured, you can ask your AI assistant:
- "What's my CPU temperature?"
- "Show me disk usage for / and /home"
- "List the top 5 processes by memory usage"
- "What's my network usage on eth0?"
- "Check if my Raspberry Pi is throttling"
- "What's the overall health of my system?"
- "Show me active TCP connections in LISTEN state"
- "Check if the SSH and Docker services are running"
- "What are the disk I/O stats for my drives?"
- "How much CPU and memory are my Docker containers using?"
- "Start monitoring every 2 seconds and alert me if CPU is high"
- "Show me disk throughput over the last minute"
- "Are there any recent resource warnings?"
Raspberry Pi Enhancements
On Raspberry Pi systems, the server provides additional metrics:
- CPU Temperature: Reads from `/sys/class/thermal/thermal_zone0/temp`
- GPU Temperature: Uses `vcgencmd measure_temp`
- Throttling Status: Uses `vcgencmd get_throttled` to detect:
- Under-voltage conditions
- Frequency capping
- Thermal throttling
- Soft temperature limits
On non-Pi systems, these metrics return `"not_available"` gracefully.
Development
Use the included `Makefile` for development tasks:
# Run tests
make test
# Run linter (go vet)
make lint
# Clean build artifacts
make clean
# Download and tidy dependencies
make depsRequirements
- Go 1.25.6+
- Linux system
- For Pi features: Raspberry Pi OS with `vcgencmd` available
License
MIT
Frequently asked questions
What is sysmetrics-mcp?
sysmetrics-mcp is A lightweight MCP (Model Context Protocol) server that exposes Linux system metrics through MCP tools. Works on any Linux system including Raspberry Pi.
How do I install sysmetrics-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is sysmetrics-mcp open source?
Yes — it is hosted on GitHub at https://github.com/raythurman2386/sysmetrics-mcp and has 3 stars.
Related MCP tools
eBPF-powered network observability for Kubernetes. Indexes L4/L7 traffic with full K8s context, decrypts TLS without keys. Queryable by AI agents via MCP and humans via dashboard.
GOWA - WhatsApp REST API with support for UI, Multi Account, Webhooks, and MCP, and Chatwoot. Built with Golang for efficient memory use.
The missing open-source Kubernetes UI with a built-in MCP server for AI agents. See what's broken, why, and what changed. Issues, Topology, event timeline, Helm, GitOps, live service traffic, and cluster audits - all in one Go binary.
mcp-language-server gives MCP enabled clients access semantic tools like get definition, references, rename, and diagnostics.
Run MATLAB® using AI applications with the official MATLAB MCP Server from MathWorks®. This MCP server for MATLAB supports a wide range of coding agents like Claude Code® and Visual Studio® Code.
One place to manage & connect to all your MCP servers
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP