首页 资讯 下载 教程 Skills 社群

MCP 协议集成与外部工具连接

概述

MCP(Model Context Protocol,模型上下文协议)是 Anthropic 主导推出的开放标准,旨在统一 AI 模型与外部工具、数据源之间的通信方式。通过 MCP,OpenClaw 可以连接任何实现了该协议的服务端,获得文件系统访问、数据库查询、API 调用等扩展能力,而无需为每种工具单独编写集成代码。

OpenClaw 支持通过 ClawHub 技能市场安装 MCP 兼容的技能包,也支持直接在配置文件中声明自定义 MCP 服务端连接。

三种传输方式

MCP 协议定义了三种服务端通信传输方式,适合不同的部署场景:

stdio(标准输入输出):服务端以子进程形式运行,通过标准输入输出与 OpenClaw 通信。适合本地工具,延迟最低,无需网络配置。

SSE(Server-Sent Events):服务端作为独立 HTTP 服务运行,通过长连接推送事件。适合需要持久连接的远程服务。

HTTP(Streamable HTTP):无状态 HTTP 请求模式,适合无需持久连接的云端 API 服务。

配置 MCP 服务端

~/.openclaw/openclaw.json5 中通过 skills.entries 配置 MCP 服务端连接:

{
  skills: {
    entries: {
      // stdio 模式:本地文件系统 MCP 服务端
      "filesystem-mcp": {
        enabled: true,
        transport: "stdio",
        command: "npx",
        args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/docs"],
        env: {
          NODE_ENV: "production"
        }
      },

      // SSE 模式:远程数据库 MCP 服务端
      "database-mcp": {
        enabled: true,
        transport: "sse",
        url: "http://localhost:3100/sse",
        apiKey: { source: "env", id: "DB_MCP_TOKEN" }
      },

      // HTTP 模式:云端 API MCP 服务端
      "cloud-mcp": {
        enabled: true,
        transport: "http",
        url: "https://mcp.example.com/v1",
        apiKey: { source: "env", id: "CLOUD_MCP_KEY" }
      }
    }
  }
}

安装 ClawHub 上的 MCP 技能

ClawHub 技能市场提供大量已封装好的 MCP 兼容技能,安装后无需手动配置传输层:

# 搜索可用的 MCP 技能
clawhub search mcp

# 安装文件系统技能
clawhub install filesystem-tools

# 安装数据库查询技能
clawhub install sqlite-mcp

# 查看已安装技能列表
openclaw skills list

安装成功后,重启 OpenClaw 网关使技能生效:

openclaw gateway restart

配置参数说明

参数 类型 说明
enabled boolean 是否启用该 MCP 连接
transport string 传输方式:stdio | sse | http
command string stdio 模式下的启动命令
args array stdio 模式下的命令参数
url string SSE/HTTP 模式下的服务端地址
apiKey object 认证凭据,支持 SecretRef 格式
env object 注入到子进程的环境变量(stdio 模式)

验证连接状态

配置完成后,使用以下命令验证 MCP 服务端是否正常连接:

# 查看所有已加载技能和连接状态
openclaw skills status

# 查看特定技能的详细信息
openclaw skills info filesystem-mcp

# 实时查看技能加载日志
openclaw logs --filter skills

实用技巧

沙箱环境注意事项:当 OpenClaw 以 Docker 沙箱模式运行时,stdio 类型的 MCP 服务端子进程不会继承宿主机的环境变量。需要通过 agents.defaults.sandbox.docker.env 显式注入所需变量,或将变量内置到自定义 Docker 镜像中。

本地开发调试:开发自定义 MCP 服务端时,可以先用 stdio 模式快速验证功能,再切换到 SSE 或 HTTP 模式用于生产部署。

版本兼容性:OpenClaw 遵循 MCP 协议规范,但部分较旧的 MCP 服务端可能仅实现了协议的子集。遇到工具调用失败时,可查看 openclaw logs --level debug 输出的协议握手详情进行排查。