SysOM MCP 是一个基于 Model Context Protocol (MCP) 的系统诊断工具集,为 AI 代码助手(如 Qwen Code)提供系统运维和诊断能力。项目聚合了多个 SysOM 诊断服务,通过统一的 MCP 服务器接口,使 AI 助手能够执行系统诊断、性能分析和问题排查等操作。
- ✅ 标准 MCP 协议实现:完整实现 MCP 协议(JSON-RPC over stdio),可与 Qwen Code 等客户端无缝集成
- ✅ 统一服务聚合:将多个诊断服务聚合到单一 MCP 服务器,提供统一的调用接口
- ✅ 多模式运行:支持 stdio 和 SSE 两种运行模式,适应不同的使用场景
- ✅ 丰富的诊断工具:提供 13+ 个系统诊断工具,覆盖内存、IO、网络、调度等多个维度
list_all_instances- 列出所有实例list_pods_of_instance- 列出实例的 Podlist_clusters- 列出集群list_instances- 列出实例
memgraph- 内存全景分析,扫描系统内存占用状态,详细拆解内存使用情况javamem- Java 内存诊断,分析 Java 应用的内存使用情况oomcheck- OOM 检查,检测系统内存溢出问题
iodiagnose- IO 诊断,分析系统 IO 性能问题
netjitter- 网络抖动诊断netdelay- 网络延迟诊断netloss- 网络丢包诊断
- 提供系统调度相关的诊断能力
diskanalysis- 磁盘分析cpucheck- CPU 检查
- Python 3.11+:主要开发语言
- uv:快速 Python 包管理工具
- FastMCP:MCP 协议实现框架
- Pydantic:数据验证和设置管理
- OpenAPI Client:与后端诊断服务 API 交互
- AI 辅助系统诊断:通过 Qwen Code 等 AI 代码助手,使用自然语言进行系统诊断
- 自动化运维:集成到自动化运维流程中,实现系统问题的自动检测和分析
- 性能分析:快速定位系统性能瓶颈,包括内存、IO、网络等方面
- 问题排查:在系统出现问题时,快速获取诊断信息,辅助问题定位
本项目使用 uv 进行包管理。确保已安装 uv:
# 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 安装项目依赖
cd /root/sysom_mcp
uv sync如果尚未安装 Qwen Code,请先安装:
# 配置 npm 镜像源加速(可选,但推荐)
npm config set registry https://registry.npmmirror.com
# 全局安装 Qwen Code
npm install -g @qwen-code/qwen-code@latest注意:安装 Qwen Code 需要 Node.js 和 npm。如果尚未安装,请先安装 Node.js。
参考官网文档https://help.aliyun.com/zh/model-studio/get-api-key,开通百炼,获取免费额度
修改 /root/.qwen/settings.json:
{
"mcpServers": {
"sysom_mcp": {
"command": "uv",
"args": ["run", "python", "sysom_main_mcp.py", "--stdio"],
"env": {
"ACCESS_KEY_ID": "your_access_key_id",
"ACCESS_KEY_SECRET": "your_access_key_secret",
"DASHSCOPE_API_KEY": "your_dashscope_api_key"
},
"cwd": "/root/sysom_mcp",
"timeout": 30000,
"trust": false
}
}
}使用 qwen 命令行工具测试 MCP 服务器。首先确保 MCP 服务器已在 Qwen Code 中正确配置(参考上面的配置),然后使用以下命令启动 Qwen:
cd /root/sysom_mcp
# 使用 qwen 测试 MCP 效果
qwen --openai-api-key "sk-d691e99a775e4ce09c7bea512e2b9a92" \
--openai-base-url "https://dashscope.aliyuncs.com/compatible-mode/v1" \
--model "qwen-max"注意:确保在 Qwen Code 的配置文件中已正确配置 MCP 服务器(参考上面的"在 Qwen Code 中配置"部分),这样 Qwen 才能访问 MCP 工具。
# stdio 模式(用于客户端调用)
uv run python sysom_main_mcp.py --stdio
# SSE 模式(HTTP/SSE 服务器)
uv run python sysom_main_mcp.py --sse --host 0.0.0.0 --port 7140更多使用说明请参考 SYSOM_MAIN_MCP_README.md。
项目提供了测试客户端,可以用于测试 MCP 服务器的功能:
# 使用测试客户端测试统一 MCP 服务器
uv run python src/tests/test_client.py测试客户端会:
- 自动连接到统一 MCP 服务器
sysom_main_mcp.py - 列出所有可用的工具
- 进入交互式聊天模式,可以使用自然语言查询并调用工具
测试客户端功能:
- 支持使用 Qwen 模型进行自然语言交互
- 自动调用合适的 MCP 工具
- 支持并行工具调用
- 提供详细的工具调用日志
注意事项:
- 确保已设置
DASHSCOPE_API_KEY环境变量(在.env文件中) - 测试客户端使用 stdio 模式连接 MCP 服务器
- 输入
q或quit退出交互式模式
其他测试方法:
项目还提供了基于 agentscope 的测试客户端:
# 使用 agentscope 测试客户端(需要 agentscope 库)
uv run python src/tests/test_sysom_main_mcp.py该测试客户端会:
- 自动启动 MCP 服务器(stdio 模式)
- 创建 ReAct Agent 进行测试
- 支持交互式测试模式
sysom_mcp/
├── sysom_main_mcp.py # 统一 MCP 服务器入口
├── main.py # 主入口文件
├── pyproject.toml # 项目配置文件(uv 使用)
├── uv.lock # uv 依赖锁定文件
├── requirements.txt # Python 依赖(兼容性)
├── src/
│ └── tools/ # 各诊断服务模块
│ ├── am_mcp.py # AM 服务
│ ├── mem_diag_mcp.py # 内存诊断服务
│ ├── io_diag_mcp.py # IO 诊断服务
│ ├── net_diag_mcp.py # 网络诊断服务
│ ├── sched_diag_mcp.py # 调度诊断服务
│ ├── other_diag_mcp.py # 其他诊断服务
│ ├── metrics_mcp.py # 指标服务
│ └── lib/ # 公共库
│ ├── openapi_client.py
│ ├── mcp_helper.py
│ ├── diagnosis_helper.py
│ └── ...
├── src/tests/ # 测试文件
└── README.md # 项目文档
本项目采用 Apache License 2.0 许可证,详见 LICENSE 文件。
使用 uv 管理依赖:
# 添加新依赖
uv add package_name
# 更新所有依赖
uv sync
# 更新特定依赖
uv add package_name@latest如果使用 requirements.txt,修改后执行:
uv pip install -r requirements.txtsysom_mcp/
├── README.md # 本文件
├── pyproject.toml # 项目配置文件(uv 使用)
├── uv.lock # uv 依赖锁定文件
├── requirements.txt # Python 依赖(兼容性)
├── sysom_main_mcp.py # 统一 MCP 服务器入口
├── main.py # 主入口文件
└── src/ # 源代码目录
└── tools/ # MCP 工具模块
├── am_mcp.py
├── mem_diag_mcp.py
├── io_diag_mcp.py
├── net_diag_mcp.py
├── sched_diag_mcp.py
├── other_diag_mcp.py
├── metrics_mcp.py
└── lib/ # 公共库
└── tests/ # 测试文件
- 确保已安装 Python 3.11+ 和
uv工具 .env文件位于项目根目录,确保已正确配置必要的环境变量(如ACCESS_KEY_ID、ACCESS_KEY_SECRET、DASHSCOPE_API_KEY)- 使用
uv sync安装依赖后,即可直接运行项目