🎯 什么是 MCP?
MCP (Model Context Protocol) 是 OpenClaw 的核心扩展协议,它允许 AI Agent 与外部工具、服务和数据源进行标准化通信。截至 2026 年 6 月,全球已有超过 19,831+ 个 MCP 服务器在运行。
简单来说,MCP 就像是 Agent 的"万能插头",让你的 Agent 可以连接到任何外部服务:
- 数据库查询
- API 调用
- 文件操作
- 系统命令
- 第三方服务集成
🔌 MCP 核心概念
理解 MCP 的核心概念是掌握它的关键:
1. MCP 服务器 (MCP Server)
MCP 服务器是一个独立运行的服务,它实现了 MCP 协议,提供特定的工具和资源。每个 MCP 服务器专注于一个领域,比如:
- 数据库 MCP: 提供数据库查询和操作能力
- 文件系统 MCP: 提供文件读写和管理能力
- API 网关 MCP: 提供第三方 API 调用能力
2. 工具 (Tools)
工具是 MCP 服务器提供的具体功能,Agent 可以调用这些工具来完成任务。
3. 资源 (Resources)
资源是 MCP 服务器暴露的数据源,Agent 可以读取这些资源来获取信息。
# MCP 配置示例
mcp:
servers:
- name: "database-mcp"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-sqlite"]
env:
DATABASE_PATH: "/data/app.db"
- name: "filesystem-mcp"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem"]
env:
ROOT_PATH: "/home/user/documents"
⚡ 快速上手 MCP
让我们通过一个实际例子来学习如何使用 MCP:
示例:使用数据库 MCP 查询数据
# 1. 安装数据库 MCP 服务器
openclaw mcp install @modelcontextprotocol/server-sqlite
# 2. 配置 MCP 服务器
openclaw mcp configure database-mcp \
--database-path "/data/app.db"
# 3. 测试 MCP 连接
openclaw mcp test database-mcp
# 4. 在 Agent 中使用 MCP 工具
openclaw agent ask "查询最近 7 天的用户注册数据" \
--mcp database-mcp
💡 妙趣说: MCP 就像给 Agent 装上了"超能力",原本只能聊天的 Agent,现在可以帮你操作数据库、读写文件、调用 API 了!
🛠️ 构建自定义 MCP 服务器
当现有的 MCP 服务器无法满足你的需求时,你可以构建自己的 MCP 服务器:
1. 项目初始化
# 创建 MCP 服务器项目
mkdir my-custom-mcp
cd my-custom-mcp
npm init -y
# 安装 MCP SDK
npm install @modelcontextprotocol/sdk
# 创建入口文件
touch index.js
2. 实现 MCP 服务器
// index.js
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
const server = new Server({
name: 'my-custom-mcp',
version: '1.0.0',
}, {
capabilities: {
tools: {},
resources: {},
},
});
// 定义工具
server.setRequestHandler('tools/list', async () => ({
tools: [
{
name: 'weather_query',
description: '查询天气信息',
inputSchema: {
type: 'object',
properties: {
city: { type: 'string', description: '城市名称' },
},
required: ['city'],
},
},
],
}));
// 处理工具调用
server.setRequestHandler('tools/call', async (request) => {
const { name, arguments: args } = request.params;
if (name === 'weather_query') {
// 调用天气 API
const weather = await getWeather(args.city);
return {
content: [{ type: 'text', text: JSON.stringify(weather) }],
};
}
throw new Error(`Unknown tool: ${name}`);
});
// 启动服务器
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
}
main().catch(console.error);
3. 注册 MCP 服务器
# 注册自定义 MCP 服务器
openclaw mcp register my-custom-mcp \
--command "node" \
--args ["index.js"] \
--cwd "/path/to/my-custom-mcp"
# 测试自定义 MCP
openclaw mcp test my-custom-mcp
🔗 MCP 服务器组合
MCP 的真正威力在于服务器组合。你可以将多个 MCP 服务器组合起来,构建强大的工作流:
# 多 MCP 服务器配置
mcp:
servers:
- name: "database-mcp"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-sqlite"]
- name: "email-mcp"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-email"]
- name: "slack-mcp"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-slack"]
# 工作流示例:数据分析 + 报告发送
workflow:
- step: "查询数据"
mcp: "database-mcp"
tool: "query"
params:
sql: "SELECT * FROM sales WHERE date > '2026-06-01'"
- step: "生成报告"
agent: "report_generator"
input: "{{ query_result }}"
- step: "发送邮件"
mcp: "email-mcp"
tool: "send_email"
params:
to: "team@company.com"
subject: "销售报告"
body: "{{ report }}"
- step: "通知团队"
mcp: "slack-mcp"
tool: "send_message"
params:
channel: "#sales"
message: "新的销售报告已生成"
⏰ MCP 无状态化迁移
⚠️ 重要提醒: MCP 2026-07-28 无状态化规范即将锁定!距离截止日期仅剩 33 天。请尽快完成迁移!
MCP 无状态化是一个重要的架构变更,它将使 MCP 服务器更加轻量和可扩展。主要变更包括:
- 移除 initialize 握手: 不再需要初始化步骤
- 移除 Session ID: 不再维护会话状态
- 新增 Header: 使用 Mcp-Method 和 Mcp-Name Header
- 扩展框架升级: 新的扩展机制
# 迁移检查清单
openclaw mcp migration-check --all
# 自动迁移工具
openclaw mcp migrate --server my-custom-mcp
# 测试迁移后的服务器
openclaw mcp test --stateless my-custom-mcp
🌐 MCP 生态系统
MCP 生态系统正在快速发展,以下是 2026 年的一些重要趋势:
- 服务器数量爆发: 全球已有 19,831+ 个 MCP 服务器
- SDK 下载量激增: 月度 SDK 下载量达到 97M+
- 企业级支持: 越来越多的企业开始使用 MCP 构建内部工具
- 标准化进程: MCP 正在成为 AI Agent 通信的事实标准
热门 MCP 服务器
| 服务器 |
功能 |
下载量 |
| @modelcontextprotocol/server-sqlite |
SQLite 数据库操作 |
2.5M+ |
| @modelcontextprotocol/server-filesystem |
文件系统操作 |
1.8M+ |
| @modelcontextprotocol/server-github |
GitHub API 集成 |
1.2M+ |
| @modelcontextprotocol/server-slack |
Slack 消息集成 |
950K+ |