菜单

Administrator
发布于 2026-02-21 / 0 阅读
0

OpenClaw添加联网搜索MCP的功能

背景与目标

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 的联网搜索扩展基线方案。