Docker管理服务器

一个用于通过自然语言管理Docker的MCP服务器,支持容器编排、调试和持久数据管理。

  • by minopeef
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 minopeef/MCP-Server-Docker

使用说明

Docker MCP服务器

一个用自然语言管理Docker的MCP服务器。

它能做什么?

  • 用自然语言编写容器
  • 反思并调试正在运行的容器
  • 使用Docker卷管理持久数据

这是给谁的?

  • 服务器管理员:连接到远程Docker引擎,例如管理面向公众的网站。
  • Tinkers:在本地运行容器,并尝试使用支持Docker的开源应用程序。
  • AI爱好者:挑战LLM的极限。

快速入门

安装

克劳德桌面版

在MacOS上: ~/Library/Application Support/Claude/claude_desktop_config.json

在Windows上: %APPDATA%/Claude/claude_desktop_config.json

Install from PyPi with uv

如果你没有 uv 已安装,请按照系统的安装说明进行操作。

然后将以下内容添加到MCP服务器文件中:

"mcpServers": {
  "mcp-server-docker": {
    "command": "uvx",
    "args": [
      "mcp-server-docker"
    ]
  }
}
Install with Docker

纯粹是为了方便起见,服务器可以在Docker容器中运行。

克隆此存储库后,构建Docker镜像:

docker build -t mcp-server-docker .

然后将以下内容添加到MCP服务器文件中:

"mcpServers": {
  "mcp-server-docker": {
    "command": "docker",
    "args": [
      "run",
      "-i",
      "--rm",
      "-v",
      "/var/run/docker.sock:/var/run/docker.sock",
      "mcp-server-docker:latest"
    ]
  }
}

请注意,我们将Docker套接字挂载为卷;这确保了MCP服务器可以连接并控制本地Docker守护进程。

提示

码头_组成

使用自然语言编写容器。提供项目名称和所需容器的描述,让LLM完成其余工作。

此提示指示LLM进入计划+应用循环。您与LLM的互动将涉及以下步骤:

  1. 您向LLM说明要携带哪些容器
  2. LLM计算一个简洁的自然语言计划并将其呈现给您
  3. 你要么:
    • 应用该计划
    • 提供LLM反馈,LLM重新计算计划

示例

  • 姓名: nginx,containers:“部署一个nginx容器,将其暴露在端口9000上”
  • 姓名: wordpress,containers:“部署一个WordPress容器和一个支持MySQL的容器,在端口9000上暴露WordPress”

恢复项目

当使用此提示启动新聊天时,LLM将收到使用给定项目创建的任何容器、卷和网络的状态 name.

这主要用于清理,以防您丢失了负责许多容器的聊天。

资源

服务器为每个容器实现了几个资源:

  • 统计数据:容器的CPU、内存等
  • 原木:从集装箱中拖出一些原木

工具

列表工具接受可选过滤器(例如按标签)。容器和图像列表工具支持 all 标记以包括已停止或中间资源。

容器

  • list_containers
  • create_container
  • run_container
  • recreate_container
  • start_container
  • fetch_container_logs
  • stop_container
  • remove_container

图像

  • list_images
  • pull_image
  • push_image
  • build_image
  • remove_image

网络

  • list_networks
  • create_network
  • remove_network

卷

  • list_volumes
  • create_volume
  • remove_volume

免责声明

敏感数据

不要为容器配置敏感数据。 这包括API密钥、数据库密码等。

除非LLM在您的本地计算机上运行,否则与LLM交换的任何敏感数据都会受到损害。

如果您对安全地将机密传递给容器感兴趣,请在您的用例中在此存储库中提交一个问题。

查看已创建的容器

请仔细查看LLM创建的容器。Docker不是一个安全的沙箱,因此MCP服务器可能会通过Docker影响主机。

出于安全原因,此MCP服务器不支持敏感的Docker选项,如 --privileged 或 --cap-add/--cap-drop。如果您对这些功能感兴趣,请将问题与您的用例一起提交到此存储库中。

配置

此服务器使用Python Docker SDK from_env 方法。有关配置的详细信息,请参阅Docker Python客户端文档。

可选环境变量(前缀 MCP_SERVER_):

  • MCP_SERVER_LOG_LEVEL –日志级别:调试、信息、警告或错误(默认值:警告)
  • 设置也从加载 .env 工作目录中的文件(如果存在)。

通过SSH连接到Docker

此MCP服务器可以通过SSH连接到远程Docker守护进程。

只需设置a ssh:// MCP服务器定义中的主机URL:

"mcpServers": {
  "mcp-server-docker": {
    "command": "uvx",
    "args": [
      "mcp-server-docker"
    ],
    "env": {
      "DOCKER_HOST": "ssh://myusername@myhost.example.com"
    }
  }
}

发展

更倾向于使用Devbox来配置您的开发环境。

安装开发依赖项(例如使用ruff进行linting):

uv sync --extra dev

看 devbox.json 对于开发脚本:

  • devbox run python-lint –在源树上运行ruff
  • devbox run mcp-run –在本地运行MCP服务器
  • devbox run mcp-inspector –运行MCP检查器
  • devbox run prettier-format JSON和Markdown格式
  • devbox run pyproject-check –验证pyproject.toml

设置devbox后,您可以配置Claude MCP配置以使用它:

  "docker": {
    "command": "/path/to/repo/.devbox/nix/profile/default/bin/uv",
    "args": [
      "--directory",
      "/path/to/repo/",
      "run",
      "mcp-server-docker"
    ]
  },