使用说明

项目简介

Docker MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务,它允许用户通过自然语言,借助大型语言模型 (LLM) 客户端,来管理 Docker 环境。该服务器将 Docker 功能暴露为一系列资源和工具,使得用户可以使用自然语言指令来完成容器编排、镜像管理、网络配置和卷管理等任务。

主要功能点

  • 自然语言容器编排: 通过 'docker_compose' Prompt,可以使用自然语言描述所需容器,让 LLM 自动生成 Docker 资源管理计划。
  • Docker 资源管理: 提供丰富的工具 (Tools) 来管理 Docker 容器、镜像、网络和卷,包括创建、删除、列举、启动、停止等操作。
  • 资源监控: 为每个 Docker 容器提供实时的日志 (Logs) 和统计信息 (Stats) 资源 (Resources),方便用户监控容器运行状态。
  • 灵活的安装方式: 支持通过 'uv' 或 Docker 两种方式安装和运行服务器。
  • 可配置的 Docker 客户端: 使用 Python Docker SDK,并允许通过环境变量进行 Docker 客户端配置。

安装步骤

本仓库提供了两种安装方式:使用 'uv' 或 Docker。

方式一:使用 'uv' (推荐用于开发环境)

  1. 确保已安装 'uv' 包管理器。

  2. 克隆本仓库到本地:

    git clone https://github.com/ckreiling/mcp-server-docker.git
    cd mcp-server-docker
  3. 在 MCP 客户端的配置文件中 (例如 Claude Desktop 的 'claude_desktop_config.json'),添加以下服务器配置:

    "mcpServers": {
      "mcp-server-docker": {
        "command": "uv",
        "args": [
          "--directory",
          "/path/to/repo",  // 将 "/path/to/repo" 替换为仓库的本地路径
          "run",
          "mcp-server-docker"
        ]
      }
    }

方式二:使用 Docker

  1. 克隆本仓库到本地:

    git clone https://github.com/ckreiling/mcp-server-docker.git
    cd mcp-server-docker
  2. 构建 Docker 镜像:

    docker build -t mcp-server-docker .
  3. 在 MCP 客户端的配置文件中,添加以下服务器配置:

    "mcpServers": {
      "mcp-server-docker": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-v",
          "/var/run/docker.sock:/var/run/docker.sock", // 挂载 Docker socket,允许容器管理宿主机 Docker
          "mcp-server-docker:latest"
        ]
      }
    }

    注意: 使用 Docker 方式安装时,需要挂载宿主机的 Docker socket ('/var/run/docker.sock') 到容器中,以便容器内的 MCP 服务器能够控制宿主机的 Docker 服务。

服务器配置

MCP 客户端需要配置服务器的启动命令 ('command') 和参数 ('args') 才能连接到 Docker MCP Server。配置信息通常以 JSON 格式存在于 MCP 客户端的配置文件中。

以下是两种安装方式对应的服务器配置示例:

1. 使用 'uv' 方式的配置:

{
  "mcpServers": {
    "mcp-server-docker": {
      "command": "uv",  // 启动命令为 uv 包管理器
      "args": [
        "--directory",  // uv 的参数:指定工作目录
        "/path/to/repo",  // 工作目录为仓库的本地路径,请替换为实际路径
        "run",          // uv 的参数:运行 Python 模块
        "mcp-server-docker" // 运行 mcp_server_docker 模块
      ]
    }
  }
}

2. 使用 Docker 方式的配置:

{
  "mcpServers": {
    "mcp-server-docker": {
      "command": "docker", // 启动命令为 docker
      "args": [
        "run",         // docker 的参数:运行容器
        "-i",          // docker 的参数:保持标准输入打开
        "--rm",        // docker 的参数:容器退出后自动删除
        "-v",          // docker 的参数:挂载卷
        "/var/run/docker.sock:/var/run/docker.sock", // 将宿主机 Docker socket 挂载到容器内
        "mcp-server-docker:latest" // 运行的镜像名称和标签
      ]
    }
  }
}

基本使用方法

  1. 启动 MCP 客户端 (例如 Claude Desktop)。

  2. 在客户端中选择配置好的 'mcp-server-docker' 服务器。

  3. 使用 'docker_compose' Prompt,通过自然语言描述您想要创建的 Docker 容器。例如:

    • Prompt 名称: 'docker_compose'
    • 参数:
      {
        "name": "nginx-demo",
        "containers": "deploy an nginx container exposing it on port 9000"
      }
  4. 与 LLM 进行交互,它会生成一个 Docker 资源管理计划。您可以 'apply' (应用) 该计划来创建 Docker 资源,或者提供反馈让 LLM 重新规划。

注意事项

  • 敏感数据: 请勿在容器配置中使用敏感数据 (例如 API 密钥、数据库密码),因为与 LLM 的交互可能存在安全风险。
  • 容器审查: 务必仔细审查 LLM 生成的容器配置,确保其安全性和符合预期。
  • 安全限制: 为了安全起见,该 MCP 服务器不支持某些敏感的 Docker 选项,例如 '--privileged' 和 '--cap-add/--cap-drop'。

信息

分类

开发者工具