A lightweight MCP (Model Context Protocol) server that exposes Linux system metrics through MCP tools. Works on any Linux system including Raspberry Pi.
- 7 MCP Tools: System info, CPU, memory, disk, network, processes, and thermal status
- 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
- Go 1.25.6 or higher
- Linux system (tested on Ubuntu, Debian, Raspberry Pi OS)
The project uses a Makefile for common tasks.
git clone <repository>
cd sysmetrics-mcp
make buildThe compiled binary will be located in bin/sysmetrics-mcp.
# 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"sysmetrics-mcp --helpAdd to your agent's configuration file:
{
"sysmetrics": {
"type": "stdio",
"command": "sysmetrics-mcp",
"args": [
"--temp-unit", "celsius",
"--max-processes", "10"
]
}
}| 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) |
Returns system information including hostname, OS, uptime, and platform details.
Returns CPU usage, temperature, core count, and load average.
Optional Arguments:
temp_unit: Override temperature unit
Returns RAM and swap usage statistics with both bytes and human-readable formats.
Returns disk usage for all or specified mount points.
Optional Arguments:
mount_points: Comma-separated mount points to checkhuman_readable: Include human-readable sizes (default: true)
Returns network interface statistics including bytes sent/received and IP addresses.
Optional Arguments:
interfaces: Comma-separated interface names to check
Returns list of running processes sorted by resource usage.
Optional Arguments:
limit: Maximum number of processes (1-50)sort_by: Sort bycpu,memory, orpid(default:cpu)
Returns thermal status including CPU/GPU temperatures and throttling information (Raspberry Pi).
Optional Arguments:
temp_unit: Override temperature unit
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"
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_throttledto detect:- Under-voltage conditions
- Frequency capping
- Thermal throttling
- Soft temperature limits
On non-Pi systems, these metrics return "not_available" gracefully.
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 deps- Go 1.25.6+
- Linux system
- For Pi features: Raspberry Pi OS with
vcgencmdavailable
MIT