自动化修复系统

一个生产级的、基于策略的自动化修复系统,用于监控、扩展和回滚服务,确保系统的高可用性和安全性。

  • by hemanthcs34
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 hemanthcs34/mcp-project

使用说明

生产系统自动驾驶

“2 Fast 2 MCP”黑客马拉松的MCP原生修复剂

一个生产级、策略门控的补救系统,展示了MCP服务器的实施、治理、可观察性和安全工具的执行。


建筑

┌─────────────────────────────────────────────────────────────┐
│                     ARCHESTRA (Orchestrator)                │
│  - MCP Server Registration                                  │
│  - Tool Discovery & Routing                                 │
│  - Secret Management                                        │
└─────────────────┬───────────────────────────────────────────┘
                  │ Stdio Transport
                  ▼
┌─────────────────────────────────────────────────────────────┐
│                   MCP SERVER (Backend)                      │
│  ┌─────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │ monitor_tool│  │  scale_tool  │  │ rollback_tool│      │
│  └─────────────┘  └──────────────┘  └──────────────┘      │
│                                                              │
│  ┌────────────────────────────────────────────────┐        │
│  │         POLICY ENGINE (Governance)             │        │
│  │  - Max replicas validation                     │        │
│  │  - Input schema validation                     │        │
│  │  - Policy violation logging                   │        │
│  └────────────────────────────────────────────────┘        │
│                                                              │
│  ┌────────────────────────────────────────────────┐        │
│  │       LOGGER (Observability)                   │        │
│  │  - Structured logging                          │        │
│  │  - MTTR tracking                               │        │
│  │  - Timestamp all events                        │        │
│  └────────────────────────────────────────────────┘        │
│                                                              │
│  Express API: /api/status, /api/logs, /api/trigger-alert   │
└─────────────────┬───────────────────────────────────────────┘
                  │ HTTP (Port 3001)
                  ▼
┌─────────────────────────────────────────────────────────────┐
│                CONTROL CENTER (Frontend)                    │
│  - System Status Indicator (GREEN/RED)                      │
│  - MTTR Stopwatch                                           │
│  - Event Timeline (Live Polling)                            │
│  - Trigger Alert / Rollback Actions                         │
└─────────────────────────────────────────────────────────────┘

项目结构

mcp-project/
├── backend/
│   ├── src/
│   │   ├── server.ts       # MCP server + Express API
│   │   ├── policy.ts       # Governance rules
│   │   └── logger.ts       # Observability module
│   ├── package.json
│   ├── tsconfig.json
│   └── Dockerfile
└── frontend/
    ├── src/
    │   ├── App.tsx         # Control Center UI
    │   └── App.css         # Styling
    ├── package.json
    └── vite.config.ts

设置和运行

后端(MCP服务器)

cd backend
npm install
npm start

运行时间:

  • MCP标准(用于Archestra集成)
  • 上的Express API http://localhost:3001

前端(控制中心)

cd frontend
npm install
npm run dev

运行时间: http://localhost:5173


Docker构建

cd backend
docker build -t autopilot-mcp-server .
docker run -p 3001:3001 autopilot-mcp-server

MCP工具

1. monitor_tool

目的: 获取当前系统指标
输入: 无
输出:

{
  "status": "CRITICAL",
  "cpu_load": 98,
  "memory_usage": 85,
  "replicas": 3,
  "alert_active": true
}

2. scale_tool

目的: 扩展服务副本(策略门控)
输入:

{
  "replicas": 5
}

治理:

  • ❌ 块如果 replicas > 10
  • ✅ 记录违反策略的行为
  • ✅ 验证架构

输出: "Successfully scaled to 5 replicas."

3. rollback_tool

目的: 回滚到之前的稳定状态
输入: 无
输出: "Rollback successful. Version restored."


Archestra集成

注册

不确定-需要ARCHESTRA文件确认

根据标准MCP模式,注册可能涉及:

# Example (NOT CONFIRMED):
archestra mcp register \
  --name autopilot-agent \
  --transport stdio \
  --command "node /app/dist/server.js"

工具发现

注册后,Archestra应:

  1. 通过MCP查询可用工具 tools/list
  2. 暴露 monitor_tool, scale_tool, rollback_tool 到编排层
  3. 通过Stdio传输路由工具调用

秘密管理

不确定-需要ARCHESTRA文件确认

标准方法:

  • 环境变量: ARCHESTRA_SECRET_*
  • 已装载的配置文件: /etc/archestra/secrets
  • MCP服务器读取 process.env

可观测性集成

日志可访问的位置:

  • 当地: 通过内存 /api/logs (用于控制中心UI)
  • Archestra: 可能通过以下方式将日志导出到控制平面:
    • Stout/Stderr(由Archestra运行时捕获)
    • 与集中式日志记录(如OpenTetry、OTLP)的潜在集成

不确定-需要ARCHESTRA文件确认

控制面治理

适用政策的地方:

  • ✅ MCP服务器层 (本次实施): policy.ts 执行前验证
  • 🔍 拱形层 (可能):在编排级别可能存在其他治理规则

不确定-需要ARCHESTRA文件确认


演示脚本

场景:自动修复

  1. 打开控制中心: http://localhost:5173
  2. 初始状态: 系统状态= HEALTHY (绿色)
  3. 触发警报: 点击“🔥 触发警报”
    • 状态转变 CRITICAL (红色)
    • MTTR定时器启动
    • 记录的事件: "CRITICAL INFRA ALERT: CPU Load > 95%"
  4. 手动补救(模拟MCP呼叫):
    • 在另一个终端中,呼叫 scale_tool 通过MCP客户端:
      # Example (requires MCP CLI):
      mcp-client call scale_tool '{"replicas": 5}'
      
    • 系统状态返回 HEALTHY
    • MTTR定时器停止
  5. 政策违规测试:
    • 尝试扩展到100个副本:
      mcp-client call scale_tool '{"replicas": 100}'
      
    • 预期: 操作被阻止,记录为 POLICY_VIOLATION
  6. 回降:
    • 呼叫 rollback_tool:
      mcp-client call rollback_tool '{}'
      
    • 系统重置为健康状态

治理

应用领域: backend/src/policy.ts

规则:

  • 最多10个副本(硬限制)
  • 负副本计数被拒绝
  • 记录的所有违规行为都有完整的上下文

无破坏性操作:

  • 所有操作都是模拟的(没有修改实际的基础设施)
  • 可安全用于演示/黑客马拉松

可观测性

实施于: backend/src/logger.ts

特征:

  • ✅ 结构化JSON日志
  • ✅ 为每个事件添加时间戳
  • ✅ 日志级别: INFO, WARN, ERROR, POLICY_VIOLATION
  • ✅ MTTR跟踪(警报→ 补救时间)
  • ✅ 通过暴露 /api/logs 用于UI消费

日志条目示例:

{
  "timestamp": "2026-02-11T10:00:00.000Z",
  "level": "POLICY_VIOLATION",
  "message": "Scale tool blocked",
  "details": {
    "reason": "Cannot scale above 10 replicas",
    "args": { "replicas": 100 }
  }
}

安全

  • ✅ 严格的输入验证(Zod模式)
  • ✅ 不 eval() 或动态执行
  • ✅ CORS已启用(根据生产情况进行调整)
  • ✅ 记录所有工具调用
  • ✅ 仅模拟基础设施

技术栈

后端:

  • Node.js 20
  • TypeScript
  • @modelcontextprotocol/sdk
  • Express(适用于UI API)
  • Zod(验证)

前端:

  • 反应19
  • 维特
  • 香草CSS(没有顺风,没有UI库)

备注

我们所知道的:

  • ✅ MCP SDK标准传输是标准的
  • ✅ 工具模式遵循MCP规范
  • ✅ 结构化日志记录是最佳实践

需要确认的内容:

  • ❓ 精确的Archestra注册CLI语法
  • ❓ 秘密注射机制
  • ❓ 可观察性导出格式(OTLP?自定义?)
  • ❓ 控制平面治理层存在

无幻觉:

  • 没有发明假冒的Archestra API
  • 未伪造CLI命令
  • 明确标记所有不确定性

许可证

麻省理工学院(黑客马拉松演示)