DevOps诊断服务器(MCP服务器)
](https://github.com/JH-A-Kim/DevOpsMCP-Server)  
一个全面的DevOps伴侣,将LLM直接连接到您的本地基础设施和系统诊断工具。
🚀 概述
这 DevOps诊断服务器 是实现 模型上下文协议(MCP) 这使AI代理(如Claude)能够直接在本地计算机上运行系统诊断和基础设施审计工具。
该服务器允许AI执行以下操作,而不是手动运行诊断命令和复制粘贴输出:
- 监视器 系统资源(CPU、内存、磁盘、网络)
- 分析 运行进程和服务
- 检查 日志和配置文件
- 验证 基础设施即代码(Dockerfiles等)
- 诊断 性能问题和瓶颈
该项目遵循 向左移动 哲学:捕捉配置错误并识别开发人员机器上的问题 *之前* 他们到达生产。
______________________________________________________________________
🛠️ 可用工具
此服务器提供 32个面向用户的工具 跨多个DevOps类别:
系统监控(4个工具)
- get_system_info() -全面的系统信息(操作系统、版本、正常运行时间、架构)
- get_cpuusage() -每个核心的CPU使用率指标
- get_memory_use() -RAM和交换内存统计信息
- get_disk_usage(路径) -任何路径的磁盘空间分析
流程管理(2个工具)
- list_processs(限制) -按CPU使用率列出顶级进程
- check_process_running(进程名) -验证进程是否正在运行
网络诊断(2个工具)
- check_port_listening(端口、主机) -检查端口是否打开以及哪个进程正在使用它
- get_network_stats() -网络接口统计(发送/接收的字节数、错误)
日志分析(1个工具)
- read_log_file(路径、行、搜索项) -使用搜索功能读取和过滤日志文件
文件系统操作(2个工具)
- get_directory_size(路径) -计算目录的总大小
- get_environment_variable(变量名) -检查环境变量
基础设施验证(2个工具)
- validate_docker文件(路径) -使用hadolint验证Dockerfiles
- optimize_dockerfile(路径) -获取Dockerfiles的优化建议
Docker容器管理(4个工具)
- list_docker_容器(所有容器) -列出正在运行或所有Docker容器
- inspect_docker_container(container_id) -获取详细的集装箱信息
- get_locker_logs(container_id,行) -检索容器日志
- get_locker_stats(容器id) -获取容器资源使用统计信息
Kubernetes诊断(5个工具)
- list_k8s_pods(命名空间,所有命名空间) -在命名空间中列出Pod
- get_k8s_pod_logs(pod_name、命名空间、容器、行) -检索吊舱日志
- get_k8s_pod_status(pod_name,命名空间) -获取详细的pod状态和事件
- list_k8s_services(命名空间,所有名称空间) -列出Kubernetes服务
- 获取_k8s_node_status() -获取群集节点运行状况和容量
云提供商集成(4个工具)
- list_aws_ec2_instances(区域,max_results) -列出AWS EC2实例
- get_aws_s3_buckets() -列出所有S3存储桶
- list_azure_vs(subscription_id,resource_group) -列出Azure虚拟机
- list_gcp_instances(项目id,区域) -列出GCP计算引擎实例
安全扫描(3个工具)
- scan_with_trivy(目标,scan_type) -使用Trivy扫描漏洞
- scan_with_grype(目标) -使用Grype进行漏洞扫描
- scan_secrets(路径,最大深度) -扫描代码中暴露的秘密
性能分析(2个工具)
- get_io_stats() -获取所有设备的磁盘I/O统计信息
- 分析性能指标(持续时间) -随时间推移的全面性能分析
自动修复(1个工具)
- suggest_remediation(issue_type,详细信息) -获取常见问题的补救建议
______________________________________________________________________
🏗 建筑
该项目完全在本地主机上运行,以确保数据隐私和直接系统访问。
sequenceDiagram
participant User
participant LLM as Claude Desktop (Client)
participant MCP as Python MCP Server
participant System as Local System/Tools
User->>LLM: "Check my system's CPU usage"
LLM->>MCP: Call Tool: get_cpu_usage()
MCP->>System: Execute: psutil.cpu_percent()
System-->>MCP: Return: CPU metrics
MCP-->>LLM: Return Tool Result
LLM-->>User: "Your CPU is at 45% usage, with Core 2 at 87%..."______________________________________________________________________
📦 安装
先决条件
- Python 3.9+
- pip(Python包管理器)
- Docker(可选,用于容器管理工具)
- kubectl(可选,用于Kubernetes诊断)
- 云CLI工具(可选,用于云提供商集成)
- AWS CLI(用于AWS工具) - Azure CLI(用于Azure工具) - gcloud CLI(用于GCP工具)
安装依赖项
# Clone the repository
git clone https://github.com/JH-A-Kim/DevOpsMCP-Server.git
cd DevOpsMCP-Server
# Install Python dependencies
pip install -r requirements.txt可选工具
对于Dockerfile验证:
# Install hadolint
brew install hadolint
# Or download from: https://hadolint.com/对于安全扫描:
# Install Trivy
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
# Install Grype
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin对于Docker集成:
# Ensure Docker is installed and running
docker --version对于Kubernetes集成:
# Ensure kubectl is installed and configured
kubectl version --client对于云提供商集成:
# AWS: Configure credentials
aws configure
# Azure: Login
az login
# GCP: Set up authentication
gcloud auth application-default login______________________________________________________________________
🚀 用法
运行服务器
python server.py服务器使用stdio传输运行,可以与Claude Desktop等MCP客户端集成。
配置Claude桌面
要将此服务器与Claude Desktop一起使用,请将以下内容添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 视窗: %APPDATA%\Claude\claude_desktop_config.json
macOS/Linux示例:
{
"mcpServers": {
"devops-diagnostics": {
"command": "python",
"args": ["/absolute/path/to/DevOpsMCP-Server/server.py"]
}
}
}Windows示例:
{
"mcpServers": {
"devops-diagnostics": {
"command": "python",
"args": ["C:\\Users\\YourUsername\\DevOpsMCP-Server\\server.py"]
}
}
}将路径替换为server.py文件的实际位置。
更新配置后:
- 重新启动克劳德桌面
- DevOps诊断工具将在新的对话中提供
- 您可以通过让Claude检查系统信息或运行诊断程序进行验证
示例用例
系统健康检查:
"Check my system's health - CPU, memory, and disk usage"
→ Returns comprehensive metrics for diagnostics过程调查:
"Is nginx running? And what port is it listening on?"
→ Checks process status and port 80/443 listeners日志分析:
"Show me the last 20 error lines from /var/log/app.log"
→ Filters and displays relevant log entries基础设施审计:
"Validate my Dockerfile for best practices"
→ Runs hadolint and reports security/optimization issuesDocker容器管理:
"List all running Docker containers and show me the logs for container xyz"
→ Lists containers and retrieves logs for debuggingKubernetes诊断:
"Show me the status of pods in the production namespace and get logs for the failing pod"
→ Diagnoses pod issues with events and logs云资源监控:
"List all my AWS EC2 instances in us-east-1 and check their status"
→ Shows cloud infrastructure across providers安全扫描:
"Scan my Docker image nginx:latest for vulnerabilities using Trivy"
→ Identifies security vulnerabilities in container images性能分析:
"Analyze my system's performance over the last 30 seconds"
→ Provides CPU, memory, and network trends自动修复:
"My pod keeps crashing - suggest remediation steps"
→ Provides detailed troubleshooting guide and solutions______________________________________________________________________
🧪 运行测试
# Run all tests
python -m unittest discover tests/ -v
# Run specific test file
python -m unittest tests/test_diagnostic_tools.py -v______________________________________________________________________
📋 工具参考
系统信息工具
get_system_info()
返回操作系统类型、版本、体系结构、主机名、正常运行时间和Python版本。
输出示例:
=== System Information ===
Os: Linux
Hostname: server-01
Uptime: 5 days, 3:42:15get_cpuusage()
返回总体和每个核心的CPU使用百分比。
get_memory_use()
以GB为单位返回RAM和交换内存统计信息。
get_disk_usage(路径=“/”)
返回指定路径的磁盘空间度量。
参数:
path(str):要检查的路径(默认值:“/”)
工艺工具
list_processs(限制=10)
列出按CPU使用率排序的顶级进程。
参数:
limit(int):要显示的进程数(默认值:10)
check_process_running(进程名)
检查进程是否正在运行并返回PID。
参数:
process_name(str):要搜索的进程的名称
网络工具
check_port_listening(端口,主机=“127.0.0.1”)
检查端口是否正在侦听并标识进程。
参数:
port(int):要检查的端口号host(str):要检查的主机(默认值:“127.0.0.1”)
get_network_stats()
返回网络接口统计信息,包括发送/接收的字节数。
日志和文件工具
read_log_file(文件路径,行数=50,搜索项=无)
读取并筛选日志文件(可选)。
参数:
file_path(str):日志文件的路径lines(int):返回的行数(默认值:50)search_term(str):可选搜索筛选器
特征:
- 出于安全考虑,文件大小限制为10 MB
- 尾部功能(最后N行)
- 搜索/过滤功能
get_directory_size(路径)
递归计算目录的总大小。
参数:
path(str):要分析的目录路径
get_environment_variable(变量名=无)
检索环境变量值。
参数:
var_name(str):特定变量名(可选-如果省略则返回全部)
______________________________________________________________________
🔒 安全考虑
- 所有文件操作都会验证路径并检查是否存在
- 日志文件读取有10 MB的大小限制,以防止内存问题
- 进程和端口检查使用安全的psutil API
- 没有shell注入风险-所有操作都使用Python库
- 环境变量访问是只读的
______________________________________________________________________
🤝 贡献
欢迎投稿!请确保:
- 所有测试均通过:
python -m unittest discover tests/ -v - 代码遵循现有样式(使用
black和flake8) - 为新功能添加测试
运行预提交钩子:
pre-commit install
pre-commit run --all-files______________________________________________________________________
📄 许可证
有关详细信息,请参阅LICENSE文件。
______________________________________________________________________
🛣️ 路线图
在v3.0.0中完成:
- ✅ Docker容器检查和管理
- ✅ Kubernetes集群诊断
- ✅ 云提供商集成(AWS、Azure、GCP)
- ✅ 使用附加工具(Trivy、Grype)进行安全扫描
- ✅ 性能分析功能
- ✅ 自动补救建议
未来的增强功能:
- 高级容器编排功能
- 多云资源管理
- 自动漏洞修复
- 与CI/CD管道集成
- 实时监控仪表板
______________________________________________________________________
