代码审查服务器

一个提供GitHub Pull Request代码审查功能的MCP服务器,支持获取PR详情、分析代码变更并与GitHub仓库交互以实现自动化代码审查流程。

  • by Batsirai-muchareva
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Batsirai-muchareva/code-review-mcp

使用说明

代码审查MCP服务器

一个模型上下文协议(MCP)服务器,提供全面的GitHub Pull Request代码审查功能。该服务器使AI助手能够获取PR(Pull Request)详情,分析代码更改,并与GitHub仓库进行交互,以实现自动化代码审查工作流。

特性/功能

🔍 拉取请求分析

  • 公关详情获取包括标题、描述、作者和统计数据在内的全面元数据
  • 文件更改列出所有修改过的文件,包括增加/删除的行数和补丁
  • 完整上下文获取针对LLM代码审查优化的完整PR上下文
  • **统一差异(或统一差分)**获取整个拉取请求的完整统一差异(diff)

📁 文件操作

  • 当前内容获取PR(Pull Request)头部提交中的文件内容
  • 基准比较从基线分支获取文件内容,以便进行前后对比
  • 路径解析处理相对于仓库根目录的文件路径

💬 评论管理

  • 现有评论获取拉取请求(PR)上的所有现有评论和反馈
  • 发表评论在文件的特定行中添加审查评论
  • 评审历史访问完整的评论对话历史记录

安装

先决条件

  • Node.js 版本 >= 18.18
  • 具有适当权限的GitHub个人访问令牌

设置

  1. 克隆仓库

    git clone <repository-url>
    cd Code-Review-MCP
    
  2. 安装依赖项

    npm install
    
  3. 配置环境

    cp env.example .env
    

    编辑 .env 并添加您的GitHub令牌:

    GITHUB_TOKEN=ghp_your_personal_access_token_here
    
  4. 构建项目

    npm run build
    

使用方法

服务器可以以两种模式运行:

HTTP服务器模式

启动用于基于Web的集成的HTTP服务器:

npm start

服务器将在 http://localhost:3000/mcp

对于带自动重载功能的开发:

npm run dev

STDIO 模式

以STDIO模式启动,以便直接集成MCP客户端:

npm run start:stdio

用于开发:

npm run dev:stdio

可用工具

get_pr_details

获取拉取请求的完整详细信息,包括元数据、统计信息和状态。

参数:

  • pr_number (数字):拉取请求编号
  • owner (字符串):仓库所有者
  • repo (字符串):仓库名称

get_pr_files

列出拉取请求中所有已更改的文件,并附上补丁以供审查。

参数:

  • pr_number (数字):拉取请求编号
  • owner (字符串):仓库所有者
  • repo (字符串):仓库名称

get_pr_diff

获取整个拉取请求的完整统一差异(diff)。

参数:

  • pr_number (编号):拉取请求编号
  • owner (字符串):仓库所有者
  • repo (字符串):仓库名称

get_pr_context

获取包含详细信息、文件、提交记录和现有评审的全面的拉取请求(PR)上下文。针对大型语言模型(LLM)代码评审进行了优化。

参数:

  • pr_number (数字):拉取请求编号
  • owner (字符串):仓库所有者
  • repo (字符串):仓库名称
  • includeFullDiff (布尔值,可选):如果为真,则在响应中包含完整的差异

get_file_content

获取拉取请求(PR)头部提交中特定文件的完整内容。

参数:

  • pr_number (编号):拉取请求编号
  • owner (字符串): 仓库所有者
  • repo (字符串):仓库名称
  • path (字符串):相对于仓库根目录的文件路径

get_file_at_base

获取基础分支(PR更改前)的文件内容以进行比较。

参数:

  • pr_number (数字):拉取请求编号
  • owner (字符串):仓库所有者
  • repo (字符串):仓库名称
  • path (字符串):相对于仓库根目录的文件路径

get_existing_reviews

获取拉取请求的现有评审和评论。

