Token导航 LogoToken导航TokenDH.com
Gitlab Mr Diagnosis MCP logo
开发工具未说明官方级别未说明来源级核验

Gitlab Mr Diagnosis MCP

MCP Server

专为AI Agent设计的GitLab合并请求构建状态诊断服务,提供智能诊断、测试分析、覆盖率检查和修复建议。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
TypeScriptClaude开发工具Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ZhipingYang

提供方

ZhipingYang

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

GitLab MR Diagnosis MCP

](https://www.npmjs.com/package/gitlab-mr-diagnosis-mcp) ![License: MIT](https://opensource.org/licenses/MIT)

GitLab Merge Request Pipeline 构建状态诊断 MCP (Model Context Protocol) 服务,专为 AI Agent 设计。

✨ 功能特性

  • 🔍 智能诊断 - 自动分析 MR 构建失败原因
  • 🧪 测试分析 - 提取失败的单元测试用例及错误详情
  • 📊 覆盖率检查 - 检测 Diff Coverage 是否达标
  • 📋 阶段状态 - 展示 CI Pipeline 各阶段执行状态
  • 💡 修复建议 - 提供具体可操作的修复步骤

🚀 快速开始

MCP 配置 (推荐)

在 Claude Desktop 或其他 MCP 客户端的配置文件中添加:

{
  "mcpServers": {
    "gitlab-mr-diagnosis-mcp": {
      "command": "npx",
      "args": ["-y", "gitlab-mr-diagnosis-mcp@latest"],
      "env": {
        "GITLAB_TOKEN": "your_gitlab_private_token"
      }
    }
  }
}

源码安装

git clone https://github.com/ZhipingYang/gitlab-mr-diagnosis-mcp.git
cd gitlab-mr-diagnosis-mcp
npm install
npm run build

然后配置:

{
  "mcpServers": {
    "gitlab-mr-diagnosis-mcp": {
      "command": "node",
      "args": ["/path/to/gitlab-mr-diagnosis-mcp/dist/index.js"],
      "env": {
        "GITLAB_TOKEN": "your_gitlab_private_token"
      }
    }
  }
}

⚙️ 环境变量

变量必填默认值说明
GITLAB_TOKEN✅ 是-GitLab Private Token
GITLAB_BASE_URLhttps://git.ringcentral.comGitLab 服务器地址
DIFF_COVERAGE_GATE90Diff Coverage 阈值 (%)

🛠️ MCP 工具

服务提供以下 4 个工具:

1. diagnose_mr - 完整诊断 ⭐

自动诊断 MR 构建状态,返回详细的诊断报告。

{
  "name": "diagnose_mr",
  "arguments": {
    "mr_url": "https://gitlab.example.com/group/project/-/merge_requests/123",
    "diff_coverage_gate": 90
  }
}

返回内容

  • 构建状态和构建号
  • 各阶段执行状态 (checkout, tsc, ut, diffcoverage 等)
  • 失败的测试用例列表(含错误类型和错误消息)
  • Diff Coverage 统计(从 HTML artifact 解析)
  • 未达标文件列表
  • 修复建议(包含 Coverage 解析错误提示)

新增功能 (v1.0.4):

  • ✅ Coverage 解析失败时提供详细错误信息
  • ✅ 提供 Coverage Report 的直接链接
  • ✅ 区分 "解析失败" 和 "Coverage 为 0%"

2. get_coverage_report - 获取 Coverage 数据 🆕

获取 Jenkins 构建的 Coverage Report 数据(从 HTML artifact 解析)。

{
  "name": "get_coverage_report",
  "arguments": {
    "build_url": "https://jenkins.example.com/job/your-job/123/",
    "coverage_threshold": 90,
    "include_html": false
  }
}

返回内容

  • Diff Coverage 和 Overall Coverage 百分比
  • 未达标文件列表(文件路径 + 覆盖率)
  • Coverage 是否达标
  • Coverage Report 的 artifact URL
  • 可选:原始 HTML(用于调试)

使用场景

  • 单独查看 Coverage 数据
  • 调试 Coverage 解析问题
  • 获取详细的文件级别 Coverage 信息

3. get_mr_comments - 获取评论

获取 MR 的所有评论(原始 JSON 数据)。

{
  "name": "get_mr_comments",
  "arguments": {
    "mr_url": "https://gitlab.example.com/group/project/-/merge_requests/123",
    "per_page": 50
  }
}

4. get_console_log - 获取 Jenkins 日志

获取 Jenkins 构建的 Console Log,支持正则搜索。

{
  "name": "get_console_log",
  "arguments": {
    "build_url": "https://jenkins.example.com/job/your-job/123/",
    "search_pattern": "FAIL project/"
  }
}

📋 输出示例

═══════════════════════════════════════════════════════════════
📊 GitLab MR Pipeline 构建状态诊断报告
═══════════════════════════════════════════════════════════════

🔗 MR URL: https://gitlab.example.com/group/project/-/merge_requests/123
📦 Project: group/project
🔢 MR IID: 123

🏗️  构建状态: 🔴 FAILURE
📌 构建号: #456
👤 触发者: Developer
🌿 分支: feature/branch → develop

📋 阶段状态:
┌──────────────────────┬──────────┐
│ 阶段                 │ 状态     │
├──────────────────────┼──────────┤
│ checkout             │ ✅ 通过   │
│ tsc                  │ ✅ 通过   │
│ phone ut             │ ❌ 失败   │
│ diffcoverage         │ ✅ 通过   │
└──────────────────────┴──────────┘

❌ 失败的测试 (1 个文件, 2 个用例):
  1. project/phone/core/src/__tests__/example.test.ts
     └─ Example › should work correctly
        💥 TypeError: Cannot read property 'foo' of undefined
     └─ Example › should handle edge case

📈 覆盖率统计:
  Diff Coverage: 85.5% ❌ (阈值: 90%)
  Diff Lines: 200 | Covered: 171 | Uncovered: 29

📁 Diff Coverage 未达标文件:
  1. project/phone/core/src/service/UserService.ts
     Diff Coverage:  75.0%
  2. project/phone/ui/src/components/Button.tsx
     Diff Coverage:  80.0%

� 摘要:
  阶段: 3/4 通过
  失败测试: 2 个
  Diff Coverage: 85.5%

�💡 建议:
  发现 2 个测试用例失败,需要修复:
    1. project/phone/core/src/__tests__/example.test.ts
       测试: Example › should work correctly
  建议: 运行 yarn test:no-watch  本地调试
  Diff Coverage 未达标: 85.5% < 90%
  建议: 为新增代码添加单元测试以提高覆盖率

═══════════════════════════════════════════════════════════════

📁 项目结构

gitlab-mr-diagnosis-mcp/
├── src/
│   ├── index.ts                    # MCP 服务入口
│   ├── types.ts                    # TypeScript 类型定义
│   ├── constants.ts                # 常量和正则表达式
│   ├── services/
│   │   ├── gitlab.ts               # GitLab API 服务
│   │   ├── jenkins.ts              # Jenkins 服务
│   │   ├── commentParser.ts        # MR 评论解析器
│   │   └── consoleLogParser.ts     # Console Log 解析器
│   ├── tools/
│   │   └── diagnose.ts             # 诊断工具主逻辑
│   └── utils/
│       └── config.ts               # 配置加载器
├── dist/                           # 编译输出
├── package.json
├── tsconfig.json
├── README.md
└── Tech.md                         # 技术文档

📚 技术文档

详细的技术实现、架构说明和 API 参考请查看 Tech.md

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 License

MIT

目录标签

目录标签

TypeScriptClaude开发工具GitLab本地部署合并请求构建诊断测试分析覆盖率检查

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP