使用说明
代码审查MCP服务器
一个模型上下文协议(MCP)服务器,提供全面的GitHub Pull Request代码审查功能。该服务器使AI助手能够获取PR(Pull Request)详情,分析代码更改,并与GitHub仓库进行交互,以实现自动化代码审查工作流。
特性/功能
🔍 拉取请求分析
- 公关详情获取包括标题、描述、作者和统计数据在内的全面元数据
- 文件更改列出所有修改过的文件,包括增加/删除的行数和补丁
- 完整上下文获取针对LLM代码审查优化的完整PR上下文
- **统一差异(或统一差分)**获取整个拉取请求的完整统一差异(diff)
📁 文件操作
- 当前内容获取PR(Pull Request)头部提交中的文件内容
- 基准比较从基线分支获取文件内容,以便进行前后对比
- 路径解析处理相对于仓库根目录的文件路径
💬 评论管理
- 现有评论获取拉取请求(PR)上的所有现有评论和反馈
- 发表评论在文件的特定行中添加审查评论
- 评审历史访问完整的评论对话历史记录
安装
先决条件
- Node.js 版本 >= 18.18
- 具有适当权限的GitHub个人访问令牌
设置
-
克隆仓库
git clone <repository-url> cd Code-Review-MCP -
安装依赖项
npm install -
配置环境
cp env.example .env编辑
.env并添加您的GitHub令牌:GITHUB_TOKEN=ghp_your_personal_access_token_here -
构建项目
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服务器工具:
-
全局安装 MCP Inspector
npm install -g @modelcontextprotocol/inspector -
运行检查器
npx @modelcontextprotocol/inspector -
连接到您的服务器
- 检查器将在您的浏览器中打开 [http://localhost:6274]
- 添加一个新的服务器配置:
- 命令:
node - 参数(或论据、理由等,根据上下文具体含义可灵活翻译):
["/absolute/path/to/Code-Review-MCP/dist/stdio.js"] - 环境变量:
{"GITHUB_TOKEN": "your_token_here"}
- 命令:
-
测试工具
- 一旦连接成功,您可以测试所有可用工具
- 尝试使用诸如……之类的工具
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- 运行 ESLintnpm 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- 读取仓库内容
贡献;做出贡献
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支
- 做出你的更改
- 提交一个拉取请求
许可证
ISC 许可证 - 详情请参阅 package.json。
支持
对于问题和疑问:
- 检查现有的GitHub问题
- 创建一个包含详细信息的新问题
- 包含错误日志和复现步骤
