trackmcp
Back to directory
raythurman2386

sysmetrics-mcp

View on GitHub

A lightweight MCP (Model Context Protocol) server that exposes Linux system metrics through MCP tools. Works on any Linux system including Raspberry Pi.

3 stars GoOthers Updated Aug 15, 2026
golangmcp-serversystem-monitoring

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.

bash
git clone 
cd sysmetrics-mcp
make build

The compiled binary will be located in `bin/sysmetrics-mcp`.

Install to PATH

bash
# 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

bash
sysmetrics-mcp --help

Configuration

Local AI Agents (Gemini CLI / Personal Agents)

Add to your agent's configuration file:

json
{
  "sysmetrics": {
    "type": "stdio",
    "command": "sysmetrics-mcp",
    "args": [
      "--temp-unit", "celsius",
      "--max-processes", "10"
    ]
  }
}

Available CLI Flags

FlagDefaultDescription
`--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:

URIDescription
`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:

bash
# Run tests
make test

# Run linter (go vet)
make lint

# Clean build artifacts
make clean

# Download and tidy dependencies
make deps

Requirements

  • 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

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP