Token导航 LogoToken导航TokenDH.com
System Monitor MCP logo
运维云端stdio官方级别未说明来源级核验

System Monitor MCP

MCP Server

一个基于Java开发的跨平台系统监控服务,通过HTTP接口提供实时CPU、内存、磁盘和进程监控数据。

工具数

4

提示词数

0

GitHub Stars

2

资源数

0
系统监控跨平台JavaClaude性能分析Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

eacape

提供方

eacape

最后核验

2026/5/17 20:22

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -d -p 8080:8080 --name system-monitor system-monitor-mcp

详细介绍

跨平台系统监控 MCP 服务

项目简介

这是一个基于 Java + Maven + OSHI 开发的 MCP (Model Context Protocol) 服务,用于跨平台系统状态监控。该服务通过 HTTP 接口提供 JSON-RPC 2.0 协议,可以实时采集和分析 CPU、内存、磁盘、进程等系统资源信息。

主要特点

  • 跨平台支持:使用 OSHI 库,支持 Linux、macOS、Windows 等多种操作系统
  • HTTP 传输:基于 HTTP 协议的 MCP 服务,易于集成和调试
  • 轻量级:纯 Java 实现,依赖少,资源占用低
  • JSON-RPC 2.0:标准的 JSON-RPC 2.0 协议,兼容性好
  • 实时监控:提供实时的系统资源监控数据
  • 中文注释:所有代码均有详细的中文注释,易于理解和维护

功能特性

1. 系统概览 (get_system_overview)

获取系统的全面概览信息,包括:

  • 系统信息:主机名、操作系统版本、运行时间
  • CPU 信息

- CPU 型号和核心数(物理核心和逻辑核心) - 系统负载(1分钟、5分钟、15分钟平均负载) - CPU 使用率百分比

  • 内存信息

- 总内存、已用内存、可用内存 - 内存使用率 - Swap 交换空间使用情况

  • 磁盘信息

- 所有挂载点的磁盘使用情况 - 每个分区的总容量、已用空间、可用空间 - 磁盘使用率百分比

2. 进程列表 (list_top_processes)

列出系统中资源占用最高的进程,按 CPU 和内存使用率排序。

参数:

  • limit (可选,默认:10):返回的进程数量(1-100)

提供信息:

  • 按 CPU 使用率排序的 Top N 进程
  • 按内存使用率排序的 Top N 进程
  • 总进程数和线程数

3. 服务状态检查 (inspect_service_status)

检查指定服务或进程的运行状态。

参数:

  • service_name (必需):要检查的服务或进程名称

功能:

  • 搜索匹配服务名称的所有进程
  • 显示每个匹配进程的详细信息
  • 返回运行状态和进程数量

4. 磁盘压力分析 (analyze_disk_pressure)

分析所有磁盘的使用情况和压力级别,提供优化建议。

提供信息:

  • 每个挂载点的详细使用情况
  • 压力级别评估(NONE、LOW、MODERATE、HIGH、CRITICAL)
  • 针对性的优化建议
  • 磁盘 I/O 统计信息(读写次数和字节数)

技术架构

核心依赖

  • Java 17:项目运行环境
  • Javalin 5.6.3:轻量级 HTTP 服务器框架
  • OSHI 6.4.10:跨平台系统和硬件信息库
  • Gson 2.10.1:JSON 序列化/反序列化
  • SLF4J 2.0.9:日志框架

项目结构

system-monitor-mcp/
├── pom.xml                                      # Maven 配置文件
├── build.sh                                     # 构建脚本
├── README.md                                    # 本文档
└── src/
    └── main/
        ├── java/
        │   └── com/
        │       └── example/
        │           └── mcp/
        │               ├── SystemMonitorMcpServer.java    # HTTP MCP 服务器主类
        │               └── SystemMonitor.java            # 系统监控工具类
        └── resources/
            └── simplelogger.properties          # 日志配置

核心类说明

1. SystemMonitorMcpServer

HTTP MCP 服务器主类,负责:

  • 启动 HTTP 服务器(基于 Javalin)
  • 处理 JSON-RPC 2.0 请求
  • 注册和管理监控工具(Tools)
  • 提供健康检查和工具列表端点

2. SystemMonitor

系统监控工具类,负责:

  • 使用 OSHI 库采集系统信息
  • 处理和格式化监控数据
  • 提供各种监控功能的实现
  • 数据分析和建议生成

构建和运行

前置要求

  • Java 17 或更高版本
  • Maven 3.6 或更高版本
  • 支持 OSHI 的操作系统(Linux、macOS、Windows)

