Token导航 LogoToken导航TokenDH.com
MCP Scanner logo
安全风控stdio官方级别未说明来源级核验

MCP Scanner

MCP Server

一款针对Model Context Protocol (MCP)服务器的综合性安全漏洞扫描工具,用于检测和分析潜在的安全漏洞,如恶意提示注入、工具描述中毒和名称冲突等。

工具数

0

提示词数

0

GitHub Stars

4

资源数

0
安全漏洞检测PythonClaudeClaude DesktopClaude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

eSentire-Labs

提供方

eSentire-Labs

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

eSully MCP扫描仪

![Python](https://python.org) ![Security](https://github.com/your-repo/mcp-scanner)

用于模型上下文协议(MCP)服务器的全面安全漏洞扫描程序

目录

概述

eSull MCP Scanner是一种专门的安全工具,旨在分析和评估模型上下文协议(MCP)服务器实现。随着MCP不断发展,并在各种平台(包括Slack、Box和AWS S3)上实现强大的代理AI功能,确保其安全性变得越来越重要。该扫描程序通过检测和分析恶意提示注入、工具描述中毒和名称冲突等潜在漏洞,解决了MCP生态系统中新出现的安全挑战。

我们的扫描程序直接连接到MCP服务器,并通过检查服务器功能、元数据和实现模式来执行全面的安全评估。它提供了详细的报告,以帮助维护MCP实现的安全性和完整性。

特性

🔍 证券分析

  • \[\]身份验证机制检测与分析
  • \[\]HTTPS/TLS合规性验证
  • \[\]服务器和功能名称冲突检测
  • \[\]跨服务器特征相似性检测
  • \[\]服务器内功能参考分析
  • \[\]跨源违规检测
  • \[\]中毒检测功能描述
  • \[\]变量中毒分析
  • \[\]快速注射漏洞评估
  • \[\]Rug pull尝试检测
  • \[\]安装程序欺骗标识

📊 报告

  • \[\]用于程序分析的JSON输出
  • \[\]具有交互式元素的专业HTML报告
  • \[\]执行摘要的PDF报告
  • \[\]颜色编码的安全状态指示器
  • \[\]详细的漏洞解释

🛠️ 灵活性

  • \[\]支持多个MCP服务器配置
  • \[\]可配置的扫描参数

安装

先决条件

  • Python 3.8或更高版本
  • Git
  • pip(Python包安装程序)
  • OpenAI API密钥:基于LLM的分析功能(描述中毒检测)所需
  • 码头工人:如果扫描基于Docker的MCP服务器,则必须运行
  • 本地MCP服务器:必须正确配置并可在其环境中运行

环境设置

  1. OpenAI API密钥:将您的OpenAI API密钥设置为环境变量:
   export OPENAI_API_KEY="your-API-key-here"

如果没有此密钥,基于LLM的安全分析功能将被禁用。

  1. Docker要求:如果扫描基于Docker的MCP服务器,请确保Docker正在运行:
   # Check if Docker is running
   docker --version
   docker ps
  1. 本地服务器要求:对于本地MCP服务器:

- 每台服务器都必须处于适当的环境中 - 必须安装并配置所有依赖项 - 在扫描之前,服务器必须能够无错误地运行 - 在运行扫描程序之前,单独测试服务器

安装步骤

# Clone the repository
git clone https://github.com/esentire/mcp-scanner.git
cd mcp-scanner

# Create and activate a virtual environment (recommended)
python -m venv venv
source venv/bin/activate  # On Windows, use: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

快速开始

现场演示

![MCP Scanner Demo](https://github.com/user-attachments/assets/ab586fe7-8546-40dc-ab81-2069419a1d2c)

*以上演示显示了从开始到结束的完整扫描过程*

常见用法示例:

# Scan local MCP server (The scanner reads the Claude desktop and Cursor MCP files by default and asks if you want to add more files)
python main.py 

# Pass external config file
python main.py --config ABSOLUTE PATH IS REQUIRED

# Generate PDF report
python main.py --pdf

# Specify custom output location
python main.py --output ./reports/scan_results.json

用法

基本命令选项

python main.py [OPTIONS]

Options:
  --config FILE      External file path for scan 
  --output FILE      Output file path for scan results (default: ./scan_results.json)
  --pdf              Generate PDF report

配置文件格式

扫描仪接受指定扫描设置和MCP文件位置的JSON配置文件。格式如下:

{
  "mcpServers": {
    "time": {
        "command": "uvx",
        "args": [
          "mcp-server-time",
          "--local-timezone=America/New_York"
        ]
      },
      "mcp-server-test": {
            "command": "/Users/Parya.Abadeh/.local/bin/uv", 
            "args": [
                "--directory",
                "path to mcp-server-test",
                "run",
                "main.py"
            ]
        },
        "postgres": {
        "command": "npx",
        "args": [
            "-y",
            "@modelcontextprotocol/server-postgres",
            "postgresql://localhost/mydb"
        ]
    }
  }
}

扫描仪设置

扫描仪可以配置以下设置:

MCP文件

  • claude_desktop:克劳德桌面MCP配置的路径(默认:自动检测)
  • cursor:光标MCP配置路径(默认:自动检测)
  • custom_file:要扫描的附加MCP文件

报表配置

  • output_dir:用于存储扫描结果的目录(默认:./scan_results)
  • pdf:PDF报告生成设置

- enabled:启用/禁用PDF报告生成

安全检查

身份验证分析

扫描程序分析MCP服务器身份验证机制,以识别安全漏洞:

  • 身份验证检测:标识服务器是否实现身份验证(API密钥、OAuth、基于浏览器的身份验证)
  • 身份验证类型分类:对身份验证类型进行分类(no_auth、api_key、oauth、browser_interactive等)
  • 安全风险评估:将未进行身份验证的服务器标记为高风险
  • OAuth端点发现:自动检测基于URL的服务器的OAuth端点
  • 浏览器身份验证检测:标识需要基于浏览器的身份验证流的服务器

检测到的安全问题:

  • 没有任何身份验证机制的服务器
  • 访问控制薄弱或缺失
  • 身份验证流配置不当

HTTPS合规性

验证MCP服务器是否使用安全通信协议:

  • URL分析:检查所有服务器URL和端点的HTTPS使用情况
  • 论据检查:检查HTTP URL的命令行参数
  • 配置审查:标识服务器设置中的不安全配置
  • 加密验证:确保敏感数据传输加密

检测到的安全问题:

  • HTTP URL而不是HTTPS(未加密通信)
  • 配置中的混合协议使用
  • 通过不安全的渠道暴露敏感数据

碰撞检测

识别可能导致混淆或安全问题的命名冲突和功能关系:

  • 特征名称分析:检测服务器中重复的工具、提示和资源名称
  • 服务器名称冲突:标识名称冲突或混淆的服务器
  • 跨服务器冲突:在不同服务器上查找相似的功能名称(相似性阈值:0.9)
  • 流行名称冲突:检测与已知MCP服务器名称的冲突
  • 服务器内部引用:分析功能如何在同一服务器内相互引用
  • 参考链检测:识别潜在的安全问题,如循环依赖关系
  • 上下文提取:为检测到的特征引用提供周围上下文
  • 命名变化处理:考虑不同的命名样式(下划线/连字符)

检测到的安全问题:

  • 可能引起混淆的相同或高度相似的功能名称
  • 通过相似命名进行服务器模拟
  • 命名空间污染攻击
  • 循环特征依赖关系
  • 隐藏特征链
  • 通过间接引用进行未经授权的功能访问
  • 跨服务器功能与详细上下文冲突

漏洞检测

特征描述中毒

使用人工智能分析检测工具、提示和资源描述中的恶意或误导性内容:

  • 基于LLM的检测:使用OpenAI GPT模型分析描述内容以检测恶意意图
  • 模式识别:识别功能描述中的可疑模式
  • 上下文分析:评估欺骗性或有害内容的描述
  • 多特征扫描:全面分析工具、提示和资源

检测到的安全问题:

  • 旨在欺骗用户的误导性功能描述
  • 看似无害的工具中隐藏的恶意功能
  • 通过特征描述进行社会工程尝试
  • 旨在绕过安全控制的欺骗性内容

可变中毒

分析工具中的变量名称和描述,并提示安全风险:

  • 危险变量名称:标识可能有害的变量名(例如,系统路径、凭据)
  • 变量描述分析:使用LLM分析检测变量描述中的恶意内容
  • 输入参数安全:评估工具和提示输入参数的安全风险
  • 数据过滤向量:标识可用于数据提取的变量

检测到的安全问题:

  • 具有危险或可疑名称的变量
  • 包含恶意指令的变量描述
  • 为未经授权的访问而设计的输入参数
  • 潜在的数据泄露机制

快速注射

识别MCP提示中提示注入攻击的漏洞:

  • 注射模式检测:扫描常见的快速注射技术
  • 动态提示分析:使用各种注射有效载荷进行测试提示
  • 上下文操纵:标识易受上下文操纵的提示
  • 安全边界测试:评估即时安全控制

检测到的安全问题:

  • 易受注射攻击的提示
  • 提示处理中的输入验证较弱
  • 上下文操纵漏洞
  • 通过迅速操纵绕过安全控制

地毯拉扯尝试

检测在用户同意后更改其描述或行为的工具/资源/提示:

  • 描述一致性监控:跟踪同意后工具/资源/提示描述的变化
  • 行为漂移检测:确定同意的功能和实际行为之间的差异
  • 同意利用分析:检测通过改变目的滥用用户同意的工具
  • 信任违规指标:标记通过批准后更改滥用用户同意的服务器

检测到的安全问题:

  • 在用户同意使用后修改其描述的工具
  • 改变最初约定行为的资源
  • 在获得同意后改变其功能的提示
  • 通过更改工具/资源/提示定义来利用用户同意的服务器

安装程序欺骗

识别使用非官方或潜在恶意安装方法的服务器:

  • 官方来源验证:将安装命令与已知的官方来源进行比较
  • 非官方安装程序检测:标识非标准安装方法
  • 包源分析:评估包来源的合法性
  • 供应链安全:评估安装安全风险

检测到的安全问题:

  • 使用非官方或未经证实的安装来源
  • 可能受损的包存储库
  • 绕过安全控制的安装方法
  • 通过恶意安装程序的供应链攻击媒介

跨来源违规

扫描程序检测MCP服务器在其工具、提示或资源描述中是否不恰当地引用了其他MCP服务器名称。此安全检查有助于识别:

  • 冒充企图:声称“像github服务器”或类似服务器工作的服务器
  • 误导性描述:参考其他流行MCP服务器功能的工具
  • 供应链混乱:可能试图伪装成合法替代品的服务器

检测特点:

  • 智能令牌分析:逐字分析描述以识别服务器名称引用
  • 消除重复单词:在分析之前从描述中删除重复的单词,以防止同一引用出现多次违规
  • 归一化:处理下划线、连字符和标点符号等变体(例如,“github server”、“github服务器”、“github”)
  • 热门服务器数据库:维护一份众所周知的MCP服务器列表以供检查
  • 交叉配置检测:标识对配置中其他服务器的引用

违规示例:

  • 工具描述:“此工具的工作原理类似于github服务器来获取文件”→ 标记“github”
  • 资源描述:“类似于文件系统访问,但随着时间的推移”→ 标记“文件系统”和“时间”
  • 提示描述:“像postgres服务器一样查询数据”→ 旗帜“postgres”

扫描仪将报告: Cross-origin violation in tool 'example_tool': References 'github'

代码结构

MCP eSull扫描仪被组织成模块化组件,以实现可维护性和可扩展性:

MCP_eSentire_Scanner/
├── main.py                          # Main entry point and CLI interface
├── server_scanner.py                # Core MCP server scanning logic
├── config_manager.py                # Configuration file management
├── requirements.txt                 # Python dependencies
├── README.md                        # Documentation
│
├── analyzer_helpers/                # Security analysis modules
│   ├── auth_analyzer.py            # Authentication mechanism detection
│   ├── cross_origin_analyzer.py    # Cross-origin violations detection
│   ├── feature_name_collision_analyzer.py  # Name collision detection
│   ├── server_name_collision_analyzer.py   # Server name conflict analysis
│   ├── feature_description_poisoning_analyzer.py  # Malicious description detection
│   ├── feature_variables_analyzer.py       # Variable poisoning analysis
│   ├── prompt_injection_analyzer.py        # Prompt injection detection
│   ├── rug_pull_analyzer.py               # Rug pull attempt detection
│   ├── installer_spoofing_analyzer.py     # Installation source verification
│   ├── html_report_generator.py           # HTML report generation
│   ├── pdf_report_generator.py            # PDF report generation
│   └── nova_rules/                        # LLM analysis rule definitions
│       ├── hidden_instruction_rules.nov   # Rules for hidden instruction detection
│       └── variable_poisoning_rules.nov   # Rules for variable poisoning detection
│
└── figs/                            # Images and assets
    ├── demo.gif                     # Demo animation
    ├── eSentire Labs - Logo (FULL).png  # Company logo (PNG)
    └── eSentire Labs - Logo (FULL).svg  # Company logo (SVG)

核心组件

main.py

  • 目的:应用程序入口点和命令行界面
  • 职责:

- 参数解析(--config, --output, --pdf) - 配置加载和管理 - 服务器发现和扫描协调 - 报告生成编排 - 其他配置文件的用户交互

server_scanner.py

  • 目的:核心MCP服务器分析引擎
  • 关键功能:

- scan_server():具有超时处理的主服务器扫描功能 - scan_server_capabilities():提取工具、提示和资源 - parse_mcp_config():解析MCP配置文件

  • 整合:协调所有安全分析器并汇总结果

config_manager.py

  • 目的:配置文件发现和管理
  • 特性:

- 自动检测Claude桌面和光标配置 - 多平台路径分辨率(macOS、Windows、Linux) - 配置合并和验证 - 交互式配置文件添加

安全分析器模块

身份验证和网络安全

  • auth_analyzer.py:检测身份验证机制(API密钥、OAuth、浏览器身份验证)
  • cross_origin_analyzer.py:在描述中标识不适当的服务器引用

内容分析

  • feature_description_poisoning_analyzer.py:使用LLM分析检测恶意描述
  • feature_variables_analyzer.py:分析变量名称和安全风险描述
  • prompt_injection_analyzer.py:测试注射漏洞提示

行为分析

  • rug_pull_analyzer.py:检测通过更改审批后内容违反用户同意的工具/资源/提示
  • installer_spoofing_analyzer.py:验证安装源的合法性

碰撞检测

  • feature_name_collision_analyzer.py:标识冲突的要素名称
  • server_name_collision_analyzer.py:检测服务器名称冲突

报告生成

html_report_generator.py

  • 带有安全状态指示器的交互式HTML报告
  • 颜色编码的威胁级别和详细解释
  • 可折叠部分的响应式设计

pdf_report_generator.py

  • 适用于执行摘要的专业PDF报告
  • 通过徽标集成提供企业品牌支持
  • 结构化安全评估文件

基于规则的分析

nova_rules/

  • hidden_instruction_rules.nov:检测隐藏恶意指令的模式
  • variable_poisoning_rules.nov:识别危险变量模式的规则
  • 格式:用于基于LLM的分析的自定义规则定义语言

目录标签

目录标签

安全漏洞检测PythonClaudeClaude Desktop安全扫描本地部署MCP协议AI安全网络安全

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP