mcpField
🐋
🐋 Docker MCP server

🐋 Docker MCP server

本地服务
github.com/ckreiling云与基础设施74912 周前更新

关于 🐋 Docker MCP server

Docker MCP 服务用于通过自然语言管理 Docker,适合服务器管理员、爱好者和 AI 爱好者。它可以编排容器、调试运行中的容器并管理数据卷。

主要功能

  1. 01通过自然语言编排容器
  2. 02查看并调试运行中的容器
  3. 03管理 Docker 数据卷与网络
  4. 04通过 SSH 连接远程 Docker 引擎

适用场景

  1. 01通过自然语言部署 WordPress 等应用及其数据库
  2. 02读取容器日志与统计信息进行排查
  3. 03管理面向公网网站的远程 Docker 主机

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露容器、镜像、网络和数据卷的工具,以及容器日志与统计信息的资源模板。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🐋 Docker MCP 服务

一款通过自然语言管理 Docker 的 MCP 服务!

🪩 它能做什么?

  • 🚀 通过自然语言编排容器
  • 🔍 检查并调试正在运行的容器
  • 📀 使用 Docker 卷管理持久化数据

❓ 适合哪些人?

  • 服务器管理员:连接到远程 Docker 引擎,例如管理面向公众的网站。
  • 技术爱好者:在本地运行容器,并试用支持 Docker 的开源应用。
  • AI 爱好者:探索大模型的能力极限!

演示

通过自然语言部署 WordPress 的快速演示:

https://github.com/user-attachments/assets/65e35e67-bce0-4449-af7e-9f4dd773b4b3

🏎️ 快速开始

安装
Claude Desktop

MacOS:~/Library/Application\ Support/Claude/claude_desktop_config.json

Windows:%APPDATA%/Claude/claude_desktop_config.json

使用 uv 从 PyPi 安装

如果尚未安装 uv,请按照系统对应的安装说明进行操作: 链接

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

"mcpServers": {
  "mcp-server-docker": {
    "command": "uvx",
    "args": [
      "mcp-server-docker"
    ]
  }
}
使用 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 守护进程。

📝 提示词

🎻 docker_compose

使用自然语言编排容器。请参阅上方的演示。

提供项目名称和所需容器的描述,其余工作交给大模型完成。

此提示词会指示大模型进入 plan+apply 循环。你与大模型的交互包括以下步骤:

  1. 告诉大模型需要启动哪些容器
  2. 大模型计算出简洁的自然语言计划并展示给你
  3. 你可以:
    • 应用该计划
    • 向大模型提供反馈,由大模型重新计算计划
示例
  • 名称:nginx,容器:"部署一个 nginx 容器,并将其暴露在端口 9000 上"
  • 名称:wordpress,容器:"部署一个 WordPress 容器和一个配套的 MySQL 容器,并将 WordPress 暴露在端口 9000 上"
恢复项目

使用此提示词开始新的聊天时,大模型将收到使用指定项目 name 创建的所有容器、卷和网络的状态。

这主要适用于清理工作,以防你丢失了负责创建许多容器的聊天记录。

📔 资源

该服务公开资源模板,而不是枚举当前正在运行的容器:

  • docker://containers/{container_id}/logs(text/plain)
  • docker://containers/{container_id}/stats(application/json)

使用 Docker 容器 ID 或名称读取任一 URI。

🔨 工具

容器
  • 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 密钥、数据库密码等。

除非大模型在你的本地计算机上运行,否则与大模型交换的任何敏感数据都必然会遭到泄露。

如果你有兴趣安全地向容器传递密钥,请在此仓库中提交一个 issue,说明你的使用场景。

审查已创建的容器

请务必审查 LLM 创建的容器。Docker 不是安全的沙盒,因此 MCP 服务可能会通过 Docker 影响主机。

出于安全考虑,此 MCP 服务不支持 --privileged 或 --cap-add/--cap-drop 等敏感 Docker 选项。如果你对此类功能感兴趣,请在此仓库中提交 issue,并说明你的使用场景。

🛠️ 配置

此服务使用 Python Docker SDK 的 from_env 方法。有关配置详情,请参阅 文档。

通过 SSH 连接到 Docker

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

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

"mcpServers": {
  "mcp-server-docker": {
    "command": "uvx",
    "args": [
      "mcp-server-docker"
    ],
    "env": {
      "DOCKER_HOST": "ssh://[email protected]"
    }
  }
}

💻 开发

建议使用 Devbox 配置开发环境。此服务使用 MCP Python SDK v2 的高级 MCPServer API,可直接进行检查:

uv sync --all-groups
uv run mcp dev src/mcp_server_docker/server.py:app
# or: npx @modelcontextprotocol/inspector uv run mcp-server-docker

无需 Docker 守护进程即可运行隔离的测试和 lint 套件:

uv run pytest
uv run ruff format --check src tests
uv run ruff check src tests

请参阅 devbox.json,了解实用的开发命令。

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

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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。