GitHub PR审查服务器

一个用于全面审查GitHub Pull Request、分析代码质量和检测安全问题的MCP服务器。

  • by doraemon0905
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 doraemon0905/github-review

使用说明

GitHub PR评论MCP服务器

MCP(模型上下文协议)服务器,用于全面的GitHub Pull Request审查、代码分析和安全问题检测。

特性

  • 🔍 综合公关分析:分析代码质量、安全漏洞和最佳实践的拉取请求
  • 🛡️ 安全扫描:检测多种编程语言中的常见安全问题和漏洞
  • 📊 代码质量评估:评估代码的可维护性、复杂性和对最佳实践的遵守情况
  • 🚨 风险评估:提供总体风险评级和可操作的建议
  • 🔧 多语言支持:支持JavaScript、TypeScript、Python、Java、C#、PHP等
  • 📋 详细报告:生成具有文件级分析的全面审查报告

安装

先决条件

  • Node.js 18.0.0或更高版本
  • 具有存储库访问权限的GitHub个人访问令牌

设置

  1. 克隆存储库:
git clone https://github.com/doraemon0905/github-review.git
cd github-review
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build
  1. 设置环境变量:
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 #12345

2. 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 threshold

3. analyze_code_diff

分析特定代码更改的问题和安全漏洞。

参数:

  • diff_content (string):要分析的Git差异内容
  • file_path (string):正在分析的文件的路径
  • language (字符串,可选):编程语言(如果未提供,则自动检测)
  • include_security (布尔值,可选):包括安全分析(默认值:true)

例子:

Analyze this diff for security issues:
```diff
+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. 分叉存储库
  2. 创建要素分支: git checkout -b feature-name
  3. 进行更改并添加测试
  4. 运行测试套件: npm test
  5. 运行门楣: npm run lint
  6. 提交您的更改: git commit -am 'Add feature'
  7. 推到分支: git push origin feature-name
  8. 创建拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

安全

如果您发现安全漏洞,请发送电子邮件至 nguyentruonggiang91@gmail.com。所有安全漏洞都将得到及时解决。

更新日志

版本1.0.0

  • 初始版本
  • GitHub公关分析
  • 多语言安全扫描
  • 代码质量评估
  • 风险评估和建议