SRE Docker MCP服务器
一个全面的模型上下文协议(MCP)服务器,用于具有SRE功能的Docker管理。
AI污水处理厂
特性
- 🐳 完整的Docker容器生命周期管理
- 📊 实时健康监测和指标
- 🚀 具有自动回滚功能的滚动部署
- 🚨 事件管理和跟踪
- 📈 历史指标和部署历史
- 🔧 Docker编写编排
- 🧹 系统清理和优化
先决条件
- Python 3.10+
- Docker已安装并正在运行
- Claude Desktop(用于MCP集成)
安装
- 克隆存储库:
git clone https://github.com/colinthekkinedath/sre-docker-mcp.git
cd sre-docker-mcp- 创建并激活虚拟环境:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt配置
Claude桌面设置
添加到您的 claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"sre-docker": {
"command": "/absolute/path/to/sre-docker-mcp/venv/bin/python3",
"args": ["/absolute/path/to/sre-docker-mcp/sre_docker_server.py"]
}
}
}用法
独立测试
python sre_docker_server.py示例命令(通过Claude)
- “列出所有正在运行的Docker容器”
- “在端口8080上部署nginx:最新版本作为web服务器”
- “分析容器运行状况”
- “显示部署历史记录”
- “造成CPU使用率高的事件”
- “将我的应用程序滚动更新到2.0版本”
- “导出Prometheus指标进行监控”
可用工具
list_containers-列出所有具有统计信息的容器get_container_details-集装箱详细信息analyze_health-带有阈值检查的健康分析deploy_container-部署新容器rolling_update-零停机更新create_incident-SRE事件跟踪compose_up/down-Docker编写操作system_prune-清理未使用的资源export_prometheus_metrics-以Prometheus格式导出指标- 还有更多。..
建筑
sre-docker-mcp/
├── sre_docker_server.py # Main MCP server
├── requirements.txt # Python dependencies
├── README.md # This file
└── .gitignore # Git ignore rules数据库
服务器使用SQLite存储:
- 健康指标历史
- 事件跟踪
- 部署历史记录
- Runbook模板
数据库文件(sre_docker.db)自动创建并存储在本地。
发展
运行测试
# TODO: Add tests
pytest贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 提交拉取请求
安全须知
- 永远不要承诺
.db文件(包含本地数据) - 确保Docker守护进程的安全
- 部署前检查容器权限
许可证
MIT许可证-有关详细信息,请参阅许可证文件
故障排除
Docker连接问题
# Check Docker is running
docker ps
# Check permissions (Linux)
sudo usermod -aG docker $USERMCP未连接
- 验证配置中的绝对路径
- 检查克劳德桌面日志
- 完全重新启动克劳德桌面
普罗米修斯指标集成
服务器现在支持以Prometheus文本格式导出指标,用于监控和警报。
导出指标
容器度量:
container_cpu_usage_percent-每个容器的CPU使用率百分比container_memory_usage_bytes-内存使用情况(字节)container_memory_limit_bytes-内存限制(字节)container_network_rx_bytes-网络接收字节数(计数器)container_network_tx_bytes-网络传输字节数(计数器)container_block_read_bytes-阻止设备读取字节(计数器)container_block_write_bytes-阻止设备写入字节(计数器)container_restart_count-容器重启次数(计数器)container_up-容器状态(1=运行,0=停止)
系统指标:
docker_containers_total-集装箱总数docker_containers_running-正在运行的容器数量docker_containers_stopped-已停止的集装箱数量docker_images_total-图像总数
使用Prometheus
- 通过克劳德桌面:只需询问“导出Prometheus指标”并将输出保存到文件中
- 与Prometheus集成:设置文本文件收集器或创建HTTP端点包装器
- 查询示例:使用以下指标
container_cpu_usage_percent{container_name="nginx"}
所有容器指标都包括标签: container_id, container_name,以及 image 便于过滤和聚合。
路线图
- \[\]添加警报webhooks(Slack、PagerDuty)
- \[\]日志分析和异常检测
- \[\]自定义runbook自动化
- \[\]Kubernetes支持
- \[x\] Prometheus指标导出
- \[\]Web仪表板
支持
有关问题和疑问,请打开GitHub问题。
