系统指标MCP服务

一个轻量级的MCP服务器,通过MCP工具暴露Linux系统指标,适用于任何Linux系统,包括树莓派。

  • by raythurman2386
  • Go
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 raythurman2386/sysmetrics-mcp

使用说明

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 <repository>
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 可用的

许可证

麻省理工学院