Back to MCP directory
publicPublicdnsLocal runtime

mcp_merge_request_summarizer

一个基于MCP协议的自动合并请求摘要生成工具,通过分析Git提交历史智能分类变更并生成结构化摘要,支持Markdown和JSON输出格式。

article

README

🚀 MCP合并请求摘要生成器

MCP(模型上下文协议)工具,可根据git日志自动生成全面的合并请求摘要。该工具分析提交历史,对更改进行分类,并生成适合合并请求描述的结构化摘要。

🚀 快速开始

MCP合并请求摘要生成器是一款强大的工具,能帮助开发者更高效地处理合并请求。它可以自动分析提交历史,生成详细的摘要。

✨ 主要特性

  • 自动提交分析:分析分支之间的git日志,以了解更改情况。
  • 智能分类:按类型(功能、错误修复、重构等)对提交进行分类。
  • 全面摘要:生成详细的合并请求描述,包含:
    • 概述和统计信息
    • 关键更改和重要提交
    • 分类更改(功能、错误修复、重构)
    • 重大更改检测
    • 文件分类和影响分析
    • 预估审核时间
  • 多种输出格式:支持Markdown和JSON输出。
  • 灵活集成:可独立运行,也可作为MCP服务器使用。
  • 跨平台:与Windows、macOS和Linux兼容。

📦 安装指南

🚀 快速开始(推荐)

  1. 克隆仓库

    git clone https://github.com/yourusername/mcp-merge-request-summarizer.git
    cd mcp-merge-request-summarizer
    
  2. 运行安装脚本

    • Windows:双击install.bat或在PowerShell中运行install.bat
    • Mac/Linux:运行chmod +x install.sh && ./install.sh
  3. 配置编辑器

    • 查看QUICK_START.md获取30秒设置说明。
    • 或查看configs/README.md获取详细配置选项。

手动安装

git clone https://github.com/yourusername/mcp-merge-request-summarizer.git
cd mcp-merge-request-summarizer
pip install -e .

从PyPI安装

pip install mcp-merge-request-summarizer

⚠️ 重要提示

该软件包尚未发布到PyPI。目前,请使用安装脚本或手动安装。

💻 使用示例

作为独立工具使用

# 基本用法(将当前分支与develop分支进行比较)
python -m mcp_mr_summarizer.cli

# 指定不同的分支
python -m mcp_mr_summarizer.cli --base main --current feature/new-feature

# 输出到文件
python -m mcp_mr_summarizer.cli --output mr_summary.md

# JSON输出
python -m mcp_mr_summarizer.cli --format json --output summary.json

# 帮助信息
python -m mcp_mr_summarizer.cli --help

作为MCP服务器使用

  1. 配置MCP客户端(例如,Claude Desktop、Cursor、VSCode):

    {
      "mcp.servers": {
        "merge-request-summarizer": {
          "command": "python",
          "args": ["-m", "mcp_mr_summarizer.server"]
        }
      }
    }
    
  2. 设置工作目录上下文(推荐):

    # 设置工作目录,以便repo_path="."能正常工作
    await set_working_directory("/path/to/your/git/repo")
    
  3. 通过MCP客户端界面使用工具和资源

工具(操作)

  • set_working_directory:设置代理的工作目录上下文。
  • get_working_directory:获取当前工作目录上下文。
  • generate_merge_request_summary:创建完整的合并请求摘要。
  • analyze_git_commits:提供详细的提交分析。

资源(数据)

  • git://repo/status:当前仓库状态和信息。
  • git://commits/{base_branch}..{current_branch}:分支之间的提交历史。
  • git://branches:所有仓库分支的列表。
  • git://files/changed/{base_branch}..{current_branch}:分支之间更改的文件。

📊 示例输出

# feat: 4个新功能和改进

## 概述
此合并请求包含9次提交,更改了35个文件(插入1543行,删除1485行)。

## 关键更改
- 重构MLB、NBA、NHL和NFL中的映射器,以使用对象初始化器语法(bdf5d9c) - 更改3028行。
- 重构赛季统计服务,以使用基类并改进依赖注入(30de323) - 更改1976行。

