一个全面的安全测试框架,用于分析模型上下文协议(MCP)服务器实现。自动在隔离的Docker容器中执行MCP服务器,并捕获和分析网络流量以检测安全漏洞,包括数据外泄、未经授权的访问、命令注入和权限提升。
MCP安全分析器帮助安全团队和开发者验证MCP服务器实现的安全状态:
sudo apt-get update
sudo apt-get install -y python3 python3-pip docker.io libpcap-dev tcpdump
sudo systemctl start docker
sudo usermod -aG docker $USER
# 如果尚未安装Homebrew,请安装
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装依赖项
brew install python@3.9
brew install libpcap
brew install --cask docker
# 启动Docker Desktop
open -a Docker
# 安装WSL2和Ubuntu
wsl --install
# 在WSL2内部,按照Ubuntu说明进行操作
# 克隆仓库
git clone https://github.com/yair4data/mcp-security-analyzer.git
cd mcp-security-analyzer
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # 在Windows上:venv\Scripts\activate
# 安装依赖项
pip install -e .
# 检查Docker是否运行
docker version
# 验证分析器安装
mcp-security-analyzer --version
对于AI驱动的威胁分析:
export CLAUDE_API_KEY="your-anthropic-api-key"
# 或者添加到~/.bashrc或~/.zshrc以持久化
获取您的API密钥:https://console.anthropic.com/
# 1. 复制示例配置
cp config/simple-usecases.yaml config/my-config.yaml
# 2. 运行安全检查
mcp-security-analyzer --config config/my-config.yaml inspect \
"npx -y @modelcontextprotocol/server-filesystem /tmp" \
--use-case basic_security_scan
# 3. 查看报告
open ./mcp_analysis/security_report.html
使用预定义的安全场景测试任何MCP服务器:
# 运行特定的安全测试
mcp-security-analyzer inspect \
"npx -y @modelcontextprotocol/server-filesystem /tmp" \
--use-case sensitive_file_access
# 运行所有可用的安全测试
m
cp-security-analyzer inspect \
"python my_mcp_server.py"
# 自定义输出目录
mcp-security-analyzer inspect \
"node mcp-server.js" \
--use-case data_exfiltration \
--output ./security_reports
export CLAUDE_API_KEY="your-key"
mcp-security-analyzer inspect \
"npx -y @modelcontextprotocol/server-brave-search" \
--use-case basic_security_scan
mcp-security-analyzer inspect \
"python server.py" \
--use-case command_injection \
--no-ai
该工具包含5个预配置的安全测试场景:
| 用例 | 描述 | 测试动作 | 持续时间 |
|---|---|---|---|
basic_security_scan | 服务器功能概述 | 3 | 约2分钟 |
sensitive_file_access | 文件权限测试 | 3 | 约3分钟 |
data_exfiltration | 数据盗窃场景 | 2 | 约3分钟 |
command_injection | 注入漏洞测试 | 2 | 约2分钟 |
privilege_escalation | 权限提升尝试 | 2 | 约2分钟 |
# 测试文件系统服务器
mcp-security-analyzer inspect \
"npx -y @modelcontextprotocol/server-filesystem /tmp" \
--use-case sensitive_file_access
# 测试GitHub服务器
mcp-security-analyzer inspect \
"npx -y @modelcontextprotocol/server-github" \
--use-case basic_security_scan
# 测试Brave搜索服务器
mcp-security-analyzer inspect \
"npx -y @modelcontextprotocol/server-brave-search" \
--use-case data_exfiltration
mcp-security-analyzer inspect \
"python /path/to/my_mcp_server.py" \
--use-case basic_security_scan \
--output ./my_server_analysis
运行分析后,您会找到:
mcp_analysis/
├── security_report.html # 交互式HTML报告(在浏览器中打开)
├── security_report.json # 机器可读的JSON数据
├── findings.csv # 表格形式的安全发现
└── mcp_traffic.pcap # 网络流量捕获(用于深入分析)
HTML报告包括:
创建config/my-config.yaml:
# 测试场景(测试场景)
use_cases:
- name: 'basic_security_scan'
description: '基本安全检查'
tools: [] # 不需要工具定义!
test_actions:
- method: 'tools/list'
timeout: 30
- method: 'resources/list'
timeout: 30
expected_threats:
- '意外的工具暴露'
duration: 120
# 可选:Claude AI设置
claude:
api_key: null # 通过CLAUDE_API_KEY环境变量设置
# 可选:网络监控
network:
interface: 'any'
max_packets: 50000
# 可选:Docker设置
docker:
memory_limit: '1024m'
cpu_limit: '1.0'
向您的配置中添加自定义安全测试:
use_cases:
- name: 'my_custom_test'
description: '自定义安全测试场景'
tools: []
test_actions:
# 列出可用工具
- method: 'tools/list'
timeout: 30
# 调用特定工具
- method: 'tools/call'
tool_name: 'read_file'
arguments:
path: '/etc/passwd'
timeout: 30
# 列出资源
- method: 'resources/list'
timeout: 30
expected_threats:
- '未经授权的文件访问'
- '敏感数据暴露'
duration: 180
tools/list - 列出所有可用工具tools/call - 使用参数执行特定工具resources/list - 列出可用资源resources/read - 读取特定资源prompts/list - 列出可用提示prompts/get - 获取特定提示模板┌─────────────────────────────────────────────────────────────┐
│ MCP安全分析器CLI │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ SimpleMCPOrchestrator │
│ • 协调安全测试工作流 │
│ • 管理Docker生命周期 │
│ • 同步数据包捕获与执行 │
└──────────┬────────────────────┬──────────────────┬──────────┘
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ SimpleMCPInspector│ │ PacketCapture │ │ ClaudeAnalyzer │
│ • 运行MCP │ │ • 网络 │ │ • AI驱动的 │
│ 检查器 │ │ 监控 │ │ 威胁评估 │
│ • 执行测试 │ │ • 深度包检查 │ │ • 缓解建议 │
│ • 解析结果 │ │ │ │ │
└──────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Docker容器 │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ MCP检查器(官方工具) │ │
│ │ • 符合协议的MCP客户端 │ │
│ │ • 执行用户的MCP服务器 │ │
│ │ • 捕获所有MCP交互 │ │
│ └────────────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 用户的MCP服务器 │ │
│ │ • 文件系统服务器、API客户端、数据库等 │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 安全报告器 │
│ • 生成HTML/JSON/CSV报告 │
│ • 严重性分类 │
│ • 缓解建议 │
└─────────────────────────────────────────────────────────────┘
# 运行所有测试
pytest
# 运行覆盖率测试
pytest --cov=src --cov-report=html
# 运行特定测试模块
pytest tests/core/inspector/test_inspector_config.py -v
# 运行集成测试(需要Docker)
pytest -m integration
# 格式化代码
black src tests
# 排序导入
isort src tests
# 代码检查
flake8 src tests
# 类型检查
mypy src
错误:无法连接到Docker守护进程
解决方案:启动Docker并使用`docker version`验证
错误:捕获数据包时权限被拒绝
解决方案:使用sudo运行或添加用户到docker组
错误:配置中未找到用例'my-test'
解决方案:检查配置文件是否定义了该用例,或使用示例配置:
cp config/simple-usecases.yaml config/my-config.yaml
错误:AI分析失败:API密钥未配置
解决方案:设置环境变量:
export CLAUDE_API_KEY="your-key"
或者禁用AI:--no-ai
错误:容器中未找到npx命令
解决方案:确保Docker镜像包含Node.js和npm
欢迎贡献!请:
git checkout -b feature/amazing-feature)pytest)black,isort,flake8,mypy)git commit -m '添加惊人的功能')git push origin feature/amazing-feature)本项目根据MIT许可发布 - 详情见LICENSE文件。
此工具仅用于防御性安全测试。请负责任地使用,并且仅在您有权测试的系统上使用。私下向项目维护人员报告安全漏洞。
为安全社区制作 ❤️