MCP公关代理
一个全面的模型上下文协议(MCP)服务器,通过分析git存储库更改、管理PR模板、提供智能模板建议和监控GitHub Actions工作流,帮助开发人员创建更好的pull请求。
特性
🔍 Git分析
- 变化检测:自动检测修改、添加和删除的文件
- Diff生成:通过智能截断提供完整的git差异
- 提交历史记录:显示相关的提交消息和统计信息
- 分支比较:将更改与任何基分支进行比较(默认值:main)
📝 模板管理
- 多个模板:支持7种不同的PR模板类型
- 模板类别:错误修复、功能、文档、重构、测试、性能和安全
- 内容管理:存储和检索完整的模板内容
- 可定制的:易于添加或修改模板
🤖 智能建议
- 智能地图:根据变更分析自动建议适当的模板
- 情境感知:考虑文件类型、更改模式和关键字
- 灵活匹配:支持更改类型的多个别名
🚀 GitHub操作集成
- Webhook 服务器:接收并存储GitHub Actions事件
- 工作流监控:跟踪工作流状态和结果
- CI/CD分析:提供部署和测试结果的见解
- 事件历史:维护GitHub Actions事件的历史记录
安装
先决条件
- Python 3.13+
- 紫外线 (Python包管理器)
- Git仓库
- MCP兼容客户端(如Claude Code)
- (可选)用于Actions集成的GitHub存储库
设置
- 克隆存储库:
git clone
cd mcp-pr-agent- 使用uv安装依赖项:
uv sync- 运行MCP服务器:
uv run server.py- (可选)运行GitHub webhook服务器以进行GitHub Actions集成:
uv run webhook_server.py默认情况下,webhook服务器在端口8000上运行,并接收GitHub Actions事件。
MCP工具
1. analyze_file_changes
分析git存储库的更改,并提供全面的差异信息。
参数:
base_branch(str,可选):要比较的基本分支(默认值:“main”)include_diff(bool,可选):包含完整的差异内容(默认值:true)max_diff_lines(int,可选):要包含的最大差异行数(默认值:500)working_directory(str,可选):运行git命令的目录(默认:自动检测)
退货: JSON对象包含:
files_changed:已修改文件的状态列表statistics:差异统计摘要commits:最近的提交消息diff:完整的差异内容(如果需要)truncated:差异是否被截断total_diff_lines:差异行总数
示例用法:
# Basic usage
result = await analyze_file_changes()
# Compare against develop branch
result = await analyze_file_changes(base_branch="develop")
# Get summary without full diff
result = await analyze_file_changes(include_diff=False)
# Limit diff size
result = await analyze_file_changes(max_diff_lines=100)2. get_pr_templates
检索所有可用的PR模板及其内容。
参数: 无
退货: JSON模板对象数组,包含:
filename:模板文件名type:模板类别/类型content:完整的模板内容
可用模板:
- bug.md:Bug修复模板
- feature.md:新功能模板
- docs.md:文档更新模板
- 重构.md:代码重构模板
- test.md:测试更新模板
- performance.md:性能改进模板
- security.md:安全更新模板
3. suggest_template
分析变更描述,并建议最合适的公关模板。
参数:
changes_summary(str):描述更改的作用change_type(str):变更类型(bug、特性、文档、重构、测试等)
退货: JSON对象包含:
recommended_template:完整的模板对象reasoning:建议说明template_content:即用型模板内容usage_hint:模板使用说明
支持的更改类型:
- Bug/修复:映射到bug.md模板
- 功能/增强:映射到feature.md模板
- 文件/文档:映射到docs.md模板
- 重构/清理:映射到reform.md模板
- 测试/测试:映射到test.md模板
- 性能/优化:映射到performance.md模板
- 安全:映射到security.md模板
4. get_recent_actions_events
检索最近通过webhook收到的GitHub操作事件。
参数:
limit(int,可选):要返回的最大事件数(默认值:10)
退货: GitHub Actions事件的JSON数组,包含:
- 事件类型和时间戳
- 工作流运行信息
- 存储库详细信息
- 行动成果
5. get_workflow_status
获取GitHub Actions工作流的当前状态。
参数:
workflow_name(str,可选):要筛选的特定工作流名称
退货: 工作流程状态对象的JSON数组,包含:
name:工作流名称status:当前状态(排队、正在进行、已完成)conclusion:最终结果(成功、失败、取消等)run_number:工作流运行编号updated_at:上次更新时间戳html_url:链接到工作流运行
模板结构
每个模板都遵循一致的结构:
## [Template Type]
### Description
### [Template-specific sections]
### Testing
- [ ] Relevant tests added/updated
- [ ] Manual testing completed
### [Additional sections as needed]自定义模板
模板存储在 templates/ 目录。要添加或修改模板,请执行以下操作:
- 创建/编辑
.md文件在templates/目录 - 更新
DEFAULT_TEMPLATES在……里面server.py如果添加新模板 - 更新
TYPE_MAPPING用于新的更改类型别名
集成示例
使用克劳德代码
# Analyze current repository changes
result = mcp.call_tool("analyze_file_changes", {
"base_branch": "main",
"include_diff": True
})
# Get all available templates
templates = mcp.call_tool("get_pr_templates", {})
# Get template suggestion
suggestion = mcp.call_tool("suggest_template", {
"changes_summary": "Added user authentication system",
"change_type": "feature"
})工作流示例
- 分析变化:使用
analyze_file_changes了解修改的内容 - 获取建议:使用
suggest_template获取适当的模板建议 - 创建PR:使用建议的模板内容创建全面的PR描述
GitHub操作集成
Webhook 设置
要启用GitHub操作监控,您需要在GitHub存储库中设置一个webhook:
- 启动webhook服务器:
uv run webhook_server.py- 配置 GitHub 网络挂钩:
- 转到您的存储库设置→ 网络钩子 - 使用URL添加webhook: http://your-server:8000/webhook - 选择“工作流运行”事件 - 将内容类型设置为“application/json”
- 访问GitHub操作数据:
# Get recent events
events = mcp.call_tool("get_recent_actions_events", {"limit": 5})
# Check workflow status
status = mcp.call_tool("get_workflow_status", {"workflow_name": "CI"})MCP提示
该服务器包括几个用于GitHub Actions分析的预构建提示:
analyze_ci_results:综合CI/CD结果分析create_deployment_summary:生成部署状态摘要generate_pr_status_report:完整的PR状态,包括CI/CDtroubleshoot_workflow_failure:帮助调试失败的工作流
配置
环境变量
MCP_PR_AGENT_TEMPLATES_DIR:自定义模板目录路径MCP_PR_AGENT_DEFAULT_BRANCH:默认基分支(默认:“main”)WEBHOOK_PORT:webhook服务器的端口(默认值:8000)
MCP配置(.MCP.json)
该项目包括 .mcp.json 用于轻松设置MCP客户端的配置文件:
{
"mcpServers": {
"pr-agent-actions": {
"command": "uv",
"args": ["run", "server.py"],
"cwd": "/Users/David/Dev/mcp/mcp-pr-agent"
}
}
}Claude代码集成
使用以下命令将此MCP服务器添加到Claude Code中:
claude mcp add pr-agent -- uv --directory run server.py替换 `` 带有mcp pr代理目录的完整路径。
例子:
claude mcp add pr-agent -- uv --directory /Users/username/projects/mcp-pr-agent run server.py手动MCP客户端配置
对于其他MCP客户端,请添加到您的配置中:
{
"mcpServers": {
"pr-agent": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-pr-agent", "run", "server.py"]
}
}
}发展
运行测试
uv run pytest test_server.py -v添加新模板
- 在中创建模板文件
templates/目录 - 增添
DEFAULT_TEMPLATES词典 - 将类型映射添加到
TYPE_MAPPING - 更新文档
错误处理
服务器包括全面的错误处理:
- Git命令失败
- 缺少存储库
- 模板文件错误
- 无效参数
故障排除
常见问题
“Git错误”响应:
- 确保你在git仓库中
- 检查基础分支是否存在
- 验证git在PATH中是否可访问
空结果:
- 检查您是否在正确的分支上
- 确保有变化需要分析
- 验证基础分支比较
找不到模板:
- 确保模板目录存在
- 检查模板文件权限
- 验证模板文件的格式是否正确
调试信息
这 analyze_file_changes 工具中包含调试信息 _debug 字段:
- 工作目录路径
- MCP根检测
- 服务器进程信息
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 使用适当的模板提交拉取请求!
许可证
\[在此处添加您的许可证信息\]
支持
\[在此处添加支持联系信息\]
