openclaw需通过docker compose集成mcp-server容器并正确配置mcp server url为http://mcp-server:3001,才能调用git、curl等mcp工具;否则工具调用将跳过或失败。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw 是 OpenHands 的衍生项目,专注强化 MCP(Master Control Program)工具集成能力,但官方未提供开箱即用的 Docker 镜像支持 MCP 工具链。要让 OpenClaw 容器真正调用 MCP 工具(如 Git、curl、jq、browser 等),必须在容器启动前完成工具注入与权限打通,否则所有工具调用都会失败或被沙箱拦截。
确认 OpenClaw 是否已启用 MCP 模块
进入 OpenClaw Web UI 后,点击左下角「Settings」→「Agent Configuration」→ 展开「Advanced」,检查 【MCP Server URL】 字段是否为空。若为空,说明当前运行的容器未加载 MCP 服务,后续所有工具调用将直接跳过,不报错也不执行。
该字段默认应为 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。若未填充,手动输入并 Save。
这一步不能跳过: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 的输出行。
【关键前提】 mcp-server 容器必须使用 root 用户启动,否则无法挂载 host.docker.internal 或调用宿主机二进制工具。若你改过 user: 1001 配置,请删掉该行。










