项目简介
MCP Docker服务器是一个强大的后端应用程序,它通过标准化的Model Context Protocol (MCP) 接口,将Docker的全部功能暴露给大型语言模型(LLM)客户端,如Claude。这意味着您的AI助手不再仅仅是对话工具,它们可以直接执行Docker操作,如创建、启动、停止、删除容器,管理镜像,配置网络和卷。服务器内置了严格的安全控制、身份验证(API Key和SSH)、速率限制和审计日志,确保AI助手在操作真实基础设施时的安全性和可控性。
主要功能点
- 36种Docker工具: 全面的容器、镜像、网络、卷和系统管理功能,涵盖Docker的核心操作。
- 5种AI提示模板: 提供智能故障排除、优化建议、网络调试和安全分析等模式,帮助AI更有效地处理Docker任务,提升LLM的领域知识。
- 2种实时资源: 实时访问特定容器的日志输出('container://logs/{容器ID}')和资源使用统计信息('container://stats/{容器ID}')。
- 三层安全系统: 细粒度控制操作权限,包括只读模式、允许适度(可逆)操作、允许破坏性(不可逆)操作,并支持特权操作限制和销毁性操作确认,确保AI助手的操作在预期范围内。
- 灵活的认证机制: 支持API Key和SSH密钥认证,提供多种方式确保只有授权的LLM客户端才能访问服务器。同时支持IP白名单和请求速率限制,进一步增强安全性。
- 审计日志: 详细记录AI助手的每一次Docker操作,包括操作类型、执行者、时间、参数和结果,方便追踪、审计和故障排查。
- 多种传输协议: 支持Stdio(标准输入/输出)和SSE (HTTP) 传输协议,为LLM客户端提供灵活的通信方式。
安装步骤
- 准备环境:
- 确保您的系统已安装Python 3.11或更高版本。
- 确保已安装并运行Docker服务。
- 推荐: 安装'uv'包管理器,它比'pip'更快更可靠: 'pip install uv' (如果不想安装'uv',可以直接使用'pip'代替,但某些命令需要调整)
- 获取代码: 从GitHub克隆仓库到本地: 'git clone https://github.com/williajm/mcp_docker.git' 进入项目目录: 'cd mcp_docker'
- 安装依赖并运行MCP Docker服务器:
- 推荐方式(使用'uvx'直接运行,无需显式安装): 'uvx mcp-docker'
- 使用'uv'安装并运行: 'uv sync' 'uv run mcp-docker'
- 使用'pip'安装并运行: 'pip install -e .' 'mcp-docker'
服务器配置
MCP服务器是为MCP客户端提供服务的后端。MCP客户端(如Claude Desktop)需要配置服务器的启动命令及其参数才能建立连接。以下是一个标准的MCP客户端配置示例,您可以根据您的实际需求修改参数:
{ "mcpServers": { "docker": { "command": "uvx", // 启动MCP Docker服务器的命令,这里使用uvx直接运行mcp-docker "args": ["mcp-docker", "--transport", "stdio"], // 启动参数:使用stdio传输协议,这是推荐的本地客户端连接方式 "env": { // 可选:设置环境变量,用于配置Docker连接或安全策略 // Docker连接配置: "DOCKER_BASE_URL": "unix:///var/run/docker.sock", // Linux/macOS系统的Docker守护进程通信路径 // "DOCKER_BASE_URL": "npipe:////./pipe/docker_engine", // Windows (Docker Desktop)的Docker守护进程通信路径 "DOCKER_TIMEOUT": "60", // Docker API操作的超时时间,单位秒 // 安全配置: "SAFETY_ALLOW_MODERATE_OPERATIONS": "true", // 是否允许创建、启动、停止等适度(可逆)操作 (默认为true) "SAFETY_ALLOW_DESTRUCTIVE_OPERATIONS": "false", // 是否允许删除、清理等破坏性(不可逆)操作 (默认为false) "SAFETY_ALLOW_PRIVILEGED_CONTAINERS": "false", // 是否允许创建或执行特权容器操作 (默认为false) "SAFETY_REQUIRE_CONFIRMATION_FOR_DESTRUCTIVE": "true", // 是否要求AI在执行破坏性操作前进行确认 (默认为true) // 认证与审计配置: "SECURITY_AUTH_ENABLED": "false", // 是否启用客户端认证 (默认为false) "SECURITY_API_KEYS_FILE": "/path/to/.mcp_keys.json", // API Key认证文件路径,请替换为您的实际路径 "SECURITY_SSH_AUTH_ENABLED": "false", // 是否启用SSH密钥认证 (默认为false) "SECURITY_SSH_AUTHORIZED_KEYS_FILE": "/path/to/.ssh/mcp_authorized_keys", // SSH授权密钥文件路径,请替换为您的实际路径 "SECURITY_AUDIT_LOG_ENABLED": "true", // 是否启用审计日志 (默认为true) "SECURITY_AUDIT_LOG_FILE": "/var/log/mcp_audit.log", // 审计日志文件路径 // MCP服务器日志配置: "MCP_LOG_LEVEL": "INFO", // 服务器日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL) "MCP_DOCKER_LOG_PATH": "/var/log/mcp_docker.log" // 服务器运行日志文件路径 } } } }
重要提示:
- 请根据您的操作系统和Docker安装情况,正确设置'DOCKER_BASE_URL'。
- 'SAFETY_ALLOW_DESTRUCTIVE_OPERATIONS' 默认为 'false',若希望AI能够执行删除或清理操作,请设置为 'true'。
- 'SECURITY_AUTH_ENABLED' 默认为 'false',在生产环境强烈建议设置为 'true' 并配置API Key或SSH认证。
- 您可以在项目根目录创建'.env'文件来管理这些环境变量,例如:
# .env 文件示例 (Linux/macOS) DOCKER_BASE_URL=unix:///var/run/docker.sock SAFETY_ALLOW_DESTRUCTIVE_OPERATIONS=true SECURITY_AUTH_ENABLED=true SECURITY_API_KEYS_FILE=/home/user/.mcp_keys.json
基本使用方法
一旦MCP Docker服务器成功运行并配置到您的LLM客户端(如Claude Desktop),AI助手就可以通过调用其提供的工具、访问资源或请求提示来与Docker环境交互。
例如,AI助手可以:
- 列出所有容器: 调用MCP服务器的'docker_list_containers'工具,提供 '{ "all": true }' 参数来显示所有容器(包括已停止的)。
- 启动一个特定容器: 调用'docker_start_container'工具,并提供容器的ID或名称,例如 '{ "container_id": "my-web-app" }'。
- 获取容器日志: 通过读取 'container://logs/{容器ID}' 格式的URI资源来获取容器的实时日志。
- 获取故障排除建议: 请求 'troubleshoot_container' 提示,提供 '{ "container_id": "problematic-container" }' 参数,AI将获得诊断容器问题的系统消息和上下文。
每次AI助手调用工具时,如果MCP Docker服务器启用了认证,客户端需要在请求的'_auth'字段中提供有效的API Key或SSH认证数据,以便服务器验证其身份和权限。
信息
分类
开发者工具