概述
要想让本地部署的 OpenClaw 顺利调用外部运维工具、数据库或 API 服务,必须借助 MCP 协议使 Agent 能够识别并执行结构化工具请求。整个流程分为四步:设置 MCP 服务端地址 → 启动 MCP 服务 → 注册工具列表 → 重启 OpenClaw。若缺少任一环节,工具调用将被忽略,导致无法生成 tool_call 消息。
第一步:确认 OpenClaw 已启用 MCP 客户端支持
打开项目根目录下的 .agent/config.yaml,检查 llm 节下是否存在 mcp_server_url 字段。若不存在,手动添加一行:
mcp_server_url: http://localhost:3000
【务必与后续启动的 MCP 服务端口保持一致】,否则 OpenClaw 在推理过程中将无法构造 MCP 格式的 tool_call 消息,所有工具调用都将被忽略。
小提示:
默认端口为3000,若自定义端口,请同步修改此处URL。例如改为 http://localhost:8080。
第二步:启动兼容 OpenClaw 的 MCP 服务端
启动 MCP 服务端有两种方式,可选择任意一种。
方法一:使用最新 fastmcp 快速启动
执行以下命令安装并启动:
pip install "mcp[cli]"
mcp server --host 0.0.0.0 --port 3000
服务启动后终端会显示 "MCP 服务已启动,地址为 http://0.0.0.0:3000",表示已就绪。
方法二:运行自定义 MCP 工具集(需 Python 3.9+)
新建 my_tools.py,写入一个符合 MCP 规范的工具函数,例如:
from mcp.server import Server
server = Server()
@server.tool
def get_disk_usage() -> str:
return "sda: 87% full"
server.run()
然后执行 python my_tools.py。注意:该脚本需保持持续运行,关闭后连接即中断。
常见问题:
Q:启动时提示端口被占用如何解决?
A:修改 --port 参数为其他端口(如 3001),并同步更新 config.yaml 中的 mcp_server_url 地址。
第三步:注册 MCP 工具到 OpenClaw 运行时环境
即便 MCP 服务已正常运行,LLM 仍需知晓哪些工具可用。必须通过 mcp_tools.json 文件来声明工具列表。
- 请确认
.agent/skills/目录下存在mcp_tools.json文件,如不存在则手动创建。 - 编辑该文件,填入服务端暴露的工具列表,格式如下:
[
{
"name": "get_disk_usage",
"description": "获取磁盘使用率",
"input_schema": {}
}
]
- 重启 OpenClaw 主进程。此时 Agent 加载技能时将解析该 JSON,并把其中的工具名注入 LLM 提示词的可用工具列表。
若跳过此步骤,即使 MCP 服务正在运行,LLM 也无法知道该工具的存在——它仅识别 .agent/skills/ 中声明过的工具名。
小提示:
多个工具可依次添加,每个工具必须包含 name、description 和 input_schema 字段。input_schema 可为空对象 {},也可定义参数结构。
第四步:验证 MCP 工具调用是否生效
启动 OpenClaw CLI 交互终端:
codeclaw --interactive
输入自然语言指令,例如:
查一下当前磁盘使用情况
观察日志输出:
- 若出现类似
tool_call: {"name": "get_disk_usage", "args": {}}以及后续tool_result: "sda: 87% full",则表明 MCP 通路已成功建立。 - 若仅返回“我不清楚如何操作”,则说明工具未注册或 MCP 服务未响应,需重新检查
mcp_server_url配置及端口连通性。
常见问题:
Q:验证时未出现 tool_call 日志,但配置似乎正确?
A:检查 .agent/skills/mcp_tools.json 中的工具名是否与 MCP 服务端暴露的工具名完全一致(注意大小写)。同时确认 config.yaml 中的 mcp_server_url 端口是否与 MCP 服务启动端口匹配。

总结
通过以上四个步骤,即可在本地部署的 OpenClaw 中成功接入 MCP 工具。核心要点:配置地址、启动服务、注册工具、重启应用,缺一不可。配置完成后,Agent 即可根据自然语言指令自动调用外部运维工具、数据库或 API 服务,实现真正的智能运维。
