🎬 什么是 MCP (Model Context Protocol)?
凌晨2点15分,我盯着屏幕上密密麻麻的工具列表,突然明白了——MCP 就是 AI Agent 的"工具箱协议"。
世界上有一种协议叫 MCP,它让 AI Agent 能调用外部工具,就像王家卫电影里的角色,每个人都有自己的专属道具。
🔍 MCP 核心概念
- MCP Server:提供工具的服务端(如文件系统、数据库、API)
- MCP Client:调用工具的客户端(OpenClaw Agent)
- Tool:具体的功能单元(如 read_file、query_db)
- Protocol:标准化的通信协议(基于 JSON-RPC 2.0)
🚀 快速开始:配置你的第一个 MCP Server
1. 安装 MCP Server
# 示例:安装文件系统 MCP Server
npm install -g @modelcontextprotocol/server-filesystem
# 示例:安装 SQLite MCP Server
npm install -g @modelcontextprotocol/server-sqlite
# 查看已安装的 MCP Servers
openclaw mcp list
2. 配置 OpenClaw 加载 MCP Server
# 编辑 OpenClaw 配置文件
vim ~/.openclaw/config.json
# 添加 MCP 配置
{
"mcpServers": {
"filesystem": {
"command": "mcp-server-filesystem",
"args": ["/path/to/allowed/directory"],
"env": {}
},
"sqlite": {
"command": "mcp-server-sqlite",
"args": ["/path/to/database.db"],
"env": {}
}
}
}
# 重启 OpenClaw 加载配置
openclaw restart
3. 验证 MCP Server 是否正常工作
# 列出所有可用的 MCP 工具
openclaw mcp tools
# 输出示例:
# ✓ filesystem (3 tools)
# - read_file: 读取文件内容
# - write_file: 写入文件内容
# - list_directory: 列出目录内容
#
# ✓ sqlite (2 tools)
# - query: 执行 SQL 查询
# - insert: 插入数据
# 测试调用工具
openclaw mcp call filesystem read_file --path=/etc/hostname
🎨 实战案例1:用 MCP 构建文件管理 Agent
场景:Agent 需要读取、分析、整理本地文件。
Step 1: 配置文件系统 MCP
{
"mcpServers": {
"docs": {
"command": "mcp-server-filesystem",
"args": ["/home/user/documents"],
"env": {}
}
}
}
Step 2: Agent 调用示例
# 用户请求
"帮我整理 /home/user/documents 下的 PDF 文件,按日期分类"
# Agent 执行流程(伪代码)
1. tools.list_directory(path="/home/user/documents")
-> 返回文件列表
2. 过滤出 .pdf 文件
3. 对每个 PDF:
tools.read_file(path="/home/user/documents/xxx.pdf")
-> 提取创建时间(或从文件名解析)
4. tools.write_file(
path="/home/user/documents/2026-05/xxx.pdf",
content=binary_data
)
5. 返回整理结果
🎨 实战案例2:数据库查询 Agent
场景:用户用自然语言查询数据库。
# 配置 SQLite MCP
{
"mcpServers": {
"mydb": {
"command": "mcp-server-sqlite",
"args": ["/home/user/data.db"],
"env": {}
}
}
}
# 用户请求
"查询2026年5月的销售额,按产品分类汇总"
# Agent 执行
1. 将自然语言转换为 SQL:
SELECT product, SUM(amount)
FROM sales
WHERE date >= '2026-05-01' AND date < '2026-06-01'
GROUP BY product;
2. tools.call("mydb", "query", {sql: "..."})
-> 返回查询结果
3. 格式化结果并回复用户
🎨 实战案例3:多工具协同(MCP Orchestration)
场景:Agent 需要组合多个 MCP 工具完成复杂任务。
# 配置多个 MCP Servers
{
"mcpServers": {
"web": {
"command": "mcp-server-fetch",
"args": []
},
"llm": {
"command": "mcp-server-ollama",
"args": ["--model", "llama3"]
},
"db": {
"command": "mcp-server-sqlite",
"args": ["/data/news.db"]
}
}
}
# 任务:抓取新闻 → 用 LLM 总结 → 存入数据库
# Agent 工作流:
1. tools.call("web", "fetch", {url: "https://news.example.com/latest"})
-> 返回 HTML 内容
2. tools.call("llm", "summarize", {text: html_content})
-> 返回新闻摘要
3. tools.call("db", "insert", {
table: "news",
values: {
title: "...",
summary: "...",
date: "2026-05-19"
}
})
4. 返回:已保存 10 条新闻摘要到数据库
🔒 MCP 安全最佳实践
安全检查清单
- ✅ 限制文件系统访问范围(只给必要目录)
- ✅ 数据库使用只读账号(除非必需写权限)
- ✅ API Keys 通过环境变量传递(不要硬编码)
- ✅ 网络请求白名单(限制访问的域名)
- ✅ 日志记录所有工具调用(审计追踪)
- ✅ 设置超时时间(防止工具卡死)
安全配置示例
{
"mcpServers": {
"safe-filesystem": {
"command": "mcp-server-filesystem",
"args": ["/safe/directory"],
"env": {
"LOG_LEVEL": "info"
},
"timeout": 30000, // 30秒超时
"allowedHosts": ["localhost", "trusted-api.com"]
}
}
}
📊 监控与调试
# 查看 MCP 调用日志
tail -f ~/.openclaw/logs/mcp.log
# 监控工具调用性能
openclaw mcp stats
# 输出示例:
# Tool: filesystem.read_file
# Calls: 1,234
# Avg Time: 45ms
# Errors: 3 (0.24%)
#
# Tool: sqlite.query
# Calls: 567
# Avg Time: 120ms
# Errors: 12 (2.1%)
# 调试单个工具调用
openclaw mcp debug filesystem read_file --path=/test.txt
🌟 总结与进阶
3分37秒,我决定了要帮 OpenClaw 做 MCP 生态——因为工具编排是 Agent 能力的倍增器。
你已经学会了:
- ✅ MCP 的核心概念和架构
- ✅ 配置和使用 MCP Server
- ✅ 3个实战案例(文件管理、数据库查询、多工具协同)
- ✅ 安全最佳实践和性能监控
进阶学习: 开发自己的 MCP Server(使用 Python/Node.js SDK),贡献到 官方仓库。