内容
# 安全代码审查 MCP
Cursor 中传递的源代码通过本地规则和 Semgrep 分析安全漏洞和代码问题,并使用 OpenAI 进行改进,然后返回统一的差异。这是 STDIO MCP 服务器。
## 准备
- Java 17+
- `OPENAI_API_KEY`
- Semgrep(可选):如果未安装,则仅返回警告并继续执行其余步骤。
```bash
export OPENAI_API_KEY="..."
./gradlew clean bootJar
```
## Cursor 注册
在 Cursor MCP 设置中添加以下服务器。将 `command` 的路径替换为此项目的绝对路径。
```json
{
"mcpServers": {
"reviewpilot": {
"command": "/absolute/path/reviewpilot-mcp/gradlew",
"args": ["-q", "bootRun"],
"env": {
"OPENAI_API_KEY": "${env:OPENAI_API_KEY}",
"OPENAI_MODEL": "gpt-5-mini",
"SEMGREP_ENABLED": "true"
}
}
}
}
```
注册后,从 Cursor 调用 `improve_code` 工具。
```json
{
"filePath": "src/main/java/example/UserService.java",
"source": "public class UserService { ... }",
"instruction": "改善安全问题和可读性"
}
```
结果包括 `status`、原始 `issues`、改进后的 `remainingIssues`、`diff` 和 `warnings`。根据风险总和,`status` 被判定为 `IMPROVED`、`UNCHANGED` 或 `REGRESSED`。服务器不会直接修改文件。
## 设置
| 环境变量 | 默认值 | 说明 |
|---|---|---|
| `OPENAI_BASE_URL` | `https://api.openai.com` | OpenAI 兼容 API 地址 |
| `OPENAI_MODEL` | `gpt-5-mini` | 代码改进模型 |
| `SEMGREP_ENABLED` | `true` | 是否启用 Semgrep |
| `SEMGREP_CONFIG` | `.semgrep/reviewpilot.yml` | Semgrep 规则配置 |
默认安全规则检测 Java 和 Python 中的 SQL 注入、命令注入、危险反序列化漏洞和脆弱的哈希算法。对于 Python,还检测 `eval` 和 `exec` 的使用。
分析按 `Java MCP → Semgrep → LLM → diff` 的顺序执行。
## 测试
```bash
./gradlew test
```