GitHub PR评论MCP服务器
MCP(模型上下文协议)服务器,用于全面的GitHub Pull Request审查、代码分析和安全问题检测。
特性
- 🔍 综合公关分析:分析代码质量、安全漏洞和最佳实践的拉取请求
- 🛡️ 安全扫描:检测多种编程语言中的常见安全问题和漏洞
- 📊 代码质量评估:评估代码的可维护性、复杂性和对最佳实践的遵守情况
- 🚨 风险评估:提供总体风险评级和可操作的建议
- 🔧 多语言支持:支持JavaScript、TypeScript、Python、Java、C#、PHP等
- 📋 详细报告:生成具有文件级分析的全面审查报告
安装
先决条件
- Node.js 18.0.0或更高版本
- 具有存储库访问权限的GitHub个人访问令牌
设置
- 克隆存储库:
git clone https://github.com/doraemon0905/github-review.git
cd github-review- 安装依赖项:
npm install- 构建项目:
npm run build- 设置环境变量:
export GITHUB_TOKEN=your_github_personal_access_token用法
运行MCP服务器
npm start服务器将启动并监听stdio上的MCP连接。
Cursor/Claude中的配置
将以下配置添加到MCP设置中:
{
"github-pr-review": {
"command": "node",
"args": ["/path/to/github-review/dist/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}可用工具
1. get_pull_request
获取拉取请求详细信息,包括元数据和文件更改。
参数:
owner(string):存储库所有者(用户名或组织)repo(string):存储库名称pull_number(number):拉取请求编号
例子:
Get pull request microsoft/vscode #123452. review_pull_request
对拉取请求进行全面审查,包括代码分析、问题检测和安全检查。
参数:
owner(string):存储库所有者repo(string):存储库名称pull_number(number):拉取请求编号include_security(布尔值,可选):包括安全分析(默认值:true)include_best_practices(布尔值,可选):包括最佳实践建议(默认值:true)severity_threshold(字符串,可选):要报告的最低严重性级别-“低”、“中”、“高”或“严重”(默认值:“中”)
例子:
Review pull request microsoft/vscode #12345 with high severity threshold3. analyze_code_diff
分析特定代码更改的问题和安全漏洞。
参数:
diff_content(string):要分析的Git差异内容file_path(string):正在分析的文件的路径language(字符串,可选):编程语言(如果未提供,则自动检测)include_security(布尔值,可选):包括安全分析(默认值:true)
例子:
Analyze this diff for security issues:+function validateUser(input) { + return eval(input.code); +}
#### 4. `get_repository_prs`
列出具有筛选选项的存储库拉取请求。
**参数:**
- `owner` (string):存储库所有者
- `repo` (string):存储库名称
- `state` (字符串,可选):PR状态过滤器-“打开”、“关闭”或“全部”(默认值:“打开”)
- `limit` (数字,可选):要返回的最大PR数(默认值:10,最大值:100)
- `sort` (字符串,可选):排序条件-“已创建”、“已更新”、“流行度”或“长时间运行”(默认值:“已创建的”)
**例子:**
List open pull requests for microsoft/vscode
## 证券分析
服务器检测到各种安全问题,包括:
### JavaScript/TypeScript
- 使用 `eval()` 以及类似的危险功能
- XSS漏洞通过 `innerHTML`
- 不安全的 `setTimeout` 用法
- TypeScript `any` 类型用法
- 硬编码机密和API密钥
### python
- 使用 `exec()` 和 `eval()`
- 不安全的 `pickle` 用法
- 裸露的 `except` 条款
- 输入验证问题
### PHP程序
- SQL注入模式
- 危险功能的使用
- 未经验证的超全球使用
### 将军
- 硬编码密码和API密钥
- 注释掉的代码
- TODO/FIXME标记
- 长线和代码复杂性
## 代码质量评估
分析仪评估:
- **复杂性**:基于决策点的圈复杂度
- **可维护性**:基于行数、复杂性和可读性的评分
- **重复代码**:重复代码模式的检测
- **最佳实践**:特定语言的编码标准
- **文件风险**:基于文件类型和模式的评估
## 风险评估
每个PR都会收到一个总体风险评级:
- **低**:小问题,可以安全合并
- **中等**:存在一些问题,建议审查
- **高**:安全问题或多个问题
- **关键的**:阻碍合并的严重问题
## 发展
### 项目结构
src/ ├── index.ts # Main MCP server ├── services/ │ ├── GitHubService.ts # GitHub API interactions │ ├── CodeAnalyzer.ts # Code analysis engine │ └── PRReviewer.ts # PR review orchestrator
### 建筑
npm run build
### 发展模式
npm run dev
### 代码检查
npm run lint
### 测试
npm test
## 贡献
1. 分叉存储库
1. 创建要素分支: `git checkout -b feature-name`
1. 进行更改并添加测试
1. 运行测试套件: `npm test`
1. 运行门楣: `npm run lint`
1. 提交您的更改: `git commit -am 'Add feature'`
1. 推到分支: `git push origin feature-name`
1. 创建拉取请求
## 许可证
此项目根据MIT许可证获得许可-请参阅 [许可证](LICENSE) 文件以获取详细信息。
## 安全
如果您发现安全漏洞,请发送电子邮件至 [nguyentruonggiang91@gmail.com](mailto:nguyentruonggiang91@gmail.com)。所有安全漏洞都将得到及时解决。
## 更新日志
### 版本1.0.0
- 初始版本
- GitHub公关分析
- 多语言安全扫描
- 代码质量评估
- 风险评估和建议