Technical Guide

16. MCP:外部工具如何接进 OpenClaw

看懂 OpenClaw 的 MCP 相关目录:agent bundle MCP、配置归一化、外部 server 和工具物化。

这篇解决什么问题

MCP 让外部工具以统一协议接入 Agent。

OpenClaw 源码里有独立的:

src/mcp/
src/config/mcp-config-normalize.ts
src/config/mcp-config.test.ts
src/agents/agent-bundle-mcp-*.ts

说明 MCP 不是附属脚本,而是 runtime 需要处理的能力。

MCP 在 OpenClaw 里解决什么

可以理解成:

配置 MCP server
→ 连接或启动 server
→ 发现 tools
→ materialize 到 agent bundle
→ 纳入工具策略
→ Agent 调用外部工具

最终还是进入 Agent Runtime 的工具面。

为什么会有 agent-bundle-mcp

OpenClaw 的 Agent Runtime 要构造一个 agent bundle:模型、上下文、tools、resources、skills 等。

MCP tools 需要被 materialize 进这个 bundle,模型才能看到并调用。

所以你会看到:

agent-bundle-mcp-materialize.ts
agent-bundle-mcp-runtime.ts
agent-bundle-mcp-tools.ts
agent-bundle-mcp-types.ts

这些文件名已经说明了主线。

配置归一化很重要

MCP 配置可能来自不同地方、不同写法、不同插件。

所以 src/config/mcp-config-normalize.ts 负责把它们整理成 runtime 可以使用的形态。

如果 MCP server 配了但没有工具出现,不要只查 server。也要查配置是否被正确归一化。

MCP 和 Plugin 怎么选

适合 MCP:

外部服务已经有 MCP server
希望跨 Agent/跨工具复用
能力边界清晰

适合 Plugin:

深度绑定 OpenClaw
要提供 channel/provider/resource package
需要 OpenClaw plugin-sdk 能力

排障顺序

1. MCP 配置是否被加载
2. server 是否能启动/连接
3. tools 是否被发现
4. tools 是否 materialize 到 bundle
5. tool policy 是否允许
6. provider 是否支持对应 tool call
7. 执行错误是否被隐藏或 redacted

下一篇看什么

下一篇看安全边界。