内容
# 代码审查 MCP 工具
该工具是一个模型上下文协议(MCP)服务器,提供自动化的代码审查,并为任何支持 MCP 集成的应用程序留下 GitHub 拉取请求(PR)评论。
[](https://deepwiki.com/Orcus2021/code-review-mcp-server)
## 功能
- 比较两个 Git 分支之间的代码差异
- 比较 GitHub 拉取请求 URL 的代码差异
- 为 GitHub 拉取请求添加摘要评论
- 为 GitHub 拉取请求添加特定行注释
- 提供详细的 code 审查指南
- 支持 Notion 集成,从 Notion 代码块检索审查指南,默认为 fallback
- 支持本地 Markdown 文件以获取完整的审查指南
- 包括预配置的样式和代码审查指南
- 从本地目录读取 PR 模板
- 创建 GitHub 拉取请求,自动检测仓库信息
- 获取原始 Git diff 输出,无需审查指南
## 工具
- **CodeReview**:在分支和基准分支之间运行 Git diff。返回差异以及审查和修复问题的指南。
- **GetLocalGitDiff**:在本地获取两个分支之间的 Git diff。返回原始差异输出,无需审查指南。
- **CodeReviewWithGithubUrl**:从 GitHub PR URL 获取差异。返回差异以及审查和修复问题的指南。
- **AddPRSummaryComment**:为 GitHub PR 添加摘要评论。
- **AddPRLineComment**:为 GitHub PR 中的特定行添加多个评论。支持在 PR 差异中评论特定更改的行。
- **GetPRTemplate**:从指定文件夹路径和模板名称读取 PR 模板,返回模板内容或默认模板(如果未找到)。
- **CreatePR**:使用指定的标题、正文和分支创建新的 GitHub 拉取请求。自动检测 GitHub URL 和当前分支的本地 Git 配置。
## 架构
- **MCP 服务器**:监听来自任何 MCP 兼容客户端应用程序的代码审查请求。
- **Git 集成**:使用本地 Git 或 GitHub PR 生成差异。
- **Notion 集成**:如果配置,从 Notion 代码块获取审查指南。
- **本地文件支持**:从本地 Markdown 文件读取完整的审查指南。
- **自动审查**:分析代码差异并生成审查评论和建议。
## 先决条件
- Node.js(推荐 v18 或以上)
- Git 已安装在您的系统上
- 对于 GitHub PR 审查,您必须提供:
- `GITHUB_TOKEN` 环境变量(使用 GitHub RESTful API),**或**
- 已安装并经过身份验证的 GitHub CLI(`gh`)
- (可选)用于指南集成的 Notion API 令牌
## MCP 配置
要在任何支持 MCP 的应用程序中使用此工具,请按照以下步骤操作:
1. 打开支持 MCP 的应用程序的配置文件。
2. 添加以下配置:
```json
{
"mcpServers": {
"code-review-tool": {
"command": "npx",
"args": ["-y", "code-review-mcp-server"],
"env": {
"GITHUB_TOKEN": "github_token",
"NOTION_API_KEY": "notion_api_key",
"NOTION_CODE_REVIEW_GUIDELINE_CODE_BLOCK_URL": "notion_code_block_url_here",
"NOTION_STYLE_GUIDELINE_CODE_BLOCK_URL": "notion_code_block_url_here",
"LOCAL_INSTRUCTIONS_FILE_PATH": "/path/to/complete-instructions.md",
"IGNORE_PATTERNS": "pattern1,pattern2,pattern3"
}
}
}
}
```
### 环境变量描述
<table>
<thead>
<tr>
<th>变量</th>
<th>必填</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>GITHUB_TOKEN</code></td>
<td>可选</td>
<td>用于 API 访问的 GitHub 个人访问令牌。如果未提供,则回退到 GitHub CLI。</td>
</tr>
<tr>
<td><code>LOCAL_INSTRUCTIONS_FILE_PATH</code></td>
<td>可选</td>
<td>包含完整审查指南的本地 Markdown 文件的路径。提供时,此文件完全取代组合的 Notion/默认指南。优先级:本地 > Notion > 默认。</td>
</tr>
<tr>
<td><code>IGNORE_PATTERNS</code></td>
<td>可选</td>
<td>以逗号分隔的 glob 模式,用于排除文件审查。</td>
</tr>
<tr>
<td colspan="3" align="center"><strong>Notion</strong></td>
</tr>
<tr>
<td><code>NOTION_API_KEY</code></td>
<td>可选</td>
<td>从 Notion 获取审查指南所需的令牌。</td>
</tr>
<tr>
<td><code>NOTION_CODE_REVIEW_GUIDELINE_CODE_BLOCK_URL</code></td>
<td>可选</td>
<td>包含代码审查指南的 Notion URL。必须指向 Notion <code></> Code</code> 块,并需要有效的 <code>NOTION_API_KEY</code> 才能正常工作。如果未配置,则回退到默认指南。</td>
</tr>
<tr>
<td><code>NOTION_STYLE_GUIDELINE_CODE_BLOCK_URL</code></td>
<td>可选</td>
<td>包含样式指南的 Notion URL。必须指向 Notion <code></> Code</code> 块,并需要有效的 <code>NOTION_API_KEY</code> 才能正常工作。如果未配置,则回退到默认指南。</td>
</tr>
</tbody>
</table>
## 审查指南优先级
该工具支持多个审查指南来源,优先级如下([实现](src/utils/instructions/getInstructions.ts)):
1. **本地 Markdown 文件**(最高优先级)
- 通过 `LOCAL_INSTRUCTIONS_FILE_PATH` 环境变量设置
- 必须是 `.md` 或 `.markdown` 文件
- 如果可用,则完全取代所有其他指南来源
- 如果文件无法读取,则回退到 Notion/默认
2. **Notion 集成**(中等优先级)
- 从 Notion 结合样式指南和代码审查指南
- 需要 `NOTION_API_KEY` 和相应的 URL 环境变量
3. **默认指南**(最低优先级)
- 内置样式指南和代码审查指南
- 始终作为 fallback 可用
## Notion 集成设置
### 1. 请求 Notion API 令牌
1. 访问 [Notion 开发者](https://developers.notion.com/)
2. 创建新的集成
3. 获取 API 令牌
有关详细指南,请参阅:[Notion API 授权指南](https://developers.notion.com/docs/authorization#internal-integration-auth-flow-set-up)
### 2. 配置环境变量
该工具需要以下环境变量:
```
NOTION_API_KEY=your_token_here
NOTION_CODE_REVIEW_GUIDELINE_CODE_BLOCK_URL=your_notion_code_block_url
NOTION_STYLE_GUIDELINE_CODE_BLOCK_URL=your_notion_style_guideline_url
```
这些可以在上面的 MCP 配置的 `env` 部分中提供。
### 3. 将集成添加到 Notion 页面
1. 点击 Notion 页面的 `Share` 按钮
2. 将您的集成添加到页面的共享列表中
注意:目前仅支持从 Notion 读取代码块
有关详细指南,请参阅:[Notion API 连接指南](https://www.notion.com/help/add-and-manage-connections-with-the-api)
## 用法
> **提示**:为了获得更好的审查结果,建议在运行代码审查命令之前切换到正在审查的分支。
### 本地 Git 分支审查
在支持 MCP 的应用程序中,发送以下命令:
```
code review
base branch: branch/any_branch
```
这将:
1. 比较当前分支和指定的基准分支之间的差异
2. 自动生成 Git 差异
3. 根据样式和代码审查指南进行审查
4. 提供详细的审查结果和改进建议
### 获取原始 Git 差异
要仅获取 Git 差异而无需审查指南:
```
get local git diff
base branch: main
```
这将返回当前分支和指定的基准分支之间的原始 Git 差异输出,可用于进一步处理或分析。
### GitHub PR 审查
在支持 MCP 的应用程序中,发送以下命令:
```
code review
https://github.com/owner/repo/pull/123
生成审查报告后,请:
1. 添加 PR 摘要评论
2. 如果个别文件需要建议的更改,请使用行注释。
```
这将获取 PR 的差异,提供代码审查,并直接在 GitHub 上留下 PR 评论。
### 创建 GitHub 拉取请求
使用自动仓库检测创建 PR:
```
create PR base on diff
base branch: main
```
该工具将:
- 自动从 Git 远程检测 GitHub 仓库 URL
- 使用当前分支作为源分支
- 验证当前分支是否已推送到远程
- 使用 GitHub CLI 或 REST API 创建 PR
- 支持创建草稿 PR 和分配里程碑
**手动覆盖**(如果自动检测失败):
```
create PR
github url: https://github.com/user/repo
base branch: main
```
### 读取 PR 模板
读取仓库中的 PR 模板:
```
get PR template
```
这将:
- 在指定文件夹中搜索 `pull_request_template.md`
- 还会检查 `.github/` 子目录
- 返回模板内容或默认模板(如果未找到)
**自定义模板名称**:
```
get PR template
folder path: /path/to/your/repo/template
template name: custom_template.md
```
### CI 集成以实现自动化代码审查
您可以通过触发 n8n webhook 在 CI 管道中自动化代码审查,n8n webhook 将调用该项目的 MCP 工具来执行审查并返回结果或在您的 PR 上留下评论。
有关分步指南和推荐的工作流图,请参阅:[使用 n8n 和 MCP 工具的 CI 集成](./doc/ci-n8n-mcp-integration.md)
## 审查指南
该工具提供多种配置审查指南的方法:
### 1. 本地 Markdown 指南(推荐)
创建一份完整的 Markdown 格式的指南文件,并设置 `LOCAL_INSTRUCTIONS_FILE_PATH` 环境变量。这为您的审查过程提供了最大的灵活性和版本控制。
### 2. Notion 集成
通过 Notion 代码块配置单独的样式和代码审查指南。
### 3. 默认指南
该工具包括内置指南,涵盖:
- **样式指南**:变量命名、函数命名、常量命名等的代码样式标准。
- **代码审查指南**:基于 SOLID 原则、易读性、不可变性等代码质量标准。