使用说明
MCP安全分析器
用于扫描GitHub存储库以查找安全问题的CLI工具。该工具提供了一个可扩展的框架,用于分析GitHub存储库,具有可定制的扫描逻辑和多种报告格式。
特性
- 🔐 安全令牌管理:GitHub个人访问令牌安全存储在用户配置中
- 🔍 存储库扫描:克隆和分析GitHub存储库
- 📊 多种报告格式:生成JSON和Markdown格式的报告
- 🔧 可扩展架构:易于添加自定义扫描逻辑
- 🚀 CLI接口:用户友好的命令行界面,带有进度指示器
- 🧹 自动清理:扫描后清理临时存储库
安装
此项目使用 uv 作为包管理器。确保你有 uv 安装:
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
克隆存储库并安装依赖项:
git clone <your-repo-url>
cd mcp-security-profiler
uv sync
MCP服务器依赖关系
扫描仪使用MCP(模型上下文协议)服务器进行高级代码分析:
- ast grep mcp:基于模式的代码搜索和分析
- x射线mcp:代码结构分析
这些MCP服务器通过以下方式自动安装和管理 uvx 运行扫描时,不需要手动安装。扫描仪将:
- 首次使用时下载并缓存MCP服务器
- 在隔离环境中运行它们
- 在后续扫描中自动重用缓存版本
备注:由于MCP服务器安装在后台,第一次扫描可能需要更长的时间。
设置
1.配置环境变量
创建一个 .env 使用API凭据在项目根目录中创建文件:
cp .env.example .env
编辑 .env 文件并添加您的值:
# OpenAI API Configuration
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
2.配置GitHub Token
在使用扫描程序之前,您需要配置您的GitHub个人访问令牌:
uv run mcp-security-profiler config --token <YOUR_GITHUB_TOKEN>
或者让它提示你:
uv run mcp-security-profiler config
创建GitHub令牌:
- 转到GitHub设置→ 开发人员设置→ 个人访问令牌→ 代币(经典)
- 点击“生成新令牌(经典)”
- 选择范围:
repo(适用于私人回购)或public_repo(仅适用于公共回购) - 生成并复制令牌
令牌安全地存储在 ~/.mcp-security-profiler/config.json 具有受限权限。
用法
扫描存储库
uv run mcp-security-profiler scan <REPOSITORY>
这 REPOSITORY 参数接受多种格式:
- 完整URL:
https://github.com/owner/repo - 简短格式:
owner/repo - Git URL:
git@github.com:owner/repo.git
选项
# Generate specific report formats
uv run mcp-security-profiler scan owner/repo --format json
uv run mcp-security-profiler scan owner/repo --format markdown
uv run mcp-security-profiler scan owner/repo --format json --format markdown
# Specify output directory
uv run mcp-security-profiler scan owner/repo --output-dir ./my-reports
示例
# Scan a public repository
uv run mcp-security-profiler scan django/django
# Scan with custom output directory
uv run mcp-security-profiler scan https://github.com/pallets/flask --output-dir ./flask-scan
# Generate only JSON report
uv run mcp-security-profiler scan owner/repo -f json
报表格式
JSON报告
JSON报告包含结构化数据,包括:
- 存储库元数据
- 扫描时间戳和ID
- 严重程度的详细调查结果
- 存储库统计信息
- 按严重程度列出的发现计数摘要
Markdown报告
Markdown报告提供了一种人类可读的格式,包括:
- 存储库信息
- 可视化摘要表
- 按严重程度分组的发现
- 对每个发现的建议
- 文件类型分布统计
自定义扫描仪
扫描仪设计为可扩展的。您可以通过修改来添加自定义扫描逻辑 Scanner 类在 mcp_security_profiler/scanner.py.
添加自定义扫描
编辑 _run_custom_scans() 添加自定义扫描逻辑的方法:
def _run_custom_scans(self) -> List[Dict[str, Any]]:
findings = []
# Add your custom scanning logic here
findings.extend(self._scan_for_secrets())
findings.extend(self._scan_dependencies())
findings.extend(self._scan_code_quality())
findings.extend(self._scan_configurations())
return findings
自定义扫描仪方法示例
def _scan_for_secrets(self) -> List[Dict[str, Any]]:
"""Scan for hardcoded secrets."""
findings = []
# Your implementation here
return findings
def _scan_dependencies(self) -> List[Dict[str, Any]]:
"""Scan for vulnerable dependencies."""
findings = []
# Your implementation here
return findings
项目结构
mcp-security-profiler/
├── main.py # Entry point
├── pyproject.toml # Project configuration
├── README.md # This file
├── PLAN.md # Project plan
└── mcp_security_profiler/
├── __init__.py # Package init
├── cli.py # CLI commands and interface
├── config.py # Configuration management
├── github_handler.py # GitHub API operations
├── scanner.py # Scanning engine
└── reporters.py # Report generation
发展
从源头运行
# Run the CLI
uv run python main.py config
uv run python main.py scan owner/repo
# Or use the installed script
uv run mcp-security-profiler --help
添加依赖关系
使用 uv add 要添加新的依赖关系,请执行以下操作:
uv add package-name
CLI命令
config
为API访问配置GitHub令牌。
uv run mcp-security-profiler config --token <TOKEN>
选项:
--token:GitHub个人访问令牌(如果未提供,则会提示)
scan
扫描GitHub存储库以查找安全问题。
uv run mcp-security-profiler scan REPOSITORY [OPTIONS]
论据:
REPOSITORY:GitHub存储库(URL或所有者/仓库格式)
选项:
-f, --format [json|markdown]:报告格式(可以指定多个,默认:两者)-o, --output-dir PATH:报告的输出目录(默认:./scan results)
安全说明
- GitHub令牌存储在
0600权限(仅限所有者读/写) - 配置目录:
~/.mcp-security-profiler/ - 默认情况下会清理临时存储库
- 所有GitHub API访问都使用经过身份验证的请求
故障排除
令牌问题
如果您遇到身份验证错误:
- 验证您的令牌是否有效
- 重新配置:
uv run mcp-security-profiler config - 确保令牌具有适当的作用域
克隆问题
如果存储库克隆失败:
- 检查您的网络连接
- 验证您是否有权访问存储库
- 对于私有仓库,确保令牌具有
repo范围
报告生成
如果未生成报告:
- 检查输出目录中的写入权限
- 验证输出路径是否有效
- 检查磁盘空间
许可证
MIT许可证
版权所有(c)2025 Abhay Bhargav,安全评论。人工智能
特此免费向任何获得副本的人授予许可 本软件和相关文档文件(“软件”),以处理 在软件中不受限制,包括但不限于权利 使用、复制、修改、合并、发布、分发、再许可和/或销售 软件的副本,并允许软件的接收者 根据以下条件提供:
上述版权声明和本许可声明应包含在所有 软件的副本或实质性部分。
软件按“原样”提供,不提供任何形式的明示或明示担保 隐含的,包括但不限于适销性保证, 适用于特定目的且不造成伤害。在任何情况下 作者或版权持有人对任何索赔、损害赔偿或其他 因以下原因产生的责任,无论是在合同、侵权或其他诉讼中, 出于或与软件、使用或其他交易有关 软件。
贡献
我们欢迎为MCP Security Profiler做出贡献!以下是您可以提供帮助的方式:
报告问题
- 错误报告:以清晰的描述、重现步骤以及预期与实际行为打开一个问题
- 功能请求:描述功能、用例和潜在的实现方法
贡献代码
- 分叉存储库
- 创建要素分支:
git checkout -b feature/your-feature-name - 进行更改:
- 编写清晰、有注释的代码
- 遵循现有代码样式
- 如果适用,添加测试
- 根据需要更新文档
- 提交您的更改:
git commit -m "Add feature: description" - 推你的叉子:
git push origin feature/your-feature-name - 打开拉取请求:提供对变更的清晰描述
开发指南
- 使用
uv用于依赖关系管理(无pip) - Python代码遵循PEP 8风格指南
- 编写描述性提交消息
- 让PR专注于单个功能或修复
- 如果添加新功能或更改用法,请更新README.md
行为准则
- 尊重他人,包容他人
- 提供建设性反馈
- 帮助他人学习和成长
作者
Abhay Bhargav
安全审查。人工智能
MCP安全分析器由Abhay Bhargav在SecurityReview开发和维护。AI,专注于MCP服务器和应用程序的AI安全分析。