Docker MCP Gateway
Docker 的 MCP Server 集中代理与生命周期管理工具:按 Profile 提供工具集,并以容器隔离、凭据注入与调用追踪管理后端 Server。
[!abstract] 一句话结论 Docker MCP Gateway 让 Agent Host 只连接一个 MCP 入口;Gateway 再依据 Profile 选择、启动和隔离后端 MCP Server,并集中处理凭据、路由和可观测性。
[!info] related notes
- 所属 MOC: docker-mcp-toolkit-moc, mcp-moc
- 前置概念: MCP 协议, 本地 MCP Server, Docker
- 架构关系: mcp-gateway-architecture-evolution, MCP 在 Agent Harness 中的配置架构
- 操作落地: 项目级 MCP 配置指南, MCP 客户端配置指南
Docker MCP Gateway
它解决什么问题
多个 Agent、多个项目各自直连多个 MCP Server 时,命令、依赖、凭据和权限很容易重复并漂移。Docker MCP Gateway 是 Docker 的集中代理:Host 配置 Gateway;Gateway 再管理 Profile 中可用的后端 Server。
它是一个对 Host 表现为 MCP Server 的代理层,同时也是后端 Server 的生命周期管理者。它不是 Agent 编排器,也不替代模型对工具的选择;它解决的是连接、隔离和治理。
运行链路
Codex / Claude / VS Code
→ stdio Gateway command 或 Toolkit 集成
→ Docker MCP Gateway(Profile、路由、凭据、审计)
→ 按需启动受限 MCP Server 容器
→ 工具结果经 Gateway 返回 Host
Docker 文档说明,Gateway 会根据工具请求确定后端 Server;Server 未运行时启动相应容器,注入所需凭据、施加安全限制并转发结果。Docker Desktop 启用 MCP Toolkit 时,Gateway 可在后台自动运行;手动 docker mcp gateway run 更适合需要明确 stdio 接入的高级场景。
Profiles 是项目能力集,不是协议概念
Profile 是 Docker 控制面定义的一组可用 Server。例如:
common: Context7、只读 GitHub
bodysense: CodeGraph、数据库只读、浏览器调试
dailyuse: CodeGraph、Nx、浏览器调试
运行时选择一个 Profile:
docker mcp gateway run --profile bodysense -q
因此优雅的仓库实践不是在每个项目复制所有 Server 配置,而是让项目声明“选择哪个 Profile”,把镜像、Secret 和容器限制保留在 Docker 的控制面。Profile 是 Docker 的产品能力,不是所有 MCP Host 都理解的通用字段。
安全与运行边界
Docker Gateway 的价值主要来自将后端 Server 放进受限容器,并集中管理:
- 容器的生命周期、依赖与环境一致性。
- 凭据注入,避免把 secret 写进 Git 中的项目配置。
- 受限权限、网络与资源使用。
- 调用日志与 trace,便于排查谁调用了哪个工具。
容器隔离不是自动安全保证:把宿主目录挂载进容器、把 Docker socket 给社区 MCP、或给数据库写权限,仍会显著扩大影响范围。Profile 应优先提供只读工具,写入/生产工具单独分组并保持 Host 审批。
配置 Host 时的 stdio 约束
{
"mcpServers": {
"project-gateway": {
"command": "docker",
"args": ["mcp", "gateway", "run", "--profile", "bodysense", "-q"]
}
}
}
这里 Gateway 是 Host 启动的 stdio 子进程。stdout 必须只承载 JSON-RPC,-q 用于避免普通 Docker 输出污染协议流;日志应通过 stderr 或 Docker 的日志界面查看。不同 Host 的文件位置与字段见 项目级 MCP 配置指南。
何时选它,何时不选
适合:已长期运行 Docker、多个 Agent 需要相同的容器化工具、希望统一凭据与隔离、并能接受 Docker MCP Toolkit 的产品依赖。
不一定适合:只需要一个本地 CLI Server、机器没有常驻 Docker、或需要一个可长期部署到内网并按多用户身份暴露多个 HTTP endpoint 的远程控制平面。后一类需求需要评估专门的远程网关/注册中心,而不是把 Docker Gateway 误当成所有场景的完全替代品。
[!warning] 产品状态 Docker MCP Catalog and Toolkit 仍标为 Beta;部分治理能力具有额外产品可用性限制。配置前应以当前 Docker Desktop 和官方文档为准,避免把实验性行为写成基础设施承诺。
验证路径
- 确认 Docker Desktop 与 MCP Toolkit 已启用,且目标 Profile 有至少一个 Server。
- 使用目标 Host 配置 Gateway,重启会话并确认 Gateway 已连接。
- 调用一个只读工具,检查其容器启动和返回结果。
- 查看 Gateway/容器日志,确认没有 stdout 协议污染、缺失凭据或权限拒绝。
- 再逐步添加写入或网络能力,并保留审批与最小权限。