Docker MCP Gateway

Docker MCP Gateway 是统一管理多个 MCP Server 的网关,实现一次配置、多客户端复用。

#type / concept #status / evergreen #tech / ai #resource / docker #resource / mcp

[!info] related notes

Docker MCP Gateway

一句话定义

Docker MCP Gateway 是 Docker MCP Toolkit 的核心组件,作为一个常驻的网关进程,统一代理多个容器化的 MCP Server,让所有 AI 客户端只需连接一个入口即可访问所有工具。

核心机制

网关模式(Gateway Pattern)

传统网状直连:
Copilot ──→ MCP Server A
OpenCode ──→ MCP Server A
Codex ──────→ MCP Server B

Docker Gateway 星型结构:
Copilot ──→ Gateway ──→ MCP Server A
OpenCode ──→ Gateway ──→ MCP Server B
Codex ──────→ Gateway ──→ MCP Server C

核心价值

  1. 配置解耦:更新 API Key 只需在 Docker 改一次,所有 AI 自动生效
  2. 容器隔离:每个 MCP Server 运行在独立容器中,环境不冲突
  3. 统一入口:所有 AI 客户端只需配置一条 Gateway 命令
  4. 自动热更新:新增工具后所有客户端立即可用

启动命令

docker mcp gateway run -q

关键参数

  • -q(quiet 静默模式):必须添加,否则 Docker 启动日志会污染 MCP 的 stdio JSON 通信信道
  • --profile <name>:指定使用哪个配置文件(Profile)

通信协议

Gateway 使用 MCP 标准协议(JSON-RPC over stdio)与 AI 客户端通信:

  • AI 客户端通过 stdin 发送 JSON-RPC 请求
  • Gateway 路由请求到对应的容器化 Server
  • Server 执行后通过 Gateway 返回结果到 stdout

最小例子

在 opencode.json 中配置

{
  "mcp": {
    "docker-toolkit-gateway": {
      "type": "local",
      "command": [
        "docker",
        "mcp",
        "gateway",
        "run",
        "-q"
      ]
    }
  }
}

在 VS Code 的 mcp.json 中配置

{
  "mcpServers": {
    "docker-toolkit-gateway": {
      "command": "docker",
      "args": [
        "mcp",
        "gateway",
        "run",
        "-q"
      ]
    }
  }
}

边界与易混淆点

不是

  • 不是 Agent 框架:Gateway 只负责路由和代理,不做任务编排
  • 不是 MCP Server:Gateway 本身不提供工具,而是代理后端 Server 的工具
  • 不是包管理器:虽然有 Catalog,但核心价值是统一网关而非简化安装

必须满足的前提

  • Docker Desktop 必须在后台运行
  • 需要较新版本的 Docker Desktop 且开启 Beta 功能中的 MCP Toolkit
  • Gateway 启动的 Catalog 中至少有一个 Server,否则可能闪退

常见问题

Q: 为什么必须加 -q 参数?

MCP 协议的 stdio 模式要求 stdout 只能包含合法 JSON。Docker 默认会输出启动日志(如 Reading configuration...),这些非 JSON 内容会污染通信信道,导致 AI 客户端解析失败。

Q: Windows 下 OAuth 报错 dial unix \\.\pipe\dockerBackendApiServer 怎么办?

这是 Docker Desktop 在 Windows 下的已知 Beta 版小 Bug,不影响核心功能运行,可忽略。

Q: Brave 搜索的密钥没配好?

在 Docker Desktop 的 MCP 界面中,给 Brave 填上 API Key 即可消除 Warning: Secret 'brave.api_key' not found 警告。

相关工具

Docker Gateway 还内置了一些辅助工具:

  • mcp-find:查找 MCP 服务器目录
  • mcp-add:添加 MCP 服务器到注册表
  • mcp-remove:从注册表移除 MCP 服务器
  • mcp-exec:执行当前会话中存在的工具
  • mcp-config-set:设置 MCP 服务器的配置值
  • code-mode:编写代码直接调用其他 MCP
创建于 2026/3/24 更新于 2026/5/27