🔍 MCP异常扫描仪
一种使用混合人工智能检测MCP服务器中恶意工具的强大安全工具
🚨 背景
- 在分析现有MCP扫描工具的过程中,我发现了导致检测恶意工具失败的关键局限性。这些工具存在以下问题:
1.️⃣ 忽略语义不一致
- 现有的扫描仪使用LLM单独分析每个工具描述,而不检查工具名称和描述之间的不一致。
- 例如,名为“get_cve”的工具应该描述获取cve数据,而不是执行无关的任务。这种语义对齐很少得到验证。
2.️⃣ 缺乏多服务器上下文感知
- 恶意工具经常利用服务器间的信任假设,在良性工具中伪装自己,或模仿其他服务器的工具。当前的工具不能跨服务器进行比较。
✅ 我们的解决方案:
- 为了克服这些局限性,我构建了MCP Outlier Scanner,这是一个全面且可扩展的工具,旨在检测具有更高鲁棒性的恶意MCP工具。
✨ 特性
- 一致性检查
- 比较工具名称、描述和关联的服务器上下文以进行语义对齐。
- 标识其行为或目的偏离同一服务器内预期模式的工具。
- 跨服务器分析
- 检测似乎被恶意放置在其他服务器中以干扰或操纵其行为的工具。
- 双重检测方法
- 基于LLM的推理:利用大型语言模型来推理潜在的异常。
- 基于嵌入的相似性:使用工具描述的向量表示来检测语义异常值,降低基于提示的规避的易感性。
🚀 安装
# Clone the repository
git clone https://github.com/YusukeJustinNakajima/mcp-outlier-scanner.git
cd mcp-outlier-scanner
# Install dependencies
pip install -r requirements.txt📋 需求
- Python 3.8+
- 克劳德桌面 配置MCP服务器
- 可选: 用于LLM增强检测的OpenAI API密钥
📖 用法
🎯 基本用法
# Scan with default methods (consistency + cross-server)
python mcp_scanner.py
# Enable LLM-enhanced detection
python mcp_scanner.py --use-ai
# Use specific detection method
python mcp_scanner.py --methods consistency🚀 高级用法
# Set API key via environment variable
export OPENAI_API_KEY=your-api-key
python mcp_scanner.py --use-ai
# Save results to JSON file
python mcp_scanner.py --output json --save results.json
# Debug mode with detailed output
python mcp_scanner.py --debug --use-ai
# Custom timeout for slow servers
python mcp_scanner.py --timeout 60⚙️ 命令行选项
| 选项 | 描述 |
|---|---|
--config PATH | Claude Desktop配置文件的路径 |
--timeout SEC | 服务器扫描超时(默认值:30) |
--use-ai | 启用AI/LLM以增强检测 |
--api-key KEY | 用于LLM检测的OpenAI API密钥 |
--output {text,json} | 输出格式(默认:文本) |
--save FILE | 将报告保存到指定文件 |
--debug | 启用调试输出 |
--methods METHOD | 检测方法:一致性、跨服务器、多、人工智能 |
📊 输出格式
📝 文本输出(默认)
[DEVIATION] suspicious_tool (from mcp-server)
Confidence: 85.00%
Reason:
📊 Detection Scores - Embedding: 0.60, LLM: 0.85 (Max: 0.85)
🔍 Embedding Analysis:
• Tool description has weak semantic alignment with its context
🤖 LLM Analysis:
• Poor alignment with server purpose (score: 0.25)
• Much better fit with 'other-server' (LLM: 0.90 vs 0.25, diff: +0.65)
⚠️ HIGH RISK: Review this tool immediately
Recommendation: Investigate why this tool exists in the mcp-server server📋 JSON输出
{
"scan_timestamp": "2024-01-20T10:30:00",
"summary": {
"total_servers": 5,
"successful_scans": 5,
"total_tools": 47,
"deviations_found": 2
},
"deviations": [...]
}🏗️ 建筑
mcp-outlier-scanner/
├── mcp_scanner.py # Main entry point
├── models.py # Data models
├── config_loader.py # Configuration handling
├── server_scanner.py # MCP server communication
├── detector_manager.py # Detection orchestration
├── report_generator.py # Output formatting
├── utils.py # Utilities
└── detectors/
├── base_detector.py # Base detector class
├── consistency_detector.py # Consistency checking
└── crossserver_detector.py # Cross-server analysis🚀 未来工作
📱 多客户端支持
- 目前,MCP Outlier Scanner是专门为Claude Desktop的配置格式设计的。然而,随着MCP生态系统的发展,我计划将支持扩展到其他MCP客户:
计划客户支持
- Cursor:添加对Cursor的MCP配置格式和安装路径的支持
- VS Code MCP扩展:与VS Code的MCP扩展配置集成
- 其他MCP兼容客户端:随着新客户端采用MCP标准,我们将添加对其配置格式的支持
📄 许可证
MIT许可证 -看 许可证 详细信息文件
🤝 贡献
欢迎投稿!请随时提交拉取请求。
______________________________________________________________________
备注:此工具专为防御安全目的而设计。在扫描MCP服务器之前,始终确保您有权限。