构建项目

cd system-monitor-mcp

# 使用构建脚本
./build.sh

# 或手动构建
mvn clean package

构建成功后,会在 target/ 目录下生成可执行 JAR 文件:

target/system-monitor-mcp-1.0.0.jar

启动服务器

1. 使用默认端口(8080)

java -jar target/system-monitor-mcp-1.0.0.jar

2. 指定自定义端口

# 通过命令行参数
java -jar target/system-monitor-mcp-1.0.0.jar 9000

# 或通过环境变量
export MCP_PORT=9000
java -jar target/system-monitor-mcp-1.0.0.jar

启动成功后,你会看到类似如下的输出:

✅ Linux 监控 MCP 服务器启动成功!
🌐 HTTP 端点: http://localhost:8080/
💚 健康检查: http://localhost:8080/health
🔧 工具列表: http://localhost:8080/tools
可用工具: get_system_overview, list_top_processes, inspect_service_status, analyze_disk_pressure

HTTP 端点说明

端点方法说明
/POSTMCP JSON-RPC 2.0 主端点
/healthGET健康检查端点
/toolsGET获取可用工具列表(调试用)

使用方式

1. 直接 HTTP 调用

健康检查

curl http://localhost:8080/health

响应:

{
  "status": "healthy",
  "server": "system-monitor-mcp",
  "version": "1.0.0"
}

获取工具列表

curl http://localhost:8080/tools

调用工具(JSON-RPC 2.0)

获取系统概览:

curl -X POST http://localhost:8080/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "get_system_overview",
      "arguments": {}
    },
    "id": 1
  }'

列出 Top 5 进程:

curl -X POST http://localhost:8080/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "list_top_processes",
      "arguments": {
        "limit": 5
      }
    },
    "id": 2
  }'

检查服务状态:

curl -X POST http://localhost:8080/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "inspect_service_status",
      "arguments": {
        "service_name": "nginx"
      }
    },
    "id": 3
  }'

分析磁盘压力:

curl -X POST http://localhost:8080/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "analyze_disk_pressure",
      "arguments": {}
    },
    "id": 4
  }'

2. 在 Claude Code 中使用

配置步骤

编辑 Claude Code 的 MCP 配置文件(~/.config/claude-code/mcp.json 或项目的 .claude/mcp.json):

{
  "mcpServers": {
    "linux-monitor": {
      "transport": "http",
      "url": "http://localhost:8080",
      "description": "Linux 系统监控工具"
    }
  }
}

使用示例

启动 Claude Code 后,你可以直接与 AI 对话:

请帮我检查系统状态

Claude 会自动调用 get_system_overview 工具获取系统信息。

查看占用 CPU 最高的 5 个进程

Claude 会调用 list_top_processes 工具并设置 limit=5。

检查 nginx 服务是否在运行

Claude 会调用 inspect_service_status 工具查询 nginx。

分析磁盘使用情况,看看是否需要清理

Claude 会调用 analyze_disk_pressure 工具进行分析。

3. 在 Cherry Studio 中使用

配置步骤

  1. 打开 Cherry Studio 设置,找到 MCP 服务器配置部分
  1. 添加新的 MCP 服务器:

- 名称:Linux Monitor - 传输方式:HTTP - URLhttp://localhost:8080 - 描述:Linux 系统监控工具

  1. 保存配置后,重启 Cherry Studio

使用示例

在对话中,你可以:

使用 Linux Monitor 工具查看系统概览

或者:

帮我分析一下磁盘压力情况

Cherry Studio 会自动通过 HTTP 调用 MCP 服务。

4. 配置示例(完整)

Claude Code HTTP MCP 配置

{
  "mcpServers": {
    "linux-monitor": {
      "transport": "http",
      "url": "http://localhost:8080",
      "description": "Linux 系统监控:CPU、内存、磁盘、进程分析",
      "timeout": 30000
    }
  }
}

Cherry Studio HTTP MCP 配置

{
  "name": "linux-monitor",
  "type": "http",
  "url": "http://localhost:8080",
  "description": "Linux 系统监控工具",
  "enabled": true
}

使用场景

1. 系统健康检查

定期检查系统整体状态,了解资源使用情况:

请帮我做一次系统健康检查,看看有没有异常

2. 性能问题排查

当系统响应变慢时,快速定位问题:

系统很卡,帮我找出占用资源最多的进程

3. 服务监控

检查关键服务的运行状态:

检查 mysql、nginx 和 redis 服务是否正常运行

4. 磁盘空间管理