参数:

  • pr_number (编号):拉取请求编号
  • owner (字符串):仓库所有者
  • repo (字符串):仓库名称

post_review_comment

在特定行的拉取请求上发布评论。

参数:

  • pr_number (数字):拉取请求编号
  • owner (字符串):仓库所有者
  • repo (字符串):仓库名称
  • body (字符串):评论文本(支持Markdown)
  • path (字符串):相对于仓库根目录的文件路径
  • line (数字):在差异文件中要评论的行号

与MCP客户端的集成

Cursor 集成开发环境(IDE)

要在Cursor IDE中使用此服务器,请在您的MCP设置中添加以下内容:

{
  "mcpServers": {
    "code-review": {
      "command": "node",
      "args": ["/path/to/Code-Review-MCP/dist/stdio.js"],
      "env": {
        "GITHUB_TOKEN": "your_github_token_here"
      }
    }
  }
}

Claude Desktop(可译为“克劳德桌面版”或根据具体语境简化为“克劳德桌面”)

在您的Claude桌面配置中添加:

{
  "mcpServers": {
    "code-review": {
      "command": "node",
      "args": ["/path/to/Code-Review-MCP/dist/stdio.js"],
      "env": {
        "GITHUB_TOKEN": "your_github_token_here"
      }
    }
  }
}

测试

MCP 检查器

你可以使用官方的MCP Inspector来测试MCP服务器工具:

  1. 全局安装 MCP Inspector

    npm install -g @modelcontextprotocol/inspector
    
  2. 运行检查器

    npx @modelcontextprotocol/inspector
    
  3. 连接到您的服务器

    • 检查器将在您的浏览器中打开 [http://localhost:6274]
    • 添加一个新的服务器配置:
      • 命令: node
      • 参数(或论据、理由等,根据上下文具体含义可灵活翻译): ["/absolute/path/to/Code-Review-MCP/dist/stdio.js"]
      • 环境变量: {"GITHUB_TOKEN": "your_token_here"}
  4. 测试工具

    • 一旦连接成功,您可以测试所有可用工具
    • 尝试使用诸如……之类的工具 get_pr_details 使用真实的GitHub PR数据
    • 示例参数:
      {
        "pr_number": 123,
        "owner": "octocat",
        "repo": "Hello-World"
      }
      

检查器提供了一个用户友好的界面,用于测试所有MCP工具,并验证它们在真实GitHub数据上的运行是否正常。

发展

脚本

  • npm run dev - 在开发模式下启动HTTP服务器
  • npm run dev:stdio - 以开发模式启动STDIO服务器
  • npm run build - 构建TypeScript项目
  • npm run lint - 运行 ESLint
  • npm run lint:fix - 自动修复ESLint错误

项目结构

src/
├── github/           # GitHub API integration modules
│   ├── pr-details.ts
│   ├── pr-files.ts
│   ├── pr-diff.ts
│   ├── pr-context.ts
│   ├── file-content.ts
│   ├── file-at-base.ts
│   ├── get-existing-reviews.ts
│   └── post-review-comment.ts
├── octokit/          # Octokit configuration
│   ├── octokit.ts
│   └── create-octokit.ts
├── mcp-server.ts     # Main MCP server configuration
├── http.ts           # HTTP server entry point
└── stdio.ts          # STDIO server entry point

GitHub 令牌权限

您的GitHub个人访问令牌需要以下权限:

  • repo - 完全控制私有仓库
  • pull_requests - 阅读和提交拉取请求
  • contents - 读取仓库内容

贡献;做出贡献

  1. 为仓库创建分支(或“克隆仓库”)
  2. 创建一个特性分支
  3. 做出你的更改
  4. 提交一个拉取请求

许可证

ISC 许可证 - 详情请参阅 package.json。

支持

对于问题和疑问:

  1. 检查现有的GitHub问题
  2. 创建一个包含详细信息的新问题
  3. 包含错误日志和复现步骤