OpenClaw Docker部署怎么接入MCP工具?
想让 OpenClaw 顺利调用 Git、curl 这些 MCP 工具,关键一步就是通过 Docker Compose 把 mcp-server 容器集成进来,并且把 MCP Server URL 设置成 http://mcp-server:3001。不然的话,工具调用要么直接跳过,要么就失败。

OpenClaw 是 OpenHands 的衍生项目,专门强化了 MCP 工具集成能力,但最新版本并没有提供开箱即用的 Docker 镜像来支持 MCP 工具链。要让 OpenClaw 容器真正调用 Git、curl、jq、browser 这些工具,必须在容器启动前完成工具注入和权限打通,否则所有调用都会失败,或者被沙箱拦截。
确认 OpenClaw 是否已启用 MCP 模块
进入 OpenClaw Web UI 后,点击左下角的「Settings」→「Agent Configuration」→ 展开「Advanced」,检查
【MCP Server URL】
这个字段默认应该是 http://localhost:3001,如果显示为 http://mcp-server:3001 或者空白,就需要重建容器,并显式挂载 MCP 服务。
用 Docker Compose 启动带 MCP 的 OpenClaw
方法一:使用最新推荐的多服务编排配置(推荐)
① 创建 docker-compose.yml 文件,内容如下:
services:
mcp-server:
image: docker.all-hands.dev/all-hands-ai/mcp-server:0.14
ports:
- "3001:3001"
volumes:
- ~/.openhands-mcp:/root/.mcp
openhands:
image: docker.all-hands.dev/all-hands-ai/openclaw:0.14
ports:
- "3000:3000"
environment:
- MCP_SERVER_URL=http://mcp-server:3001
- SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.14-nikolaik
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ~/.openhands-state:/.openhands-state
- ${WORKSPACE_BASE:-$PWD/workspace}:/opt/workspace_base
depends_on:
- mcp-server
② 在终端中执行 docker-compose up -d,等待两个容器都显示 healthy 状态。
③ 浏览器访问 http://localhost:3000 → Settings → Agent Configuration → Advanced → 检查 MCP Server URL 是否自动填充为 http://mcp-server:3001。如果没有自动填充,手动输入并保存。
这一步不能跳过:MCP Server URL 必须指向容器内可解析的地址。如果填成 localhost:3001,OpenClaw 容器内部就无法连接到 mcp-server 容器。
手动验证 MCP 工具是否就绪
在 OpenClaw Web UI 中新建一个会话,输入指令:“列出当前工作区所有 .py 文件”,然后发送。
如果返回结果包含文件名列表(比如 main.py、utils.py),说明 MCP 的 filesystem.list_files 工具已经成功注册并调用;如果返回“Tool not found”或者超时无响应,那就说明 MCP 服务没有连通,或者工具没有启用。
这时候需要检查 mcp-server 容器的日志:docker logs mcp-server | grep -i "registered tool",确认能看到类似 registered tool: git.commit、filesystem.read_file 的输出行。
【关键前提】
host.docker.internal 或调用宿主机上的二进制工具。如果你改过 user: 1001 配置,请删掉那一行。