
一款用于智能容器操作的通用容器管理MCP服务器
ContainMind是一款MCP(模型上下文协议)服务器,它为AI助手提供了强大的跨多个容器运行时的容器管理能力。通过自然语言交互,它可以无缝地检查、监控和分析容器化环境。
ContainMind弥合了AI助手(如Claude)与容器运行时之间的差距,允许您使用对话界面来管理和分析容器。它是一个统一的API,支持多个容器引擎,提供实时洞察和自动化功能。
现代容器化应用程序经常面临以下问题:
ContainMind提供:
| 工具 | 描述 | 使用场景 |
|---|---|---|
initialize_connection | 连接到容器运行时 | 初始设置,自动检测或指定运行时 |
list_all_containers | 列出容器 | 快速查看所有/正在运行的容器 |
list_all_images | 列出镜像 | 检查可用镜像及其大小 |
list_all_volumes | 列出卷 | 识别存储使用情况和孤立卷 |
list_all_networks | 列出网络 | 网络拓扑和连通性 |
analyze_container | 深度容器检查 | 调试配置,检查挂载和环境变量 |
get_container_stats | 资源使用指标 | 性能监控和优化 |
get_container_logs | 获取容器日志 | 排查应用问题 |
get_system_info | 系统信息 | 检查整体容量和利用率 |
场景:您的应用程序崩溃了
您: "为什么我的mongo_local_standard容器显示高内存使用率?"
AI: [使用get_container_stats + analyze_container]
"该容器使用了其2GB内存限制的89%。
检查配置... docker-compose中未设置内存限制。
建议:设置明确的内存限制并检查内存泄漏。"
场景:优化资源分配
您: "哪些容器使用最多的CPU?"
AI: [使用get_container_stats,all_running=True]
"运行容器分析:
1. kafka-1: 45% CPU - 考虑增加更多的broker
2. redis-server: 12% CPU - 在正常范围内
建议:Kafka是CPU密集型,考虑水平扩展。"
场景:容器无法启动
您: "检查weaviate_db为何无法启动"
AI: [使用get_container_logs + analyze_container]
"日志分析显示端口8080绑定失败。
检查配置... 端口已被另一个服务占用。
建议:更改端口映射或停止冲突的服务。"
场景:磁盘空间管理
您: "显示未使用的卷占用的空间"
AI: [使用list_all_volumes + list_all_containers]
"找到45个未连接到任何容器的匿名卷。
总可回收空间:约3.2GB
安全删除:[列出卷ID]"
场景:主动监控
您: "给我一个容器环境的健康报告"
AI: [使用get_system_info + get_container_stats]
"系统健康报告:
- 总计7个容器(1个运行,6个已停止)
- 内存:8.2GB / 16GB 已使用(51%)
- CPU:运行容器负载正常
- 网络:未检测到瓶颈
警报:6个已停止的容器可能需要关注。"
场景:安全性和最佳实践
您: "检查包含敏感数据的容器的环境变量"
AI: [对每个容器使用analyze_container]
"安全审计完成:
- mongo_local_standard: 包含DB凭证的环境变量
- redis-server: 未配置认证
建议:使用Docker密钥或外部密钥管理。"
pip install -r requirements.txt
python containmind.py
服务器默认启动在http://127.0.0.1:8081。
添加到您的Claude Desktop配置文件(claude_desktop_config.json):
{"mcpServers": {
"docker-Mcp": {
"command": "uv",
"args": [
"run",
"--with",
"fastmcp",
"fastmcp",
"run",
"path\to\proxy.py"
],
"env": {},
"transport": "stdio"
}
}
}
# ContainMind自动检测Docker或Podman
initialize_connection()
# 强制使用Docker
initialize_connection(backend="docker")
# 强制使用Podman
initialize_connection(backend="podman")
# 自定义套接字
initialize_connection(base_url="unix:///run/podman/podman.sock")
# 单个容器
get_container_stats(container_id="mongo_local_standard")
# 所有正在运行的容器
get_container_stats(all_running=True, parallel=True)
┌─────────────────────────────────────────┐
│ AI助手 (Claude) │
└────────────────┬────────────────────────┘
│ MCP协议
┌────────────────▼────────────────────────┐
│ ContainMind服务器 │
│ ┌─────────────────────────────────┐ │
│ │ 工具接口层 │ │
│ └──────────────┬──────────────────┘ │
│ ┌──────────────▼──────────────────┐ │
│ │ 容器检查器 │ │
│ └──────────────┬──────────────────┘ │
│ ┌──────────────▼──────────────────┐ │
│ │ 后端抽象层 │ │
│ │ ┌────────┐ ┌────────┐ │ │
│ │ │ Docker │ │ Podman │ │ │
│ │ └───┬────┘ └───┬────┘ │ │
│ └──────┼───────────────┼──────────┘ │
└─────────┼───────────────┼──────────────┘
│ │
┌─────▼─────┐ ┌────▼─────┐
│ Docker │ │ Podman │
│ 引擎 │ │ 运行时 │
└───────────┘ └──────────┘
欢迎贡献!改进领域:
本项目采用MIT许可证。
使用以下工具构建:
ContainMind - 让容器管理变得对话式、智能化和高效。🚀