### 🚀 新功能(4个)
- 添加足球指标提取方法并注册足球赛季统计服务(176930f)。
- 更新服务以使用构造函数注入依赖项(29f1c46)。
- 更新CbStatsDaemon和CbStatsFeedPublicApi以使用异步主机运行方法(22c1202)。
- 重构PoolSeasonStatsController和相关服务(3a28ab4)。

### 🔧 重构(3个)
- 重构MLB、NBA、NHL和NFL中的映射器,以使用对象初始化器语法(bdf5d9c)。
- 重构赛季统计服务,以使用基类并改进依赖注入(30de323)。
- 重构赛季统计服务中的日志记录,以使用一致的大小写(fd7b8b9)。

### 📊 摘要
- **总提交数**:9
- **更改文件数**:35
- **插入行数**:1543
- **删除行数**:1485
- **预估审核时间**:1小时15分钟

🛠️ 配置

快速配置(推荐)

对于VSCode/Cursor

  1. 打开设置(Ctrl/Cmd + ,)。
  2. 对于VSCode:搜索“mcp”并点击“在settings.json中编辑”。
  3. 对于Cursor:转到工具与集成新MCP服务器
  4. 添加以下配置:

VSCode(settings.json)

{
  "mcp.servers": {
    "merge-request-summarizer": {
      "command": "python",
      "args": ["-m", "mcp_mr_summarizer.server"]
    }
  }
}

Cursor(GUI或settings.json)

  • 名称merge-request-summarizer
  • 命令python
  • 参数["-m", "mcp_mr_summarizer.server"]

Cursor(替代JSON格式)

{
  "mcpServers": {
    "merge-request-summarizer": {
      "command": "python",
      "args": ["-m", "mcp_mr_summarizer.server"]
    }
  }
}

对于Claude Desktop

  1. 转到设置 → MCP服务器。
  2. 添加具有以下配置的新服务器:
{
  "mcpServers": {
    "merge-request-summarizer": {
      "command": "python",
      "args": ["-m", "mcp_mr_summarizer.server"]
    }
  }
}

即用型配置文件

configs/文件夹中复制适当的配置:

  • configs/vscode_settings.json - 用于VSCode。
  • configs/cursor_settings.json - 用于Cursor。
  • configs/claude_desktop_config.json - 用于Claude Desktop。

查看configs/README.md获取详细设置说明。

🎯 自定义

添加自定义提交类别

通过修改categorize_commit方法扩展类别:

def categorize_commit(self, commit: CommitInfo) -> List[str]:
    categories = []
    message_lower = commit.message.lower()
    
    # 添加自定义模式
    if any(word in message_lower for word in ['security', 'vulnerability']):
        categories.append('security')
    
    # ... 现有模式 ...
    
    return categories

自定义文件类别

添加自定义文件类型类别:

def _categorize_files(self, files: set) -> Dict[str, List[str]]:
    categories = {
        'Services': [],
        'Models': [],
        'Controllers': [],
        'Tests': [],
        'Configuration': [],
        'Documentation': [],
        'CustomCategory': [],  # 添加自定义类别
        'Other': []
    }
    
    for file in files:
        if 'CustomPattern' in file:  # 添加自定义模式
            categories['CustomCategory'].append(file)
        # ... 现有模式 ...
    
    return categories

🧪 测试

# 运行测试
python -m pytest tests/

# 运行并生成覆盖率报告
python -m pytest tests/ --cov=mcp_mr_summarizer --cov-report=html

🤝 贡献

  1. 分叉仓库。
  2. 创建功能分支(git checkout -b feature/amazing-feature)。
  3. 进行更改。
  4. 为更改添加测试。
  5. 运行测试套件。
  6. 提交更改(git commit -m 'Add some amazing feature')。
  7. 推送到分支(git push origin feature/amazing-feature)。
  8. 打开拉取请求。

📝 许可证

本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。

🙏 致谢

  • 为模型上下文协议(MCP)生态系统构建。
  • 受对更好的合并请求文档需求的启发。
  • 感谢所有贡献者和用户。

📞 支持


为想要更好合并请求摘要的开发者用心打造 ❤️

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client