cisco-ai-defense/mcp-scanner
Scan MCP servers for potential threats & security findings.
什么是 MCP Scanner?
MCP Scanner 是一款基于 Python 的安全工具,用于检查 模型上下文协议(MCP)服务器及其暴露的资源——工具、提示词、资源,甚至服务器代码本身。它结合了三个分析引擎:
- Cisco AI Defense inspect API – 一种专有服务,可以评估 MCP 负载。
- YARA – 用于已知恶意代码的经典模式匹配规则。
- 基于 LLM 的分析 – 大型语言模型提示,用于推理提示词、工具和代码的安全性。
结果是详细的安全报告,可在本地、CI/CD 管道或通过 REST API 使用。
主要功能(如 README 中所述)
| 功能 | 作用 |
|---|---|
| 多种操作模式 | 作为独立 CLI(mcp-scanner)运行,或将扫描器作为 REST API(mcp-scanner-api)暴露。 |
| 三引擎分析 | 使用 YARA、Cisco AI Defense API 和/或 LLM——可组合或单独使用。 |
| 易受攻击包扫描 | 集成 pip-audit 以标记 Python 依赖项中的已知 CVE。 |
| 就绪性扫描 | 针对生产级问题(如缺少超时或错误处理)进行静态检查。 |
| 行为代码扫描 | 在 Docker 沙箱中执行或静态分析 MCP 服务器的源代码,以发现恶意行为。 |
| VirusTotal 二进制扫描 | 在 VirusTotal 上查找捆绑文件(图像、PDF、可执行文件、归档文件)的 SHA-256 哈希。 |
| PyPI 和 npm 供应链扫描 | 下载包,在隔离的 Docker 容器中运行,并分析其行为。 |
| 静态/离线扫描 | 接受预生成的 MCP JSON 文件——非常适合 CI/CD 或气隙环境。 |
| 细粒度认证 | 支持 OAuth、Bearer 令牌、自定义 HTTP 头,以及针对 Cisco AI Defense、LLM 提供商和 VirusTotal 的显式 API 密钥配置。 |
| MCP 2.0 协议支持 | 协商即将推出的 2026-07-28 协议版本,自动回退到旧版握手。 |
| 自定义 YARA 规则 | 用户可以添加自己的规则集以检测组织特定的模式。 |
| 全面报告 | 多种输出格式(摘要、表格、原始 JSON、按工具)以及 --detailed 标志以获取更深入的见解。 |
如何运行
- 先决条件 – Python 3.11+、
uv包管理器,以及可选的 API 密钥(Cisco AI Defense、LLM 提供商、VirusTotal)。MCP Python SDK(mcp>=2.0.0)已捆绑。 - 安装 – 作为全局工具:
或从源代码使用uv tool install --python 3.13 cisco-ai-mcp-scanneruv sync。 - 配置 – 为要使用的服务导出环境变量,例如:
export MCP_SCANNER_API_KEY=… # Cisco AI Defense export MCP_SCANNER_LLM_API_KEY=… # OpenAI / Bedrock 等 export VIRUSTOTAL_API_KEY=… # VirusTotal - 运行快速扫描 – 仅使用 YARA 扫描远程服务器的示例 CLI 命令:
或启动 REST API:mcp-scanner --server-url https://mcp.example.com/mcp \ --analyzers yara --format summarymcp-scanner-api --host 0.0.0.0 --port 8080
典型用例
| 场景 | MCP Scanner 为何有帮助 |
|---|---|
| 内部 LLM 服务的安全审计 | 检查 MCP 协议实现以及提示词/工具的内容,以发现隐藏的恶意行为。 |
| 第三方包的供应链审查 | pypi-scan / npm-scan 下载包,将其沙箱化,并运行行为分析和 YARA 检查。 |
| CI/CD 门禁 | 在代码提升之前,使用 static 子命令对生成的 MCP JSON 文件强制执行安全性。 |
| 事件响应 | 快速对可疑 MCP 服务器捆绑的任何二进制文件运行 virustotal。 |
| 合规性 | vulnerable-package 标记 Python 依赖项中的已知 CVE,补充 LLM/YARA 发现。 |
限制与注意事项(来自 README)
- LLM 分析器需要付费 API 密钥(OpenAI、Bedrock、Azure 等)——该工具仅向模型发送提示;它不在本地托管任何模型。
- VirusTotal 查找需要 API 密钥;上传文件是可选的,默认禁用以保护隐私。
- PyPI/npm 包的行为分析默认在 Docker 中运行;禁用 Docker(
--no-docker)会在进程中运行代码,这可能隔离性较差。 - 扫描基于 stdio 的 MCP 服务器可能需要更长的超时时间(
MCP_SCANNER_STDIO_TIMEOUT),如果服务器执行繁重的启动工作。 - 该工具专注于安全发现——它不会尝试自动修复或补救问题。
谁可能觉得这有用?
- 安全工程师保护暴露 MCP 端点的内部 LLM 支持服务。
- DevOps / CI 团队希望为 MCP 服务器使用的 Python 或 JavaScript 包的供应链安全提供自动化门禁。
- 基于 MCP 的应用程序开发人员需要验证其工具、提示词和资源不会无意中成为恶意。
- 红队 / 审计顾问寻找一种快速方法,将 YARA 签名、LLM 推理和 Cisco 的 AI-Defense API 结合到目标 MCP 部署中。
结论
cisco-ai-mcp-scanner 是一款功能齐全、Python 原生的安全扫描器,专为新兴的 模型上下文协议 生态系统量身定制。通过将 YARA、商业 AI 防御服务和 LLM 推理结合在一起,它为从业者提供了一个单一的命令行(或 API)界面,用于评估 MCP 服务器、其代码及其依赖包的安全性。
相关
- 项目
- 项目
- 项目
- 项目