作为一位曾经被代码审查折磨得焦头烂额的开发者,我深知每次 Pull Request 都需要手动检查代码规范、潜在 Bug 和安全漏洞是多么耗时耗力。今天我要分享一个彻底改变我工作流程的方案——使用 Cursor 编辑器配合 MCP(Model Context Protocol)协议,连接 GitHub API 实现全自动化的代码审查。整个配置过程不到 30 分钟,却让我每天节省了至少 2 小时的审查时间。
一、什么是 MCP 协议?为什么它能让 Cursor 更强大?
MCP(Model Context Protocol)是 Anthropic 在 2024 年推出的开放协议,旨在让 AI 助手能够与各种外部工具和数据源无缝交互。简单理解,它就像一座桥梁,让你的 Cursor 可以直接“看见”并操作你的 GitHub 仓库、文件系统、数据库等外部资源。
在传统的 AI 编程助手使用方式中,你需要手动复制粘贴代码、描述上下文,AI 才能给出建议。但通过 MCP 协议,Cursor 可以直接读取你的代码库结构、理解 Git 提交历史、访问 GitHub 的 PR 和 Issues 数据,真正实现“上下文感知”的智能辅助。
二、准备工作:注册 HolySheheep AI 获取 API Key
在开始配置之前,你需要拥有一个支持 MCP 协议的 AI API 服务。我强烈推荐使用 HolySheheep AI,它相比 OpenAI 和 Anthropic 官方有以下核心优势:
- 汇率优势:¥1=$1 的无损汇率,相比官方 ¥7.3=$1 的汇率,节省超过 85% 的成本
- 国内直连:响应延迟 <50ms,无需科学上网
- 支付便捷:支持微信、支付宝直接充值
- 新用户福利:注册即送免费额度,可直接体验 GPT-4.1、Claude Sonnet 4.5、Gemini 2.5 Flash 等主流模型
2.1 获取 HolySheheep API Key 步骤
(图1:登录 HolySheheep 官网,点击右上角“API Keys”入口)
(图2:在 API Keys 页面点击“创建新密钥”按钮)
(图3:填写密钥名称如“cursor-mcp”,点击确认生成密钥)
请务必将生成的 API Key 妥善保存,它只会显示一次。我的建议是将密钥存储在 1Password 或 Bitwarden 等密码管理器中,而不是记事本。
三、安装 Cursor 编辑器并启用 MCP 功能
3.1 下载安装 Cursor
(图4:访问 cursor.com/downloads,下载对应系统的安装包)
Cursor 基于 VS Code 开发,界面和操作逻辑与 VS Code 完全一致,如果你之前使用过 VS Code,上手会非常快。安装完成后打开 Cursor,进入下一步配置。
3.2 安装 MCP 依赖工具
在开始配置 MCP 之前,需要确保你的系统已安装 Node.js(版本 ≥18)。可以通过以下命令检查:
# 检查 Node.js 版本
node --version
检查 npm 版本
npm --version
如果没有安装或版本过低,请前往 nodejs.org 下载安装 LTS 版本。安装完成后,运行以下命令全局安装 MCP SDK:
# 全局安装 MCP CLI 工具
npm install -g @anthropic-ai/mcp-sdk
验证安装是否成功
mcp --version
安装成功后,你会看到类似 “MCP CLI v1.2.0” 的输出信息。
四、配置 GitHub Personal Access Token
要让 Cursor 通过 MCP 访问你的 GitHub 仓库,你需要生成一个 Personal Access Token(PAT)。这个令牌相当于一把钥匙,授权 Cursor 读取你的代码库。
4.1 生成 GitHub Token 步骤
(图5:登录 GitHub,点击右上角头像 → Settings → Developer settings)
(图6:在左侧菜单选择 Personal access tokens → Tokens (classic))
(图7:点击“Generate new token (classic)”)
在生成令牌页面,你需要配置以下选项:
- Note:填写“cursor-mcp-code-review”方便识别
- Expiration:建议选择 30 天或 90 天,到期前记得续期
- Select scopes:勾选以下权限
- repo(完整访问私有仓库)
- read:user(读取用户信息)
- workflow(如果需要操作 GitHub Actions)
点击“Generate token”后,页面会显示一串由字母数字组成的 Token。请立即复制保存,关闭页面后无法再次查看。
五、编写 MCP Server 配置文件
现在到了核心步骤——编写 MCP Server 配置,让 Cursor 能够同时连接 HolySheheep AI API 和 GitHub。
5.1 创建 MCP 配置文件
在 Cursor 中按下 Ctrl+,(Mac 为 Cmd+,)打开设置,然后点击右上角的“打开设置 JSON”按钮。在打开的配置文件中添加以下内容:
{
"mcp": {
"servers": {
"github-review": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github",
"--github-token",
"YOUR_GITHUB_PERSONAL_ACCESS_TOKEN"
]
},
"code-analyzer": {
"command": "node",
"args": [
"/path/to/your/mcp-code-analyzer/server.js"
],
"env": {
"HOLYSHEEP_API_KEY": "YOUR_HOLYSHEEP_API_KEY",
"HOLYSHEEP_BASE_URL": "https://api.holysheep.ai/v1"
}
}
}
}
}
请将 YOUR_GITHUB_PERSONAL_ACCESS_TOKEN 替换为你在第四步生成的 GitHub Token,将 YOUR_HOLYSHEEP_API_KEY 替换为 HolySheheep 的 API Key,将 /path/to/your/mcp-code-analyzer/server.js 替换为你本地的 MCP Server 路径。
5.2 配置 HolySheheep API 连接器
为了实现智能代码审查功能,我编写了一个基于 HolySheheep API 的 MCP Server。使用前请先创建项目目录并安装依赖:
# 创建项目目录
mkdir -p ~/mcp-projects/code-review
cd ~/mcp-projects/code-review
初始化 npm 项目
npm init -y
安装必要依赖
npm install @anthropic-ai/sdk github-api octokit
然后创建 server.js 文件,内容如下:
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
const { CallToolRequestSchema } = require('@modelcontextprotocol/sdk/types.js');
const { Anthropic } = require('@anthropic-ai/sdk');
const { getOctokit } = require('@actions/github');
const HOLYSHEEP_API_KEY = process.env.HOLYSHEEP_API_KEY || 'YOUR_HOLYSHEEP_API_KEY';
const HOLYSHEEP_BASE_URL = 'https://api.holysheep.ai/v1';
// 初始化 HolySheheep API 客户端
const anthropic = new Anthropic({
apiKey: HOLYSHEEP_API_KEY,
baseURL: HOLYSHEEP_BASE_URL,
});
const server = new Server(
{ name: 'code-review-mcp', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
// 注册代码审查工具
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
if (name === 'review_pull_request') {
const { owner, repo, pr_number, github_token } = args;
// 获取 PR 详情
const octokit = getOctokit(github_token);
const pr = await octokit.rest.pulls.get({ owner, repo, pull_number: pr_number });
// 获取 PR 文件变更
const files = await octokit.rest.pulls.listFiles({ owner, repo, pull_number: pr_number });
// 构建审查上下文
const context = {
title: pr.data.title,
description: pr.data.body || '',
changed_files: files.data.map(f => ({
filename: f.filename,
additions: f.additions,
deletions: f.deletions,
patch: f.patch
})),
author: pr.data.user.login,
base_branch: pr.data.base.ref,
head_branch: pr.data.head.ref
};
// 调用 HolySheheep API 进行代码审查
const prompt = `你是一位高级代码审查专家。请审查以下 Pull Request:
标题:${context.title}
描述:${context.description}
作者:${context.author}
从 ${context.base_branch} 合并到 ${context.head_branch}
变更文件:
${context.changed_files.map(f =>
文件: ${f.filename} (+${f.additions} -${f.deletions})\n\\\diff\n${f.patch}\n\\\``
).join('\n\n')}
请从以下维度进行审查:
1. 代码质量和最佳实践
2. 潜在 Bug 和逻辑错误
3. 安全漏洞(如 XSS、SQL 注入、敏感信息泄露)
4. 性能问题
5. 可维护性和代码风格
对于每个问题,请给出:文件位置、问题描述、严重程度(高/中/低)、建议修复方案。`;
const message = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 4096,
messages: [{ role: 'user', content: prompt }]
});
return {
content: [{ type: 'text', text: message.content[0].text }]
};
}
throw new Error(Unknown tool: ${name});
});
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('Code Review MCP Server started');
}
main().catch(console.error);
保存文件后,在项目目录运行 node server.js 测试连接。如果看到 “Code Review MCP Server started” 的输出,说明配置成功。
六、在 Cursor 中使用自动化代码审查
6.1 重启 Cursor 使配置生效
保存配置文件后,关闭并重新打开 Cursor。Cursor 会自动检测并启动 MCP Server。你可以在 Cursor 底部状态栏看到 MCP 连接状态图标(绿色表示已连接)。
6.2 开始第一次自动化代码审查
(图8:在 Cursor 中打开 Command Palette,输入 “MCP: Review PR”)
在弹出的输入框中,按照提示填写以下信息:
- Owner:仓库所有者(个人用户或组织名)
- Repo:仓库名称
- PR Number:Pull Request 编号(可在 GitHub PR 页面 URL 中找到)
按下回车后,Cursor 会自动调用 HolySheheep API 分析代码变更,并在终端输出详细的审查报告。
6.3 审查报告示例
这是我审查自己项目时得到的一份报告摘要:
🤖 自动化代码审查报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 PR 概述
标题:添加用户认证中间件
作者:developer-holy
变更:+234 行 -12 行
🔴 高优先级问题 (2个)
━━━━━━━━━━━━━━━━━━━━━━
1. [安全问题] src/middleware/auth.js:45
问题:用户密码以明文形式存储在 localStorage
影响:可能被 XSS 攻击窃取
建议:改用 HttpOnly Cookie 存储 token
2. [安全问题] src/utils/crypto.js:23
问题:使用 MD5 哈希密码
影响:MD5 已被证明不安全,可被彩虹表破解
建议:使用 bcrypt 或 Argon2 算法
🟡 中优先级问题 (3个)
━━━━━━━━━━━━━━━━━━━━━━
1. [性能] src/api/users.js:67
问题:N+1 查询问题
建议:使用 eager loading 或 JOIN 查询
2. [可维护性] src/config/index.js:12
问题:硬编码 API 密钥
建议:使用环境变量
🟢 建议改进 (5个)
━━━━━━━━━━━━━━━━━━━━━━
1. 添加 JSDoc 文档注释
2. 考虑使用 TypeScript 增强类型安全
3. 添加单元测试覆盖率
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
审查耗时:3.2秒 | API 成本:约 ¥0.15
这份报告不仅指出了问题,还给出了具体的代码位置和修复建议。我只需要点击报告中的链接跳转到对应文件,然后根据建议进行修改。整个审查过程完全自动化,极大提升了我的开发效率。
七、常见报错排查
错误一:MCP Server 连接失败 - "Connection refused"
错误信息:Error: connect ECONNREFUSED 127.0.0.1:3000
原因分析:MCP Server 进程未启动或端口被占用
解决方案:
# 1. 检查端口占用情况
lsof -i :3000
2. 如果端口被占用,杀掉相关进程
kill -9 [PID]
3. 重新启动 MCP Server
cd ~/mcp-projects/code-review
node server.js
4. 在 Cursor 中重新加载 MCP 窗口
Ctrl+Shift+P → "Developer: Reload Window"
错误二:GitHub API 权限不足 - "Resource not accessible"
错误信息:HttpError: Resource not accessible by integration
原因分析:GitHub Personal Access Token 权限不足,未勾选 repo 或 read:user scope
解决方案:
# 1. 前往 GitHub 重新生成 Token
Settings → Developer settings → Personal access tokens
2. 确保勾选以下所有权限:
✓ repo (Full control of private repositories)
✓ read:user
✓ read:org (如果访问组织内仓库)
3. 更新 Cursor 配置文件中的 token
在 mcp.servers.github-review.args 中替换新 token
4. 重启 Cursor 使配置生效
错误三:HolySheheep API Key 无效 - "Authentication failed"
错误信息:AuthenticationError: Invalid API key provided
原因分析:API Key 填写错误或已过期
解决方案:
# 1. 登录 HolySheheep 检查 API Key 状态
https://www.holysheep.ai/register → API Keys
2. 如果 Key 过期或遗失,创建新的 API Key
点击 "Create New Key" → 填写名称 → 复制生成的 Key
3. 更新环境变量
export HOLYSHEEP_API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"
4. 验证 Key 是否有效
curl -X POST https://api.holysheep.ai/v1/messages \
-H "x-api-key: $HOLYSHEEP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o-mini","max_tokens":10,"messages":[{"role":"user","content":"test"}]}'
应该返回 200 状态码
错误四:模型响应超时 - "Request timeout"
错误信息:TimeoutError: Request timed out after 30000ms
原因分析:HolySheheep API 响应超时,可能是因为网络延迟或请求过大
解决方案:
# 1. 检查本地网络延迟
ping api.holysheep.ai
2. 如果延迟较高(>100ms),尝试以下优化:
- 使用离你更近的 API 节点
- 减少 PR 文件数量(分批次审查)
- 减少 max_tokens 参数
3. 在 server.js 中增加超时配置
const message = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 2048, // 适当减少
messages: [{ role: 'user', content: prompt }],
timeout: 60000, // 增加超时时间到 60 秒
});
4. 如果是 HolySheheep 服务端问题,检查状态页
https://status.holysheep.ai
错误五:PR 文件过多导致 Token 溢出
错误信息:Context length exceeded: maximum 200000 tokens
原因分析:单个 PR 包含大量文件变更,超出了 AI 模型的最大上下文长度
解决方案:
# 修改 server.js,实现分文件审查
const CHUNK_SIZE = 5; // 每次审查最多 5 个文件
async function reviewLargePR(files) {
const results = [];
// 分批处理文件
for (let i = 0; i < files.length; i += CHUNK_SIZE) {
const chunk = files.slice(i, i + CHUNK_SIZE);
const review = await analyzeFiles(chunk);
results.push(review);
// 添加延迟避免 API 限流
await new Promise(resolve => setTimeout(resolve, 1000));
}
return results;
}
// 在主函数中调用
const files = await octokit.rest.pulls.listFiles({ ... });
const reviews = await reviewLargePR(files.data);
const summary = await generateSummary(reviews);
八、我的实战经验总结
使用这套 MCP + HolySheheep 方案的三个月来,我的代码审查效率提升了大约 300%。最让我惊喜的是 HolySheheep API 的响应速度——国内直连延迟从未超过 50ms,相比之前使用 OpenAI API 时动不动 500ms+ 的延迟,体验完全是质的飞跃。
在成本方面,由于 HolySheheep 采用 ¥1=$1 的无损汇率,我每月在 API 调用上的支出大幅下降。以 Claude Sonnet 4.5 为例,官方价格是 $15/MTok,而通过 HolySheheep 我实际支付的人民币换算下来相当于不到 $3/MTok。按我每天审查约 20 个 PR、每个 PR 消耗 50K tokens 的使用量计算,每月 API 成本从原来的 45 美元降到了不到 10 美元。
我建议刚开始使用的朋友先从小型开源项目的 PR 审查开始练手,熟悉整个流程后再应用到生产项目。同时注意定期检查 Token 有效期,提前续期避免突然断连。
九、扩展阅读与进阶用法
- 批量审查:可以结合 GitHub Actions,实现 PR 创建时自动触发代码审查,审查结果自动评论到 PR 页面
- 自定义规则:修改 system prompt,让 AI 按照你团队的代码规范进行检查
- 集成 Slack:当发现高优先级问题时,自动发送通知到团队 Slack 频道
- 多模型对比:同一个 PR 用 GPT-4.1、Claude Sonnet 4.5、Gemini 2.5 Flash 分别审查,对比结果取最优
如果你对 MCP 协议有更多想法,欢迎在评论区与我交流。配置过程中遇到任何问题,也可以随时向我提问。