监控磁盘使用情况,提前预警:

分析磁盘使用情况,告诉我哪些分区需要清理

5. 容量规划

基于当前资源使用情况进行容量规划:

根据当前系统资源使用情况,评估是否需要升级硬件

开发和扩展

添加新的监控工具

  1. SystemMonitor.java 中添加新的监控方法(带中文注释)
  2. SystemMonitorMcpServer.javahandleToolsList()handleToolsCall() 中注册新工具
  3. 重新编译和部署

示例:添加网络监控工具

// 在 SystemMonitor.java 中
/**
 * 获取网络统计信息
 */
public String getNetworkStats() {
    NetworkIF[] networks = hardware.getNetworkIFs();
    // ... 处理和格式化数据
    return gson.toJson(result);
}

// 在 SystemMonitorMcpServer.java 的 handleToolsList() 中添加
JsonObject tool5 = new JsonObject();
tool5.addProperty("name", "get_network_stats");
tool5.addProperty("description", "获取网络接口统计信息");
tool5.add("inputSchema", new JsonObject());
tools.add(tool5);

// 在 handleToolsCall() 的 switch 中添加
case "get_network_stats":
    resultText = systemMonitor.getNetworkStats();
    break;

故障排查

常见问题

  1. 服务器无法启动

- 检查 Java 版本是否为 17 或更高:java -version - 确认端口 8080 未被占用:lsof -i :8080 (Linux/macOS) 或 netstat -ano | findstr :8080 (Windows) - 查看日志输出获取详细错误信息

  1. 无法获取系统信息

- 确认运行用户有足够的权限读取系统信息 - 某些系统信息可能需要 root 权限

  1. MCP 客户端无法连接

- 检查 MCP 配置中的 URL 是否正确 - 确认服务器已启动且监听正确的端口 - 测试健康检查端点:curl http://localhost:8080/health - 查看客户端日志获取连接错误信息

  1. 端口被占用

- 使用其他端口启动:java -jar target/system-monitor-mcp-1.0.0.jar 9000 - 或停止占用端口的程序

调试模式

启用详细日志输出(输出到文件 mcp-server.log):

java -Dorg.slf4j.simpleLogger.defaultLogLevel=debug \
     -Dorg.slf4j.simpleLogger.logFile=mcp-server.log \
     -jar target/system-monitor-mcp-1.0.0.jar

性能考虑

  • 系统开销:OSHI 库对系统资源的占用很小,通常 < 10MB 内存
  • 响应时间:大多数查询在 100-500ms 内完成
  • 并发支持:Javalin 基于 Jetty,支持高并发请求
  • 缓存策略:某些信息(如 CPU 使用率)需要短时间采样,已内置等待逻辑

安全注意事项

  1. 权限控制:建议使用普通用户运行服务,避免使用 root 权限
  2. 访问限制:仅在受信任的环境中使用,不要暴露到公网

- 如需公网访问,建议配置反向代理(如 Nginx)并添加认证 - 或使用防火墙限制访问 IP

  1. 数据敏感性:返回的系统信息可能包含敏感数据,注意保护
  2. 命令执行:本服务仅读取系统信息,不执行任何修改操作

生产部署建议

1. 使用 systemd 管理服务(Linux)

创建服务文件 /etc/systemd/system/system-monitor-mcp.service

[Unit]
Description=Linux Monitor MCP Server
After=network.target

[Service]
Type=simple
User=mcp-user
WorkingDirectory=/opt/system-monitor-mcp
ExecStart=/usr/bin/java -jar /opt/system-monitor-mcp/target/system-monitor-mcp-1.0.0.jar 8080
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

启用和启动服务:

sudo systemctl enable system-monitor-mcp
sudo systemctl start system-monitor-mcp
sudo systemctl status system-monitor-mcp

2. 使用 Docker 容器化部署

创建 Dockerfile

FROM openjdk:17-slim

WORKDIR /app
COPY target/system-monitor-mcp-1.0.0.jar /app/

EXPOSE 8080

CMD ["java", "-jar", "system-monitor-mcp-1.0.0.jar"]

构建和运行:

docker build -t system-monitor-mcp .
docker run -d -p 8080:8080 --name system-monitor system-monitor-mcp

3. 配置反向代理(Nginx)

server {
    listen 80;
    server_name monitor.example.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

许可证

本项目仅供学习和参考使用。

联系方式

如有问题或建议,欢迎反馈。


Happy Monitoring! 🚀

目录标签

目录标签

系统监控跨平台JavaClaude性能分析本地部署资源管理实时数据

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP