背景与目标
OpenClaw 的官方扩展路径以 skills/plugins 为主。实现“联网搜索”的推荐做法是通过 MCP Server 提供搜索能力,再用 mcporter 作为 MCP 调度与调用入口,将 MCP 工具纳入 OpenClaw 的可用技能体系,从而实现稳定、可替换、可扩展的联网搜索能力。
本文目标:为 OpenClaw 接入 Tavily 提供的远程 MCP 搜索服务,并在 OpenClaw 中可用。
架构概览
- Tavily MCP:远程 MCP Server,提供联网搜索工具(HTTP SSE 方式)。
- mcporter:MCP 客户端与运行时,负责配置 MCP Server、列出工具、按 schema 调用工具。
- OpenClaw skill(mcporter):OpenClaw 通过 skill 调用 mcporter,从而间接调用 MCP 工具。
该方式具备以下特性:
- 运行隔离:MCP 调用与 OpenClaw 主进程解耦。
- 配置集中:MCP server 信息保存在 mcporter 配置文件中,便于复用与迁移。
- 工具标准化:所有调用由 MCP schema 校验,参数错误可快速定位。
环境要求
- Node.js 18+(建议)
- npm 可用
- 已获取 Tavily API Key
- OpenClaw 已安装并可运行
安装与启用 mcporter
mcporter 可以通过 npx 临时运行,但 OpenClaw 的 mcporter skill 依赖系统 PATH 中存在 mcporter 可执行文件,因此建议全局安装。
npm i -g mcporter
验证可执行文件:
which mcporter
mcporter --version
验证 OpenClaw 侧 skill 状态(应从 missing 变为 ready):
openclaw skills list
配置 Tavily MCP Server
使用 mcporter 将 Tavily MCP 作为一个命名 server 写入配置文件。示例使用 ~/.mcporter/mcporter.jsonc。
mkdir -p ~/.mcporter
写入并持久化配置(将 YOUR_TAVILY_KEY 替换为实际 key):
mcporter list \
--http-url "https://mcp.tavily.com/mcp/?tavilyApiKey=YOUR_TAVILY_KEY" \
--name tavily \
--persist ~/.mcporter/mcporter.jsonc
验证已成功注册并可列出工具:
mcporter list --config ~/.mcporter/mcporter.jsonc tavily
添加默认参数
调整搜索个数、返回图片、搜索深度
在 tavily server 的配置块里增加 headers(字段名可能因 mcporter 版本略有差异,但思路一致:给 HTTP 请求加 header):
{
"servers": {
"tavily": {
"transport": "http",
"url": "https://mcp.tavily.com/mcp/?tavilyApiKey=YOUR_KEY",
"headers": {
"DEFAULT_PARAMETERS": "{"include_images":true, "search_depth": "advanced", "max_results": 10}"
}
}
}
}
调用搜索工具与参数格式
根据实际 schema,tavily_search 的入参为单个字符串 query,不接受对象形式,也不接受数组形式。调用时必须传入“JSON 字符串”,而不是 JSON 对象或 JSON 数组。
正确示例:
mcporter call --config ~/.mcporter/mcporter.jsonc tavily.tavily_search \
--json '"OpenClaw web_search 怎么配置"'
常见错误与原因:
--json '{"query":"..."}':工具不接受关键字参数对象,触发 missing/unexpected keyword 相关校验错误。--json '["..."]':工具入参需要 string,传入 list 会触发 string_type 校验错误。--json '["...", 5]':同样属于 list,且 schema 未暴露 max_results 之类参数。
若需要控制返回条数或搜索深度,应以 mcporter list 输出的工具列表与 schema 为准,优先寻找提供 options 的其他工具;若仅暴露 tavily_search(query: str),则只能使用默认策略。
在 OpenClaw 中使用 MCP 联网搜索
当 mcporter 可执行文件存在且 OpenClaw 的 mcporter skill 处于 ready 状态后,可通过 OpenClaw 调用该 skill 来完成 MCP 工具调用。调用要点:
- 指定 mcporter 配置文件路径
~/.mcporter/mcporter.jsonc - 指定 MCP server 名称
tavily - 指定 tool 名称
tavily_search - 传入符合 schema 的参数(单个字符串 query)
示例指令(在 OpenClaw 会话中):
- 使用 mcporter skill,读取
~/.mcporter/mcporter.jsonc,调用tavily.tavily_search,查询OpenClaw web_search 怎么配置,返回原始结果。
调用时出现 pydantic 校验错误
- 原因:
--json入参类型与 schema 不匹配 - 处理:先运行
mcporter list查看 tool schema,再按 schema 传参。对于tavily_search,使用 JSON 字符串形式:--json '"...内容..."'
Tavily MCP 无法访问
- 原因:网络受限、DNS、代理策略或 key 不可用
- 处理:检查出口网络与代理配置,确认 key 有效,必要时在可访问网络环境中验证
mcporter list --http-url ...
总结
通过 mcporter 接入 Tavily 提供的远程 MCP 搜索服务,可在 OpenClaw 未内置 mcp 命令的情况下实现联网搜索能力。实施关键点包括:全局安装 mcporter 以启用 OpenClaw 的 mcporter skill、使用持久化配置文件统一管理 MCP server、严格按 MCP schema 传参调用工具。该方案具备良好的隔离性与可维护性,适合作为 OpenClaw 的联网搜索扩展基线方案。