MCP代码审查服务器
一个基于FastAPI构建的安全、以合规为重点的代码审查服务器,为托管合规平台(MCP)环境提供自动化的代码分析和策略执行。
🏗️ 解决方案概述
这个MCP代码审查服务器实现了一个安全、注重合规性的代码审查流程,该流程在严格的安全控制下,连接了GitHub与AI驱动的分析功能。
架构组件
- GitHub — PR(拉取请求)和仓库事件的真相来源
- MCP 服务器 — 连接GitHub和大型语言模型(LLM)的中间件服务,负责执行安全、数据净化和策略检查
- MCP客户端 + 大语言模型(LLM) — 分析代码差异、风格指南并生成审查反馈的“大脑”
- AI GitHub 用户 — 发布AI生成的评论的机器人账号
安全优先设计
这种架构确保大型语言模型(LLM)从不直接与GitHub通信,而是通过强制执行安全和合规性的MCP服务器进行交互。MCP服务器作为安全的中间件层,起到以下作用:
- 验证并清理所有传入的请求
- 在处理前强制执行策略合规性
- 在GitHub与AI系统之间提供了一个受控的接口
- 维护审计追踪和安全控制
GitHub → MCP Server → MCP Client + LLM → AI GitHub User
↓
Security & Compliance
Policy Enforcement
Data Sanitization📊 表格/数据图表 查看详细架构图 - 系统组件和数据流的可视化表示
✨ 特点
- 自动化代码分析检测常见的代码问题,如打印语句和TODO注释
- 安全合规内置的消毒和验证功能,防止敏感数据泄露
- 政策执行可配置规则以阻止不符合规范的代码提交
- RESTful API(Representational State Transfer(表述性状态转移)应用程序编程接口)基于FastAPI的简洁接口,便于轻松集成
- Docker 支持采用容器化部署并遵循安全最佳实践
- 结构化回应带有详细审阅意见的打字回复
🚀 快速入门
先决条件
- Python 3.11或更高版本
- Docker(可选)
本地开发
- 克隆仓库
git clone
cd code-review-with-mcp-server- 安装依赖项
pip install -r requirements.txt- 运行服务器
uvicorn app.server:app --host 0.0.0.0 --port 8000 --reload- 测试健康检查端点
curl http://localhost:8000/healthDocker 部署
- 构建镜像
docker build -t mcp-code-review-server .- 运行容器
docker run -p 8000:8000 mcp-code-review-server📚 API 参考
终点(或:终点指标)
GET /health
健康检查端点。
回应:
{
"status": "ok"
}POST /review
提交代码以进行审查和分析。
请求体:
{
"repo": "org/repository-name",
"pr_id": 123,
"author": "developer@example.com",
"file_path": "src/main.py",
"code": "print('Hello, World!')",
"metadata": {}
}回复:
{
"repo": "org/repository-name",
"pr_id": 123,
"file_path": "src/main.py",
"comments": [
{
"line": 1,
"comment": "Avoid using 'print' in production code.",
"severity": "WARNING"
}
],
"sanitized": false,
"original_length": 25
}数据模型
代码审查请求
repo(字符串,必填):仓库标识符pr_id(整数,可选):拉取请求IDauthor(字符串,可选):作者用户名/电子邮件file_path(字符串,必填):正在审查的文件路径code(字符串,必填):文件内容或差异片段metadata(对象,可选):额外的元数据
代码审查回复
repo(字符串):仓库标识符pr_id(整数,可选):拉取请求IDfile_path(字符串):正在审查的文件路径comments(数组):评论列表sanitized(布尔值):代码是否已清理original_length(整数):原始代码长度
评论/评审意见
line(整数):行号comment(字符串):评论文本severity(字符串): 严重程度级别 (INFO, WARNING, ERROR)
🔒 安全功能
代码消毒(或代码净化)
服务器在处理代码之前会自动清除敏感信息:
- 电子邮件地址(内容)已做模糊处理
[REDACTED_EMAIL] - API密钥和令牌已作模糊处理/已删除/已省略
[REDACTED_SECRET] - AWS访问密钥已作模糊处理(或:已隐去)
[REDACTED_AWS_KEY] - 长十六进制令牌(内容)已做遮蔽处理,如
[REDACTED_TOKEN] - 包含禁用关键词的行(内容)已作模糊处理
[REDACTED_LINE]
政策验证
请求根据安全策略进行验证:
- 禁用关键词包含敏感词的代码块
- 尺寸限制通过设置1MB的有效载荷限制来防止DoS攻击
- 模式检测识别常见的秘密模式
禁用关键词
以下关键词会触发政策违规:
password,passwdsecret,api_keyprivate_key,confidential
🛠️ 代码分析工具
内置分析器
- 打印语句检测器
- 识别出 print() 生产代码中的陈述(或:生产代码中的语句) - 严重性:警告
- TODO/FIXME 扫描器
- 查找未解决的 TODO 和 FIXME 注释 - 严重程度:信息(或“一般”)
扩展分析
该 MCPTools 该类提供了一个框架,用于添加自定义分析工具:
class MCPTools:
@staticmethod
def custom_analyzer(code: str) -> List[ReviewComment]:
# Your custom analysis logic here
return comments📁 项目结构
mcp-server/
├── app/
│ ├── __init__.py # Package initialization
│ ├── server.py # FastAPI application and routes
│ ├── handlers.py # Code analysis orchestration
│ ├── compliance.py # Security and policy enforcement
│ └── models.py # Pydantic data models
├── requirements.txt # Python dependencies
├── Dockerfile # Container configuration
└── README.md # This file🧪 测试
运行测试套件:
pytest🔧 配置
环境变量
LOG_LEVEL设置日志级别(默认:INFO)MAX_PAYLOAD_SIZE最大请求大小(以字节为单位)(默认:1,000,000)
定制化
- 修改
compliance.py添加自定义验证规则 - 扩展
handlers.py添加新的分析工具 - 更新
models.py修改请求/响应模式
🚀 生产环境部署
安全考虑因素
- Docker 镜像以非 root 用户身份运行
mcpuser) - 多阶段构建最小化攻击面
- 内置的有效载荷大小限制可防止DoS攻击
扩展/缩放
- 无状态设计支持水平扩展
- 如有需要,考虑使用 Redis 进行会话管理
- 在生产环境中使用反向代理(nginx)进行部署
🤝 贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 进行你的更改
- 为新功能添加测试
- 提交拉取请求
📄 许可证
这个项目遵循MIT许可证授权——详见 许可证 详情请参阅文件。
🆘 支持
对于问题和疑问:
- 检查一下 问题 页面
- 创建一个包含详细信息的新问题
- 包含日志和复现步骤
______________________________________________________________________
注这是一个最小可行性产品(MVP)的实现。对于生产环境使用,请考虑添加:
- 认证和授权
- 速率限制
- 更复杂的代码分析
- 与外部安全扫描器的集成
- 审计日志记录和监控
