Docker MCP Server
项目简介
Docker MCP Server 是一个实现了 Model Context Protocol (MCP) 的服务器,专注于 Docker 容器管理。它通过 MCP 协议向 AI Agent 提供了一系列工具,使得 AI Agent 能够自动化执行 Docker 容器的生命周期管理、状态监控等操作。简单来说,你可以通过这个服务器,让 AI Agent 来帮你管理 Docker 容器。
主要功能点
- 容器生命周期管理: 支持创建、启动、停止、暂停、杀死和删除 Docker 容器。
- 实时容器状态监控: 可以获取容器的实时状态,例如运行中、已暂停、已退出等。
- Docker API 集成: 基于 Dockerode 库与 Docker API 交互,实现对 Docker 容器的控制。
- MCP 协议实现: 遵循 MCP 协议标准,可以与任何兼容 MCP 协议的客户端进行通信。
- 工具化操作: 将 Docker 容器管理操作封装成易于 AI Agent 调用的工具,例如创建容器、获取容器信息、管理容器状态等。
安装步骤
-
克隆仓库: 首先,你需要将仓库克隆到本地:
git clone https://github.com/braveTony44/docker-mcp-server.git cd docker-mcp-server -
安装依赖: 进入仓库目录后,使用 npm 安装项目依赖:
npm install -
配置 Docker 连接: 确保你的 Docker Engine 正在运行,并配置 Docker 连接信息。默认情况下,服务器会尝试连接到 '/var/run/docker.sock'。如果你的 Docker Socket 路径不同,或者需要通过其他方式连接 Docker,请修改 'config/docker.config.js' 文件中的配置。
// config/docker.config.js import Docker from 'dockerode'; const docker = new Docker({ socketPath: process.env.DOCKER_SOCKET || '/var/run/docker.sock' // 你可以根据需要修改 socketPath 或添加其他连接配置,例如 host 和 port }); export default docker;
服务器配置
要将 Docker MCP Server 集成到 MCP 客户端,你需要在客户端的 MCP 配置文件(通常是 'cline_mcp_settings.json')中添加以下服务器配置。这将告诉 MCP 客户端如何启动和连接到 Docker MCP Server。
{ "mcpServers": { "dockerMcp": { // 服务器名称,客户端通过此名称引用该服务器 "command": "node", // 启动服务器的命令,这里使用 node.js 运行 index.js "args": ["index.js"], // 启动命令的参数,这里指定运行 index.js 文件 "env": {}, // 环境变量,如果服务器需要额外的环境变量,可以在这里配置 "disabled": false, // 是否禁用该服务器,false 表示启用 "autoApprove": [] // 自动批准的工具列表,如果客户端请求调用列表中的工具,无需用户手动批准 } } }
配置参数说明:
- '"dockerMcp"': 这是你为该 Docker MCP 服务器定义的名称,在客户端调用工具时会用到这个名称。你可以自定义服务器名称。
- '"command": "node"': 指定用于启动服务器的命令。由于该服务器是 Node.js 应用,因此使用 'node' 命令。
- '"args": ["index.js"]': 指定传递给 'node' 命令的参数,这里是服务器的入口文件 'index.js'。
- '"env": {}': 允许你设置服务器运行时的环境变量。当前配置为空,表示不设置额外的环境变量。
- '"disabled": false': 设置为 'false' 表示启用该服务器。如果设置为 'true',客户端将不会连接到该服务器。
- '"autoApprove": []': 用于配置自动批准的工具列表。如果客户端请求调用的工具名称包含在此列表中,则无需用户手动批准即可执行。当前配置为空,表示所有工具调用都需要手动批准。
基本使用方法
配置完成后,MCP 客户端就可以通过 'dockerMcp' 这个服务器名称来调用 Docker MCP Server 提供的工具了。以下是一个使用示例,展示如何通过 '<use_mcp_tool>' 标签调用 'createConatinerByImage' 工具来创建一个新的 Docker 容器:
<use_mcp_tool> <server_name>dockerMcp</server_name> // 指定要使用的 MCP 服务器名称,这里是之前配置的 "dockerMcp" <tool_name>createConatinerByImage</tool_name> // 指定要调用的工具名称,这里是 "createConatinerByImage" <arguments> // 传递给工具的参数,以 JSON 格式表示 { "image_name": "nginx", // 要使用的 Docker 镜像名称 "tag": "latest" // 要使用的 Docker 镜像标签 } </arguments> </use_mcp_tool>
AI Agent 可以生成类似上述格式的指令,MCP 客户端解析这些指令后,会调用 Docker MCP Server 提供的相应工具,从而实现对 Docker 容器的管理。