关于 CodeView MCP 🪄
CodeView MCP 将代码审查 MCP 服务、CLI 和 GitHub Action 用于审查拉取请求、本地更改及差异。它结合正则安全检查与可选 AI 分析,并输出关联行号的问题、结论和风险分数。
主要功能
- 01审查拉取请求、本地更改和差异
- 02用正则规则检测安全问题
- 03可选 AI 分析缺陷与测试
- 04生成问题、结论和风险分数
- 05发布 GitHub 行内评论与报告
适用场景
- 01审查 GitHub 拉取请求
- 02检查暂存或未提交的代码更改
- 03按严重程度或风险控制 CI
- 04生成行内审查评论和 SARIF
MCP 相关
MCP 服务提供审查拉取请求、本地更改和差异文本、获取 PR 差异、发布审查以及查看规则和提供方状态的工具。它还提供审查提示词和资源,支持 stdio 或本机 Streamable HTTP 端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
codeview
codeview 可审查代码变更:GitHub 拉取请求、本地尚未提交的工作,或任意差异。 它既可以作为 MCP 服务运行(编辑器助手可以调用它),也可以作为命令行工具和 GitHub Action 运行。
每次审查包含两部分:
- 一组约 50 条正则规则,会检查新增行。它们可以捕获已提交的机密信息、通过字符串格式化构造的 SQL、
eval、shell=True、被禁用的 TLS 验证,以及有风险的 GitHub Actions 工作流。 - 可选的 AI 检查,用于查找逻辑错误、边界情况和缺失的测试。它只使用提供免费套餐的服务(Gemini、Groq、Cerebras、OpenRouter),或通过 Ollama 使用本地模型,因此运行无需花费。
输出包括与文件和行号关联的问题列表、审查结论,以及 0–100 的风险评分和评分依据。
安装
需要 Python 3.11+。
pip install git+https://github.com/mann-uofg/codeview-mcp
或者使用 uv 直接运行,无需安装:
uvx --from git+https://github.com/mann-uofg/codeview-mcp codeview review
用法
codeview review https://github.com/psf/requests/pull/6883 # a pull request
codeview review owner/repo#123 # short form
codeview review # uncommitted changes in the current repo
codeview review --staged # only staged changes
codeview review --branch --base main # current branch vs main
git diff HEAD~3 | codeview review --diff - # any diff
公开仓库无需令牌即可使用。对于私有仓库或要发布审查结果,请设置 GITHUB_TOKEN。
如果已登录 gh CLI,系统会自动使用其令牌。
其他实用选项:
-f, --format text|markdown|json|sarif
-o, --output FILE
--json-output FILE / --sarif-output FILE write extra reports in the same run
--post [--dry-run] publish the review to the PR as inline comments
--fail-on high exit 1 if any finding is high or worse (default: high)
--max-risk 60 exit 1 if the risk score is above 60
--no-ai rules only
--provider gemini --model ... pick the AI provider/model
--focus security ask the AI to concentrate on something
codeview rules 会列出所有规则,codeview providers 会显示已配置的 AI 服务,codeview init 会写入一个入门配置文件。
AI 服务
设置以下任意一个。如果设置了多个,则会按此顺序尝试;某个服务失败或触及速率限制时,会切换到下一个。
| 服务 | 环境变量 | 获取密钥 |
|---|---|---|
| Google Gemini | GEMINI_API_KEY | https://aistudio.google.com/apikey |
| Groq | GROQ_API_KEY | https://console.groq.com/keys |
| Cerebras | CEREBRAS_API_KEY | https://cloud.cerebras.ai |
| OpenRouter(免费模型) | OPENROUTER_API_KEY | https://openrouter.ai/keys |
| Ollama(本地) | CODEVIEW_OLLAMA=1 或 OLLAMA_HOST | https://ollama.com |
| 任意 OpenAI 兼容 API | CODEVIEW_BASE_URL、CODEVIEW_MODEL、CODEVIEW_API_KEY |
每个服务都有适用于其免费套餐的默认模型。codeview providers 会显示所用模型,--model 或 CODEVIEW_MODEL 可以覆盖它。差异内容会裁剪至适配各服务的限制范围内,响应也会缓存在本地,因此重复审查同一差异不会再次消耗配额。
未配置服务时,规则仍会运行。
MCP 服务
将以下内容添加到 MCP 客户端的配置中(Cursor、Windsurf、Zed 等使用此格式):
{
"mcpServers": {
"codeview": {
"command": "uvx",
"args": ["--from", "git+https://github.com/mann-uofg/codeview-mcp", "codeview", "serve"],
"env": { "GEMINI_API_KEY": "...", "GITHUB_TOKEN": "..." }
}
}
}
对于 VS Code,将相同内容放在 .vscode/mcp.json 的 "servers" 下,并添加 "type": "stdio"。
codeview serve --http 则会在 127.0.0.1:8765/mcp 启动 Streamable HTTP 服务。
工具:
review_pull_request:审查 PRreview_local_changes:审查工作树、暂存区或分支变更review_diff_text:审查作为文本传入的差异get_pull_request_diff:获取 PR 元数据和带行号的差异,供助手自行阅读post_review:将审查结果发布到 GitHub。除非传入dry_run=false,否则为试运行;已发布过的评论会跳过。list_rules、provider_status
它还提供提示词(deep_review、security_audit、suggest_tests、review_my_changes)和资源(codeview://rules、codeview://providers、codeview://config/example)。
GitHub Action
name: codeview
on: pull_request
permissions:
contents: read
pull-requests: write # to post the review
security-events: write # only needed for the SARIF upload
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: mann-uofg/codeview-mcp@v2
with:
gemini-api-key: ${{ secrets.GEMINI_API_KEY }} # optional
fail-on: critical
- uses: github/codeql-action/upload-sarif@v4
if: always()
with:
sarif_file: codeview.sarif
此 Action 会发布一条包含摘要和行内评论的审查,写入作业摘要,并设置 risk-score、risk-level、verdict 和 findings 输出。来自 fork 的拉取请求会获得只读令牌,因此不会在其中发布审查结果,但作业摘要和 SARIF 仍可正常使用。所有输入均列在 action.yml 中。
配置
在仓库根目录放置一个 .codeview.toml,或在 pyproject.toml 中添加一个 [tool.codeview] 表:
provider = "auto"
min_severity = "low" # hide findings below this
fail_on = "high" # or "never"
max_findings = 30
exclude = ["docs/**", "**/*.generated.ts"]
disable_rules = ["CV-QUAL-006"]
focus = ["security"]
instructions = "We use SQLAlchemy 2.x. Flag raw SQL built with string formatting."
[[custom_rules]]
id = "TEAM-001"
pattern = "print\\("
message = "Use the logger instead of print()."
severity = "low"
paths = ["src/**/*.py"]
要忽略某一行,可在该行添加 codeview-ignore 注释;要忽略特定规则,可添加 cv-ignore[CV-SEC-020]。
审查拉取请求时,配置会从基础分支读取,而不是从 PR 读取。这样一来,PR 就无法关闭原本可以发现其中问题的检查。
安全说明
codeview 会读取由他人控制的输入,因此:
- 差异和 PR 文本会作为数据传递给模型,并指示模型不要遵循其中的任何内容。模型的回答会经过验证,指向差异中不存在的文件或行的发现会被丢弃。
- 发布到 GitHub 的文本中,
@mentions、关闭问题的关键词、图片和 HTML 注释都会经过处理,以防产生影响。 - 运行本地 git 命令时,会关闭外部差异驱动程序、textconv、fsmonitor 和分页器。引用会经过验证,且不会跟随符号链接。
- 只接受 GitHub 主机上的 PR URL。绝不会通过普通 HTTP 将 API 密钥发送到非本地主机。
- HTTP 传输仅监听 localhost,并检查 Host/Origin 标头。
如需报告漏洞,请参阅 SECURITY.md。
开发
git clone https://github.com/mann-uofg/codeview-mcp
cd codeview-mcp
uv sync
uv run pytest
uv run ruff check . && uv run mypy
请参阅 CONTRIBUTING.md。更改记录列于 CHANGELOG.md。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。