MCP安全扫描工具

MCP-Scan是一款用于本地和远程MCP服务器的安全扫描工具,能够自动发现MCP配置并检测安全漏洞,如提示注入攻击、工具中毒攻击和有毒流程。

  • by guanqun-yang
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 guanqun-yang/mcp-scan

使用说明

mcp-scan

MCP security scanning tool for local and remote MCP Servers

亮点

  • 自动发现MCP配置
  • 检测MCP安全漏洞:
    • 快速注射攻击
    • 工具中毒攻击
    • 有毒物质流动
  • 扫描本地STDIO MCP服务器
  • 扫描远程HTTP/SSE MCP服务器

快速开始

MCP服务器扫描

要运行MCP扫描:

uvx mcp-scan@latest

这将扫描您安装的服务器,查找工具、提示和资源中的安全漏洞。它将自动发现各种MCP配置,包括Claude、Cursor和Windsurf。

要扫描特定的MCP服务器配置,例如VS Code MCP配置,您可以运行:

mcp-scan ~/.vscode/mcp.json

示例运行

MCP安全扫描功能

MCP Scan是一个安全扫描工具,可以静态和动态扫描和监视您的MCP连接。它检查它们是否存在常见的安全漏洞,如 提示注入, 工具中毒 和 有毒流体请查阅我们的详细信息 文档 了解更多信息。

MCp Scan有两种主要模式,可以联合使用或单独使用:

  1. mcp-scan scan 静态扫描所有已安装的服务器,查找恶意工具描述和工具(例如。 工具中毒攻击、跨来源升级、地毯式袭击、有毒物质流动)。

    快速入门→.

  2. mcp-scan proxy 持续实时监控您的MCP连接,并可以限制代理系统在MCP上可以做什么(工具调用检查、数据流约束、PII检测、间接提示注入等)。

    快速入门→.





在代理模式下进行mcp扫描。

特性

  • 扫描Claude、Cursor、Windsurf和其他基于文件的MCP客户端配置
  • 扫描工具中的即时注入攻击 工具中毒攻击 使用 护栏
  • 执行护栏政策 MCP工具调用和响应,包括PII检测、秘密检测、工具限制和完全自定义的防护策略。
  • 通过以下方式实时审计和记录MCP流量 mcp-scan proxy
  • 检测跨源升级攻击(例如。 工具阴影),并检测和预防 MCP地毯拉扯攻击,即mcp扫描通过哈希检测mcp工具的更改

服务器代理

使用 mcp-scan proxy,您可以监视、记录和保护计算机上的所有MCP流量。这允许您检查代理和工具的运行时行为,并防止来自不可信来源(如网站或电子邮件)的攻击,这些攻击可能会试图利用您的代理。mcp扫描代理是一个在后台运行的动态安全层,持续监控您的mcp流量。

示例运行

加强护栏

您还可以添加防护规则,以限制和验证通过代理的工具使用顺序。

为此,创建一个 ~/.mcp-scan/guardrails_config.yml 内容如下:

<client-name>:  # your client's shorthand (e.g., cursor, claude, windsurf)
  <server-name>:  # your server's name according to the mcp config (e.g., whatsapp-mcp)
    guardrails:
      secrets: block # block calls/results with secrets

      custom_guardrails:
        - name: "Filter tool results with 'error'"
          id: "error_filter_guardrail"
          action: block # or just 'log'
          content: |
            raise "An error was found." if:
              (msg: ToolOutput)
              "error" in msg.content

从那时起,所有呼叫都通过 mcp-scan proxy 将根据您为当前客户端/服务器配置的防护规则进行检查。

自定义护栏是使用不变护栏实现的。为了深入了解这些规则, 看看这个操场环境 和那个 官方文档.

运作原理

扫描

MCP扫描 scan 搜索配置文件以查找MCP服务器配置。它连接到这些服务器并检索工具描述。

然后,它扫描工具描述,既通过本地检查,也通过API调用Invariant Guardrailing。为此,工具名称和描述与invariantlabs.ai共享。通过使用MCP Scan,您同意invariantlabs.ai 使用条款 和 隐私政策.

