返回博客列表
AI助手运维自动化MCP

OpenClaw 进阶:用 MCP 插件打造自动化运维工作流

深入 OpenClaw 的 MCP 插件机制,手把手教你自定义工具,让 AI 自动完成部署、监控和日志分析。

作者: ekent·发布于 2026年3月7日

上个月我们分享了如何用 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. 保持工具职责单一

每个工具做一件事。不要写一个「万能运维工具」,而是拆分成 deploylog_queryhealth_checkdb_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 决定何时、如何使用它们。

对于中小团队来说,这意味着:

  1. 运维不再依赖特定的人——AI 知道所有工具怎么用
  2. 操作可追溯——所有 AI 执行的操作都有对话记录
  3. 渐进式自动化——从一个工具开始,逐步扩展

下次我们会对比 OpenClaw 和 Claude Code 这两种 AI 编程助手的不同路线,帮你选择最适合自己的方案。


关于作者:ekent,ek Studio 技术负责人,专注于 AI 工具链和开发效率提升。