article
README
🚀 Docker Build MCP TypeScript Server
本项目是一个完全遵循 MCP(模型上下文协议)标准的 Docker Build MCP 服务器。它能为用户提供标准化、自动化的 Docker 镜像管理服务,借助 MCP 标准实现与各类客户端的无缝对接,极大提升 Docker 操作的便捷性与效率。
✨ 主要特性
- 💯 完全支持 MCP 标准:与 Cursor、Claude 等 MCP 客户端在工具发现和执行方面 100% 兼容。
- ⚙️ 自动化 Docker 镜像管理:通过 API 提供 build、run、stop、rm、rmi、push 等 Docker CLI 的主要功能。
- 📡 支持 SSE(服务器发送事件)和 stdio 模式。
- 🔧 高扩展性结构:每个 Docker 命令都作为独立工具实现,便于维护和扩展。
- 📝 执行命令和结果日志:执行所有 Docker 命令时,命令和结果会输出到控制台。
📂 目录结构
./
├── dist/ # 构建结果
├── node_modules/ # 依赖模块
├── src/
│ ├── config/ # 服务器和工具配置
│ ├── models/ # 类型/模式定义
│ ├── prompts/ # MCP 提示处理程序
│ ├── resources/ # 资源处理程序
│ ├── tools/ # 与 Docker 相关的 MCP 工具 (build, run, stop, rm, rmi 等)
│ ├── utils/ # 实用函数
│ ├── http-server.ts # HTTP 服务器入口点
│ └── index.ts # MCP 服务器入口点
├── tests/ # 测试代码
├── package.json # 项目元数据/脚本
├── tsconfig.json # TypeScript 配置
└── vitest.config.ts # 测试配置
💪 主要功能和支持工具
- docker_build:接收多个文件作为上下文,构建 Docker 镜像。
- docker_run:使用所需选项创建并运行容器。
- docker_ps:查询正在运行/所有容器的列表(支持 all 选项)。
- docker_stop, docker_stop_multi:停止容器(多个)。
- docker_rm, docker_rm_multi:删除容器(多个)(删除前自动停止)。
- docker_images:查询本地镜像列表。
- docker_rmi, docker_rmi_multi:删除镜像(多个)。
- docker_push:将标记的镜像推送到注册表。
- docker_login:登录 Docker 注册表。
- docker-inspect:查询容器/镜像的详细信息。
- docker-container-prune, docker-image-prune, docker-network-prune, docker-volume-prune:批量清理不必要的资源。
📦 安装指南
1. 安装依赖
npm install
2. 运行开发服务器(SSE 模式)
ENABLE_UNSAFE_SSE_TRANSPORT=1 npm run dev
3. 构建并部署运行
npm run build
npm start
💻 使用示例
基础用法
- MCP 客户端可以通过工具发现自动识别和执行上述工具。
- 每个工具通过子进程直接调用 Docker CLI,与实际 Docker 环境的操作相同。
🧪 测试
tests/目录中包含每个工具的测试代码。- 支持基于 vitest 的测试。
🤝 贡献与咨询
本项目欢迎扩展和贡献。如果您有关于 MCP 标准、Docker 自动化或额外功能的问题,请随时通过 Issue 或 PR 提出。
实际上,build、push、run 等操作是通过子进程调用 Docker CLI 完成的。
🐳 DinD(Docker 内 Docker)完全隔离型 MCP 服务器实战部署指南
1. 构建最新镜像并推送到 Docker Hub
docker build -t ekdh600/build-mcp:latest .
docker push ekdh600/build-mcp:latest
2. 提交并推送最新代码到 Git
cd docker-build-mcp-ts
git add .
git commit -m "docs: 更新 DinD 结构和 Kubernetes 支持"
git push
3. 基于 DinD 运行完全隔离的容器(适配 Kubernetes)
- 不挂载主机 Docker 套接字,仅使用内部 dockerd
- 在 Kubernetes 环境中也能正常工作
docker run --privileged --name build-mcp -d -p 3000:3000 ekdh600/build-mcp:latest
- 内部 dockerd 会自动启动,MCP 服务器在 0.0.0.0:3000 监听。
- MCP 工具(docker_ps、docker_run 等)仅控制容器内部的 Docker 环境(与主机完全隔离)。
- 可以在 Cursor、云环境或 Kubernetes 环境中注册并使用 MCP 服务器。
4. MCP 工具实战使用示例(Cursor/云环境)
- MCP 服务器地址:
http://<主机 IP>:3000 - 在 Cursor 中注册 MCP 服务器后,即可使用 docker_ps、docker_run 等工具。
- 创建和查询的容器都仅存在于 DinD 内部环境中。
Scan to join WeChat group