☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
如果您希望将 qclaw 与外部能力系统(如盈米且慢、cloudq 等)打通,实现技能解耦与标准化调用,则必须通过 mcp 协议完成接入。mcp(model control protocol)是 openclaw 生态中定义的统一工具通信协议,qclaw 作为其封装产物,原生支持 mcp 客户端模式,可主动发现、连接并调用符合 mcp 规范的远程服务。以下是完成 mcp 协议接入与 agent 扩展开发的具体操作路径:
一、配置 MCP 服务器连接参数
QClaw 启动时会读取 mcp_servers.yml 配置文件,该文件需置于 QClaw 安装目录下的 config/ 子目录中。此步骤决定 QClaw 能否识别并建立与目标 MCP 服务的初始通信链路。
1、使用文本编辑器新建或打开 config/mcp_servers.yml 文件。
2、按 YAML 格式填入至少一个 MCP 服务定义,示例内容如下:
name: yingmi-qieman
endpoint: http://localhost:8080
transport: http
3、保存文件后重启 QClaw 客户端,使其重新加载配置。
二、启用 MCP 工具自动注册机制
QClaw 在启动过程中会通过 mcp/manager.go 中的 ConnectAll 方法,向每个已配置的 MCP 服务器发送 initialize 请求,并在握手完成后调用 refreshTools 拉取可用工具列表。该机制确保本地 Agent 可实时感知远程服务提供的能力集合。
1、确认目标 MCP 服务已正常运行且监听在配置的 endpoint 地址上。
2、检查 QClaw 日志输出中是否出现类似 "Connected to MCP server: yingmi-qieman" 的成功提示。
3、若未出现,需验证 MCP 服务返回的 /tools 接口是否返回标准 JSON 格式的工具描述数组。
三、在 Skill 中调用 MCP 工具
QClaw 的 Skill 编排层支持直接引用已注册的 MCP 工具,无需额外 SDK 或 HTTP 封装。Agent 在执行任务时,可通过工具名称匹配方式触发远程调用,由底层 mcp/client.go 完成序列化、传输与响应解析。
1、在 Skill 的 YAML 定义文件中,于 steps 字段内添加类型为 mcp_call 的动作节点。
2、设置 tool_name 字段为 MCP 服务器所暴露的工具名,例如 get_fund_performance。
3、在 parameters 下传入符合该工具 Schema 的键值对,如 fund_code: "000001"。
四、本地开发自定义 MCP 服务器
若需扩展专属能力,可基于 OpenClaw 提供的 mcp/server 模块快速搭建兼容服务。QClaw 仅要求服务实现标准 MCP 初始化与工具调用接口,不强制语言或框架。
1、克隆 https://github.com/OpenClaw/mcp-server-go 仓库获取参考实现。
2、在 main.go 中注册自定义工具函数,例如 func GetWeather(city string) (string, error)。
3、运行服务后,确保其响应 GET /tools 返回包含该函数元信息的 JSON 数组。
五、调试 MCP 连接与工具执行异常
当 MCP 工具在 Skill 中调用失败时,QClaw 会在日志中记录具体错误类型。常见原因包括网络不可达、工具名不匹配、参数格式错误或远程服务内部异常。调试需结合客户端与服务端双向日志定位根因。
1、在 QClaw 设置中开启 debug 日志级别,查看 mcp/client.go:CallTool 的完整请求与响应体。
2、使用 curl 手动请求目标 MCP 服务的 POST /call 接口,传入相同 payload 验证服务端行为。
3、检查 QClaw 日志中是否出现 "failed to execute tool: xxx, error: xxx" 类错误信息,并比对工具名拼写与大小写。











