SysMetrics MCP服务器
一个轻量级的MCP(模型上下文协议)服务器,通过MCP工具公开Linux系统指标。适用于任何Linux系统,包括Raspberry Pi。
特性
- 12个MCP工具:系统信息、CPU、内存、磁盘、磁盘I/O、网络、网络连接、进程、散热、Docker、系统健康状况和服务状态
- 可配置的:温度单位、过程限制、安装点和接口的CLI参数
- 交叉平台的:适用于任何Linux系统(Raspberry Pi的增强指标)
- AI就绪:专为与Claude Desktop、Cursor或任何MCP客户端集成而设计
安装
先决条件
- 达到1.25.6或更高
- Linux系统(在Ubuntu、Debian、Raspberry Pi操作系统上测试)
从源代码构建
该项目使用 Makefile 用于常见任务。
git clone
cd sysmetrics-mcp
make build编译后的二进制文件将位于 bin/sysmetrics-mcp.
安装到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"验证安装
sysmetrics-mcp --help配置
本地AI代理(Gemini CLI/个人代理)
添加到代理的配置文件中:
{
"sysmetrics": {
"type": "stdio",
"command": "sysmetrics-mcp",
"args": [
"--temp-unit", "celsius",
"--max-processes", "10"
]
}
}可用CLI标志
| 标志 | 默认值 | 描述 |
|---|---|---|
--temp-unit | celsius | 温度单位: celsius, fahrenheit,或 kelvin |
--max-processes | 10 | 默认列出的最大进程数(1-50) |
--mount-points | "" | 逗号分隔的装载点(空=全部) |
--interfaces | "" | 逗号分隔的接口(空=全部,不包括 lo) |
--enable-gpu | true | 尝试读取GPU指标(仅限Raspberry Pi) |
MCP工具
get_system_info
返回系统信息,包括主机名、操作系统、正常运行时间和平台详细信息。
get_cpu_metrics
返回CPU使用率、温度、核心计数和平均负载。
可选参数:
temp_unit:超控温度单位
get_memory_metrics
以字节和人类可读格式返回RAM和交换使用统计数据。
get_disk_metrics
返回所有或指定装载点的磁盘使用情况。
可选参数:
mount_points:要检查的逗号分隔的装载点human_readable:包括人类可读的大小(默认值:true)
get_network_metrics
返回网络接口统计信息,包括发送/接收的字节数和IP地址。
可选参数:
interfaces:要检查的逗号分隔的接口名称
get_process_list
返回按资源使用情况排序的正在运行的进程列表。
可选参数:
limit:最大进程数(1-50)sort_by:排序方式cpu,memory,或pid(默认值:cpu)
get_thermal_status
返回热状态,包括CPU/GPU温度和节流信息(Raspberry Pi)。
可选参数:
temp_unit:超控温度单位
get_disk_io_metrics
返回磁盘I/O统计信息,包括每个设备的读/写吞吐量、IOPS和I/O时间。
可选参数:
devices:要检查的逗号分隔的设备名称(例如。sda,nvme0n1)
get_system_health
返回一个包含CPU、内存、磁盘和正常运行时间的聚合健康仪表板。包括以下内容的总体状态 healthy, warning,或 critical 基于资源阈值。
get_docker_metrics
通过cgroups返回Docker容器指标,包括CPU和内存使用情况。如果Docker不可用,则优雅地返回空列表。
可选参数:
container_id:按ID或名称筛选到特定容器
get_network_connections
返回具有本地/远程地址、状态和所属PID的活动TCP/UDP网络连接。
可选参数:
kind:连接型过滤器(tcp,udp,或all;默认值:all)status:按连接状态过滤(例如。LISTEN,ESTABLISHED)
get_service_status
通过以下方式返回systemd服务运行状况信息 systemctl show.
必需参数:
services:要检查的以逗号分隔的服务名称列表
示例用法
配置后,您可以询问您的AI助手:
- “我的CPU温度是多少?”
- “显示/和/home的磁盘使用情况”
- “按内存使用情况列出前5个进程”
- “我在eth0上的网络使用情况如何?”
- “检查我的Raspberry Pi是否正在节流”
- “我的系统的整体健康状况如何?”
- “显示LISTEN状态下的活动TCP连接”
- “检查SSH和Docker服务是否正在运行”
- “我的驱动器的磁盘I/O统计数据是什么?”
- “我的Docker容器使用了多少CPU和内存?”
Raspberry Pi增强功能
在Raspberry Pi系统上,服务器提供了额外的指标:
- CPU温度:阅读自
/sys/class/thermal/thermal_zone0/temp - GPU温度:用途
vcgencmd measure_temp - 油门状态:用途
vcgencmd get_throttled检测:
- 在电压条件下 - 频次上限 - 热节流 - 软温度限制
在非Pi系统上,这些指标返回 "not_available" 优雅。
发展
使用随附的 Makefile 对于开发任务:
# Run tests
make test
# Run linter (go vet)
make lint
# Clean build artifacts
make clean
# Download and tidy dependencies
make deps需求
- 转到1.25.6+
- Linux 系统
- 对于Pi功能:Raspberry Pi操作系统
vcgencmd可用的
许可证
麻省理工学院
