MCP(模型上下文协议)工具,可根据git日志自动生成全面的合并请求摘要。该工具分析提交历史,对更改进行分类,并生成适合合并请求描述的结构化摘要。
MCP合并请求摘要生成器是一款强大的工具,能帮助开发者更高效地处理合并请求。它可以自动分析提交历史,生成详细的摘要。
克隆仓库:
git clone https://github.com/yourusername/mcp-merge-request-summarizer.git
cd mcp-merge-request-summarizer
运行安装脚本:
install.bat或在PowerShell中运行install.bat。chmod +x install.sh && ./install.sh。配置编辑器:
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 .
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客户端(例如,Claude Desktop、Cursor、VSCode):
{
"mcp.servers": {
"merge-request-summarizer": {
"command": "python",
"args": ["-m", "mcp_mr_summarizer.server"]
}
}
}
设置工作目录上下文(推荐):
# 设置工作目录,以便repo_path="."能正常工作
await set_working_directory("/path/to/your/git/repo")
通过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(settings.json):
{
"mcp.servers": {
"merge-request-summarizer": {
"command": "python",
"args": ["-m", "mcp_mr_summarizer.server"]
}
}
}
Cursor(GUI或settings.json):
merge-request-summarizerpython["-m", "mcp_mr_summarizer.server"]Cursor(替代JSON格式):
{
"mcpServers": {
"merge-request-summarizer": {
"command": "python",
"args": ["-m", "mcp_mr_summarizer.server"]
}
}
}
{
"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
git checkout -b feature/amazing-feature)。git commit -m 'Add some amazing feature')。git push origin feature/amazing-feature)。本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。
为想要更好合并请求摘要的开发者用心打造 ❤️