上个月我们分享了如何用 Mac mini + OpenClaw 搭建 AI 开发助手。但 OpenClaw 真正的威力不在于「聊天」,而在于它的 MCP 插件系统——你可以让 AI 调用自定义工具,实现真正的自动化运维。
什么是 MCP?
MCP(Model Context Protocol)是 Anthropic 提出的开放协议,定义了 AI 模型与外部工具之间的通信标准。你可以把它理解为「AI 的 USB 接口」——任何符合 MCP 规范的工具,都能被 AI 模型即插即用。
OpenClaw 原生支持 MCP,这意味着你可以:
- 编写自定义工具,让 AI 读写数据库、调用 API
- 组合多个工具形成工作流
- 通过自然语言触发复杂的运维操作
实战:三个运维场景
场景一:一句话完成部署
我们在实际项目中,每次部署需要执行 5-6 个步骤:拉代码、安装依赖、构建、数据库迁移、重启服务、验证健康检查。手动操作容易遗漏,写成脚本又不够灵活。
自定义 MCP 工具:
{
"name": "deploy",
"description": "部署指定项目到生产环境",
"parameters": {
"project": { "type": "string", "description": "项目名称" },
"branch": { "type": "string", "default": "main" },
"skip_migration": { "type": "boolean", "default": false }
}
}
工具的实现本质上就是一个 HTTP 服务或本地脚本,接收 JSON 参数,返回 JSON 结果:
# deploy_tool.py
import subprocess
def handle(params):
project = params["project"]
branch = params.get("branch", "main")
steps = [
f"cd /apps/{project} && git pull origin {branch}",
f"cd /apps/{project} && pnpm install --frozen-lockfile",
f"cd /apps/{project} && pnpm build",
]
if not params.get("skip_migration"):
steps.append(f"cd /apps/{project} && pnpm prisma migrate deploy")
steps.append(f"pm2 restart {project}")
results = []
for step in steps:
result = subprocess.run(step, shell=True, capture_output=True, text=True)
results.append({
"command": step,
"success": result.returncode == 0,
"output": result.stdout[-500:] if result.stdout else result.stderr[-500:]
})
if result.returncode != 0:
return {"success": False, "steps": results, "error": "部署中断"}
return {"success": True, "steps": results}
配置到 OpenClaw 后,对话变成这样:
我: "把官网项目部署一下,用 release 分支,跳过数据库迁移"
OpenClaw: [调用 deploy 工具] "部署完成!5个步骤全部成功,服务已重启。"
场景二:智能日志分析
生产环境出问题时,最痛苦的是翻日志。我们写了一个日志查询工具,让 AI 帮我们分析:
# log_query_tool.py
def handle(params):
service = params["service"]
minutes = params.get("minutes", 30)
level = params.get("level", "error")
# 读取最近 N 分钟的日志
logs = read_pm2_logs(service, minutes, level)
return {
"service": service,
"time_range": f"最近 {minutes} 分钟",
"total_entries": len(logs),
"logs": logs[:50] # 限制返回条数,避免 token 过多
}
实际对话:
我: "API 服务最近一小时有报错吗?如果有,帮我分析原因"
OpenClaw: [调用 log_query 工具]
"发现 3 条错误日志,都是数据库连接超时。
时间集中在 14:30-14:35,与 MySQL 慢查询时间吻合。
建议检查这个时间段是否有大批量数据导入任务。"
AI 不只是「搜日志」,它能关联上下文给出分析——这比 grep 强太多了。
场景三:定时健康巡检
结合 OpenClaw 的定时任务功能,我们设置了每天早上 9 点自动巡检:
{
"name": "health_check",
"description": "检查所有服务的健康状态",
"parameters": {}
}
# health_check_tool.py
import requests
import psutil
def handle(params):
checks = {}
# 检查各服务端口
services = {"api": 3001, "web": 3000, "admin": 3002}
for name, port in services.items():
try:
resp = requests.get(f"http://localhost:{port}/health", timeout=5)
checks[name] = {"status": "healthy", "response_ms": resp.elapsed.microseconds // 1000}
except Exception as e:
checks[name] = {"status": "down", "error": str(e)}
# 系统资源
checks["system"] = {
"cpu_percent": psutil.cpu_percent(),
"memory_percent": psutil.virtual_memory().percent,
"disk_percent": psutil.disk_usage('/').percent
}
return checks
每天早上打开 Telegram,就能看到一份巡检报告:
OpenClaw: "早上好!今日巡检报告:
✅ API 服务正常(响应 23ms)
✅ Web 服务正常(响应 15ms)
✅ Admin 服务正常(响应 18ms)
💻 系统资源:CPU 12%,内存 45%,磁盘 38%
一切正常,放心开工!"
MCP 工具开发要点
1. 保持工具职责单一
每个工具做一件事。不要写一个「万能运维工具」,而是拆分成 deploy、log_query、health_check、db_backup 等独立工具。AI 会自己组合它们。
2. 返回结构化数据
工具返回 JSON,让 AI 来做「翻译成人话」的工作:
# 好的做法:返回结构化数据
return {"cpu": 45.2, "memory": 67.8, "disk": 38.1}
# 不好的做法:返回格式化字符串
return "CPU: 45.2%, Memory: 67.8%, Disk: 38.1%"
3. 限制输出大小
AI 的上下文窗口有限。日志查询、数据库查询等工具,务必限制返回条数:
logs = query_logs(service, minutes)
return {
"total": len(logs),
"showing": min(len(logs), 50),
"logs": logs[:50]
}
4. 做好权限控制
MCP 工具本质上是在执行系统操作,安全很重要:
ALLOWED_PROJECTS = ["web", "api", "admin"]
def handle(params):
project = params["project"]
if project not in ALLOWED_PROJECTS:
return {"error": f"不允许操作项目: {project}"}
# ...
工具注册与配置
在 OpenClaw 配置文件中注册 MCP 工具:
{
"mcp_servers": [
{
"name": "devops",
"command": "python3",
"args": ["/path/to/mcp_server.py"],
"tools": ["deploy", "log_query", "health_check", "db_backup"]
}
]
}
也可以用社区现成的 MCP 服务器,比如:
- mcp-server-sqlite:让 AI 直接查询 SQLite 数据库
- mcp-server-github:让 AI 操作 GitHub(创建 Issue、Review PR)
- mcp-server-filesystem:增强的文件系统操作
适合中小企业的场景
如果你的团队只有 1-3 个开发者,OpenClaw + MCP 特别适合:
| 场景 | 传统方式 | OpenClaw + MCP |
|---|---|---|
| 部署 | 手动执行 5 个命令 | "帮我部署官网" |
| 日志排查 | grep + 肉眼翻看 | "最近有报错吗?分析一下" |
| 健康监控 | 自建 Grafana | 每天自动推送巡检报告 |
| 数据库备份 | crontab 脚本 | "帮我备份一下数据库" |
| SSL 证书 | 到期才想起来 | 自动检查 + 提前通知 |
核心价值:把运维知识从「脑子里」和「零散脚本」变成 AI 可调用的工具,降低团队的运维门槛。
总结
OpenClaw 的 MCP 插件系统,本质上是让 AI 拥有了「手和脚」。你定义工具,AI 决定何时、如何使用它们。
对于中小团队来说,这意味着:
- 运维不再依赖特定的人——AI 知道所有工具怎么用
- 操作可追溯——所有 AI 执行的操作都有对话记录
- 渐进式自动化——从一个工具开始,逐步扩展
下次我们会对比 OpenClaw 和 Claude Code 这两种 AI 编程助手的不同路线,帮你选择最适合自己的方案。
关于作者:ekent,ek Studio 技术负责人,专注于 AI 工具链和开发效率提升。