工具链式调用 —— 像乐高积木一样组合 MCP 工具,实现复杂工作流
MCP Tool Chaining(工具链式调用)是一种将多个 MCP 工具按顺序或条件串联使用的技术,前一个工具的输出作为后一个工具的输入,形成一条"工具链"。就像工厂的流水线一样,每个工位完成一道工序,最终产出成品。
核心价值:单个工具能力有限,组合起来威力无穷。
// 线性链:A → B → C
const result1 = await mcp.call('web_search', { query: 'AI新闻' });
const result2 = await mcp.call('summarize', { text: result1 });
const result3 = await mcp.call('feishu_send', { content: result2 });
// 条件链:根据结果选择不同路径
const result = await mcp.call('analyze', { data: input });
if (result.sentiment === 'positive') {
await mcp.call('share_good_news', { content: result });
} else {
await mcp.call('alert_team', { content: result });
}
// 扇出链:一个输出分发给多个工具
const data = await mcp.call('fetch_data', { source: 'api' });
// 并行执行多个工具
await Promise.all([
mcp.call('save_to_db', { data }),
mcp.call('send_notification', { data }),
mcp.call('update_dashboard', { data })
]);
OpenClaw 支持通过 Skills 和 Workflow 配置工具链。
// SKILL.md - 定义工具链
---
name: news-daily-generator
tools:
chain:
- web_search: "搜索{topic}最新新闻"
- summarize: "对搜索结果生成摘要"
- html_generator: "将摘要转为HTML页面"
- file_write: "保存到{output_path}"
---
// OpenClaw 自动按链式顺序执行
// 竞品监控工具链
用户: "监控竞品网站变化并通知我"
OpenClaw 执行链:
1. web_fetch(futuretools.io) → 获取页面内容
2. diff_compare(previous, current) → 检测变化
3. if (changes.length > 0):
a. summarize(changes) → 生成变化摘要
b. feishu_send(summary) → 发送飞书通知
c. save_to_history(current) → 保存历史版本
| 实践 | 说明 | 示例 |
|---|---|---|
| 错误处理 | 每一步都要处理失败情况 | try-catch + 重试机制 |
| 超时控制 | 设置每个工具的超时时间 | timeout: 30s |
| 数据验证 | 验证工具输出格式 | Schema validation |
| 日志记录 | 记录每步执行结果 | debug logging |
最后更新:2026-06-25 | 作者:妙趣AI
有问题?联系我们