使用说明
代理docker mcp🐳
该项目是一个轻量级的重构版本 代理沙盒平台.
支持模型上下文协议(MCP)的轻量级Docker沙盒CLI。 为AI代理(如Cursor)构建,为它们提供了一个安全、隔离和可丢弃的环境来运行代码和命令。
当使用本地AI编码助手时,您通常希望他们运行测试、安装依赖项或执行shell命令,而不会弄乱您的主机。 agent-docker-mcp 无缝创建一个映射到您的项目的临时Docker容器,将其作为MCP服务器公开,供AI安全使用。
⚠️ 注: 该项目目前处于早期开发阶段 仅在Linux上使用Cursor IDE进行了测试.MOSC/Windows支持和与其他MCP客户端的兼容性可能会有所不同。
✨ 特性
- 即时沙盒: 立即启动一个隔离的环境,将身份完美地挂载到您当前的工作目录中。
- 原生MCP支持: 为代理提供标准工具,以安全地运行bash命令。
- 结构化输出:
exec_bash返回机器可读的stdout/stderr/exitCode/truncated领域。 - 后台工作: 在后台运行长期命令(开发服务器、监视器),并通过以下方式轮询它们
get_job_output. - 资源限制: 强化默认值包括内存/CPU/PID限制、功能下降和
no-new-privileges. - 严格模式: 一个标志选择在Docker之外禁用Docker,隔离网络和影子敏感文件。
- 自动脚手架: 自动设置
.cursor/mcp.json或.vscode/mcp.json与您最喜欢的IDE集成。 - 会话历史记录和回放: 内置SQLite跟踪记录每个命令及其输出。你甚至可以像一个asciinema演员一样“重播”这个环节!
🚀 快速开始
先决条件:
- Node.js>=18.0.0
- Docker桌面/引擎正在运行(对于强化默认值,建议使用Docker>=20.10)
您可以直接使用以下命令运行我们的CLI npx (无需安装):
# 1. Initialize the sandbox and setup agent configurations
npx agent-docker-mcp init
# 2. Start the sandbox for your project
npx agent-docker-mcp start
🛠 与AI IDE集成
光标
通过跑步 npx agent-docker-mcp init 在项目根目录中,CLI执行繁重的工作:
- 检查Docker运行状况并提取默认沙盒映像。
- 自动创建
.cursor/mcp.json(或.vscode/mcp.json)用于MCP集成。 - 自动创建
.cursorrules指示AI更喜欢沙盒而不是主机shell。
然后你需要去 Settings -> Tools & MCP 并启用 agent-docker MCP。
初始化后,AI代理将自动访问 agent-docker MCP工具!
副驾驶
只管跑 npx agent-docker-mcp init 在您的项目根目录中,一旦项目启动,代理将尝试启动MCP服务器本身!
📖 基本命令
# Initialize sandbox and scaffolding
npx agent-docker-mcp init
# Start a sandbox container for the current directory
npx agent-docker-mcp start
# Start in strict mode (no DooD, isolated network, .env shadowed)
npx agent-docker-mcp start --strict
# Execute a command inside the sandbox manually
# Quotes are handled safely, so `npx agent-docker-mcp exec echo "a b"` keeps "a b" as one argument.
npx agent-docker-mcp exec "npm run test"
# List active sandbox containers
npx agent-docker-mcp ps
# Stop the current sandbox
npx agent-docker-mcp stop
# List past sandbox sessions
npx agent-docker-mcp history
# Replay a specific session log (great for debugging agent actions)
npx agent-docker-mcp replay <session-id>
# Clean up orphaned sandbox containers
npx agent-docker-mcp cleanup
🔒 安全模型
沙盒使用多层隔离:
- 内核强制边界 (真正的隔离):cgroup的资源限制(内存、CPU、PID),能力边界集降至最小集,
no-new-privileges、非root用户执行,.git在中安装只读和可选的网络隔离/DouD禁用--strict模式。在严格模式下,Docker API访问由wollomatic/socket-proxysidecar加上一个瘦请求体过滤器,可以阻止特权容器、主机网络/pid、设备挂载和项目外绑定挂载。 - 防脚枪护罩:正则表达式黑名单阻止了明显危险的命令,如
rm -rf /或叉式炸弹。这是一个便利防护装置, 不 安全边界——确定的对手可以绕过字符串过滤。 - 默认模式下的已知剩余风险:容器可以访问主机的
docker.sock(DooD)并可能使用hostLinux上的网络。这相当于授予代理本地根访问权限。 仅对您信任的项目使用默认模式。 对于不受信任的工作负载或公共代码,请使用--strict.
⚙️ 配置
创建 .agent-docker/config.json 在项目根目录中覆盖默认值。CLI标志优先于配置文件。
{
"image": "ubuntu:22.04",
"strict": false,
"network": "host",
"allowDocker": true,
"composeProxy": true,
"resources": {
"memoryMb": 4096,
"cpus": 2,
"pidsLimit": 512
},
"env": ["KEY=VALUE"],
"protectPaths": [".env.local"]
}
| 字段 | 类型 | 默认值 | 描述 |
|---|---|---|---|
image |
字符串 | agent-docker-base:latest |
用于沙盒的Docker镜像。 |
strict |
布尔值 | false |
何时 true,禁用DooD,将网络切换到 bridge,并添加 .env 到 protectPathsDocker Compose仍然通过过滤套接字代理工作。 |
network |
"host" | "bridge" | "none" |
Linux: host,其他: bridge |
集装箱网络模式。显式值覆盖 strict. |
allowDocker |
布尔值 | true |
将主机Docker套接字挂载到容器中。 strict 迫使这 false. |
composeProxy |
布尔值 | true |
In strict 模式下,启动一个过滤套接字代理sidecar docker/docker compose 仍然工作。设置为 false 在严格模式下完全禁用Docker访问。 |
resources |
对象 | memoryMb: 4096, cpus: 2, pidsLimit: 512 |
cgroups对容器的限制。 |
env |
string[] | [] |
传递给容器的额外环境变量为 KEY=VALUE. |
protectPaths |
string[] | [] |
项目中要屏蔽的文件 /dev/null:ro。目录将被忽略。 |
🧠 原理
- 身份挂载:
agent-docker将当前目录装载到容器中(ubuntu-默认情况下基于)使用完全相同的路径。代理生成或编辑的任何代码都会立即反映在您的主机上。 - MCP 服务器:生成标准配置后(
init),AI连接到npx agent-docker serve,拿起专用工具(exec_bash,get_job_output等)在容器内。 - 执行与审计:命令通过以下方式发送到Docker
dockerode图书馆。解析执行流,并将其安全地记录到本地SQLite中(~/.config/agent-docker/db.sqlite),并安全返回AI。
🧪 发展
# Install dependencies
pnpm install
# Build TypeScript
pnpm build
# Run unit tests
pnpm test
# Run Docker-backed E2E tests
pnpm test:e2e
📄 许可证
麻省理工学院