Invariant Labs正在为安全研究目的收集数据(仅关于工具描述及其随时间的变化,而不是您的用户数据)。如果您不想共享工具,请不要使用MCP扫描。此外,还为您的扫描分配了一个唯一、持久和匿名的ID进行分析。您可以通过以下方式选择不发送此信息 --opt-out 旗帜。

MCP扫描不会存储或记录任何使用数据,即MCP工具调用的内容和结果。

代理

用于运行时监控,使用 mcp-scan proxy,MCP Scan可以用作代理服务器。这使您能够实时监控和保护整个系统的MCP流量。为此,mcp扫描会临时注入一个本地 不变网关 MCP服务器配置拦截和分析流量。之后 proxy 命令退出后,Gateway将从配置中删除。

您还可以为代理配置防护规则,以动态执行安全策略。这包括PII检测、秘密检测、工具限制和自定义防护策略。护栏和代理完全在本地使用 护栏 并且不需要任何外部API调用。

CLI参数

MCP扫描提供以下命令:

mcp-scan - Security scanner for Model Context Protocol servers and tools

常用选项

这些选项适用于所有命令:

--storage-file FILE    Path to store scan results and whitelist information (default: ~/.mcp-scan)
--base-url URL         Base URL for the verification server
--verbose              Enable detailed logging output
--print-errors         Show error details and tracebacks
--full-toxic-flows     Show all tools that could take part in toxic flow. By default only the top 3 are shown.
--json                 Output results in JSON format instead of rich text

命令

扫描(默认)

扫描MCP配置中的工具、提示和资源中的安全漏洞。

mcp-scan [CONFIG_FILE...]

选项:

--checks-per-server NUM       Number of checks to perform on each server (default: 1)
--server-timeout SECONDS      Seconds to wait before timing out server connections (default: 10)
--suppress-mcpserver-io BOOL  Suppress stdout/stderr from MCP servers (default: True)

代理

运行代理服务器实时监控和保护全系统MCP流量。临时注射 网关 以拦截和分析流量。再次删除网关 proxy 命令退出。

mcp-scan proxy [CONFIG_FILE...] [--pretty oneline|compact|full]

选项:

CONFIG_FILE...                  Path to MCP configuration files to setup for proxying.
--pretty oneline|compact|full   Pretty print the output in different formats (default: compact)

检查

打印工具、提示和资源的描述,无需验证。

mcp-scan inspect [CONFIG_FILE...]

选项:

--server-timeout SECONDS      Seconds to wait before timing out server connections (default: 10)
--suppress-mcpserver-io BOOL  Suppress stdout/stderr from MCP servers (default: True)

白名单

管理已批准实体的白名单。当没有提供参数时,此命令将显示当前的白名单。

# View the whitelist
mcp-scan whitelist

# Add to whitelist
mcp-scan whitelist TYPE NAME HASH

# Reset the whitelist
mcp-scan whitelist --reset

选项:

--reset                       Reset the entire whitelist
--local-only                  Only update local whitelist, don't contribute to global whitelist

论据:

TYPE                          Type of entity to whitelist: "tool", "prompt", or "resource"
NAME                          Name of the entity to whitelist
HASH                          Hash of the entity to whitelist

帮助

显示详细的帮助信息和示例。

mcp-scan help

例子

# Scan all known MCP configs
mcp-scan

# Scan a specific config file
mcp-scan ~/custom/config.json

# Just inspect tools without verification
mcp-scan inspect

# View whitelisted tools
mcp-scan whitelist

# Whitelist a tool
mcp-scan whitelist tool "add" "a1b2c3..."

MCP扫描已关闭供款

MCP Scan目前无法再接受外部捐款。我们专注于稳定释放。 我们欢迎建议、错误报告或功能请求作为GitHub问题。

开发设置

要从源代码运行此包,请执行以下步骤:

uv run pip install -e .
uv run -m src.mcp_scan.cli

将MCP扫描结果包含在您自己的项目/注册表中

如果您想将MCP扫描结果包含在您自己的项目或注册表中,请通过以下方式联系团队 mcpscan@invariantlabs.ai,我们可以帮你。 对于自动扫描,我们建议使用 --json 标记并解析输出。

进一步阅读

更新日志

看 更改日志.md.