CI/CD自动化修复工具

一个基于LLM的GitHub Actions故障诊断与自动修复工具,提供统一的差异补丁生成和治理层控制。

  • by Siddharth-Basale
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Siddharth-Basale/mcpserver

使用说明

代理CI/CD MCP编排器

用于GitHub Actions故障诊断、LLM驱动的统一差异自动修复PR创建和受控发布编排的Python MCP服务器。

这提供了什么

  • MCP工具使用提交、日志和测试信号检查失败的工作流运行。
  • OpenAI支持的LLM诊断流程 gpt-4o-mini.
  • 治理层自动修复低风险问题,并要求对有风险的更改进行人工审查。
  • 使用统一的差异补丁的通用模型驱动修复循环(最多3次尝试)。
  • GitHub Actions用于CI、修复编排和发布策略门控的工作流。

项目布局

  • mcp_server/main.py -MCP工具和编排入口点
  • mcp_server/host_http.py -用于浏览器客户端的可流式HTTP MCP服务器
  • mcp_server/run_repair.py -工作流安全命令运行器
  • frontend/ -Vite+React MCP客户端用户界面
  • mcp_server/config.py -类型化环境配置
  • mcp_server/tools/* -GitHub、诊断、风险和公关自动化模块
  • .github/workflows/* -CI/CD自动化工作流程

设置

  1. 创建并激活虚拟环境。
  2. 安装依赖项:
    • pip install -r requirements.txt
  3. 复制环境默认值:
    • cp .env.example .env (或创建 .env 在Windows上手动)
  4. 填写必填值(OPENAI_API_KEY, GITHUB_TOKEN).

在本地运行MCP服务器

  • stdio(光标/克劳德桌面): python -m mcp_server.main

Web UI(浏览器MCP客户端+托管服务器)

这 frontend 该应用程序是一个使用流式HTTP的真正MCP客户端。秘密留在服务器上;浏览器只讲MCP。

  1. 终端A——基于HTTP的MCP (来自repo根目录,带有 .env 已配置):

    python -m mcp_server.host_http
    

    收听 0.0.0.0 和 PORT 从环境中(Render设置此设置)。路径: /mcp.

  2. 终端B——SPA开发服务器:

    cd frontend
    npm install
    cp .env.example .env
    npm run dev
    

    配置 frontend/.env: VITE_MCP_URL 是MCP端点(默认值 http://127.0.0.1:8000/mcp).它预填充UI并设置Vite-dev代理目标源。清除字段以使用相同的原点 /mcp (由该来源代理)。

  3. 打开Vite URL(通常 http://localhost:5173).

生产CORS: 浏览器发送 Origin 头球MCP服务器必须允许它或飞行前(OPTIONS)失败(通常表现为 获取失败).

  • 集 MCP_CORS_ORIGINS 以逗号分隔的列表 精确 SPA起源(例如 https://your-frontend.onrender.com).
  • 或设置 MCP_CORS_ORIGIN_REGEX (例如 https://.*\.onrender\.com)允许所有Render应用程序URL不列出每个URL(更严格的正则表达式更适合生产)。

渲染(两项服务): 应运行一个Web服务 python -m mcp_server.host_http (MCP API)。第二个服务或静态站点可以为已建成的SPA提供服务(npm run build 输出)。集 VITE_MCP_URL 在 前端构建时间 到 MCP服务URL (例如 https://your-mcp-api.onrender.com/mcp),而不是静态站点URL,除非您使用同时挂载两者的反向代理。如果你只跑步 vite preview 在渲染时,该过程会 不 公开Python MCP服务器-- /mcp 不会在那里工作。

GET/mcp→ 406 在日志中通常意味着有打开的东西 /mcp 在普通浏览器选项卡中(错误 Accept 头球MCP客户端使用POST/SSE,不受影响。

暴露的MCP工具: resolve_latest_failed_run, inspect_pipeline_failure, orchestrate_autofix (行为与CLI相同 resolve_latest_failed_run 匹配 run_repair 当 RUN_ID 省略)。

客户端超时: MCP TypeScript SDK默认为 60秒 根据请求。 orchestrate_autofix 通常运行时间更长(LLM、GitHub)。SPA使用 15分钟 为了 orchestrate_autofix 和 2分钟 为了 resolve_latest_failed_run 除非你设置 VITE_MCP_ORCHESTRATE_TIMEOUT_MS / VITE_MCP_RESOLVE_TIMEOUT_MS 在 frontend/.env (毫秒)。

在游标中用作MCP

  • MCP配置包含在 .cursor/mcp.json.
  • 重新启动Cursor,使其加载MCP服务器定义。
  • 确保您的 .env 有 OPENAI_API_KEY 和 GITHUB_TOKEN.
  • 在Cursor聊天中,从调用工具 agentic-cicd-orchestrator 与:
    • repository: owner/repo
    • run_id:工作流运行id(整数)
  • 主要工具:
    • inspect_pipeline_failure
    • resolve_latest_failed_run
    • orchestrate_autofix

手动运行修复编排

  • 集 REPOSITORY (例如 org/repo).
  • 可选:
    • RUN_ID (如果省略,则自动选择最近一次失败的运行)
    • WORKFLOW_NAME (按工作流名称筛选最近失败的运行,例如。 ci)
    • BASE_BRANCH (默认值 main)
  • 执行: python -m mcp_server.run_repair

LLM汽车维修控制

  • MAX_REPAIR_ATTEMPTS -补丁生成/应用程序重试次数(默认值 3).
  • PATCH_STRATEGY -模型中应有的补丁格式(必须是 unified_diff).
  • LLM_PATCH_MAX_CHARS -补丁有效载荷大小的上限。

治理模式

  • risk_score < RISK_AUTO_FIX_THRESHOLD ->自动修复PR路径。
  • RISK_AUTO_FIX_THRESHOLD <= risk_score < RISK_HUMAN_REVIEW_THRESHOLD ->需要人类批准。
  • risk_score >= RISK_HUMAN_REVIEW_THRESHOLD 或高风险文件类别->阻止/仅查看路径。
  • FORCE_AUTOFIX_ALL=true ->绕过阈值并强制自动修复路径(危险;仅在受控测试中使用)。

安全说明

  • 使用最低权限GitHub凭据。
  • 将生产部署凭据与自动修复标识分开。
  • 在生产中启用自动合并之前,审查生成的PR和审计工件。