MCP服务器安全扫描工具

一款针对Model Context Protocol (MCP)服务器的安全扫描工具,用于检测工具污染、提示注入、影子攻击等已知威胁。

  • by AgentDefenders
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 AgentDefenders/mcp-scan

使用说明

@代理防御者/mcp扫描

用于模型上下文协议(MCP)服务器配置的安全扫描程序。检测工具中毒、及时注射、阴影攻击和已知威胁。

MCP服务器通过强大的工具使用功能扩展了AI代理,但它们也引入了新的攻击面。受感染或恶意的MCP服务器可以泄露数据、覆盖代理行为或充当供应链后门。 @agentdefenders/mcp-scan 分析您的MCP配置,并在安全问题进入生产环境之前进行标记。

所有分析都在您的计算机上本地运行。没有数据传输到任何外部服务。如果您想要仪表板集成和历史跟踪,您可以选择提供 --api-key 将结果与同步 代理防御盾牌.

快速开始

npx @agentdefenders/mcp-scan

扫描仪自动检测11个受支持客户端的MCP客户端配置,并分析所有注册的服务器。

输出示例

@agentdefenders/mcp-scan v0.2.2-alpha

Scanning MCP configurations...
Found 2 servers across 1 client configuration.

--- filesystem-server ---
  Source: claude_desktop_config.json
  Command: npx -y @modelcontextprotocol/server-filesystem /home/user/projects
  Tools: 11 detected
  Analyzers: 5/5 passed
  Grade: A

--- data-pipeline-mcp ---
  Source: claude_desktop_config.json
  Command: npx -y data-pipeline-mcp@latest
  Tools: 4 detected
  Findings:
    [HIGH] tool-poisoning: Tool "run_query" description contains hidden
           instruction that overrides agent behavior. The phrase "ignore
           previous instructions" was detected in the tool description.
    [LOW]  suspicious-env: Tool "connect" requests access to DATABASE_URL
           environment variable.
  Grade: D

Summary
  Servers scanned: 2
  Total findings:  2 (1 high, 0 medium, 1 low)
  Clean servers:   1
  Flagged servers: 1

支持的MCP客户端

客户端 macOS Linux Windows
克劳德桌面 ~/Library/Application Support/Claude/claude_desktop_config.json ~/.config/Claude/claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json
光标 ~/.cursor/mcp.json ~/.cursor/mcp.json %APPDATA%\Cursor\mcp.json
VS代码 ~/Library/Application Support/Code/User/mcp.json ~/.config/Code/User/mcp.json %APPDATA%\Code\User\mcp.json
风帆冲浪 ~/Library/Application Support/Windsurf/User/globalStorage/windsurf.mcp/config.json ~/.config/Windsurf/User/globalStorage/windsurf.mcp/config.json %APPDATA%\Windsurf\User\globalStorage\windsurf.mcp\config.json
Gemini CLI ~/.gemini/settings.json ~/.gemini/settings.json %USERPROFILE%\.gemini\settings.json
克莱恩 ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
JetBrains/Junie。 ~/.junie/mcp/mcp.json ~/.junie/mcp/mcp.json %USERPROFILE%\.junie\mcp\mcp.json
Continue.dev ~/.continue/config.yaml ~/.continue/config.yaml %USERPROFILE%\.continue\config.yaml
谷歌反重力 ~/.gemini/antigravity/mcp_config.json ~/.gemini/antigravity/mcp_config.json %USERPROFILE%\.gemini\antigravity\mcp_config.json
Zed ~/.zed/settings.json ~/.config/zed/settings.json %APPDATA%\Zed\settings.json
亚马逊Q开发者 ~/.aws/amazonq/default.json ~/.aws/amazonq/default.json %USERPROFILE%\.aws\amazonq\default.json

您还可以使用以下命令指向特定的配置文件 --config <path>.

安全分析器

分析器 说明
tool-poisoning 检测工具描述中试图覆盖代理行为或泄露数据的隐藏指令。
prompt-injection 标识服务器元数据、工具名称和参数模式中的提示注入模式。
shadowing 标记隐藏或重新定义内置工具名称的工具,这可能会劫持代理操作。
suspicious-env 报告请求访问敏感环境变量(凭据、令牌、密钥)的工具。
known-threats 根据已知恶意MCP服务器的精心策划的数据库检查服务器包。

输出格式

默认输出是人类可读的控制台报告。对于自动化,请使用结构化格式:

# JSON output
npx @agentdefenders/mcp-scan --format json

# SARIF output (for GitHub Code Scanning and other SARIF consumers)
npx @agentdefenders/mcp-scan --format sarif

CI/CD集成

将MCP配置扫描添加到CI管道中。这 --ci flag输出GitHub Actions注释,编写markdown步骤摘要,默认为 --fail-on high.

GitHub操作(推荐)

- name: Scan MCP configurations
  run: npx @agentdefenders/mcp-scan --ci

这将:

  • 将调查结果打印为 ::error:: / ::warning:: 操作日志中的注释
  • 将降价摘要写入作业摘要选项卡
  • 如果检测到任何高或临界结果,则以代码1退出

使用SARIF上传的GitHub操作

- name: Scan MCP configurations
  run: npx @agentdefenders/mcp-scan --format sarif --fail-on high > mcp-scan.sarif

- name: Upload SARIF
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: mcp-scan.sarif

其他CI平台

npx @agentdefenders/mcp-scan --quiet --fail-on high

CLI参考

标志 描述 默认值
--config <path> 特定MCP客户端配置文件的路径。 自动检测
--format <type> 输出格式: console, json, sarif. console
--fail-on <severity> 如果任何发现达到或超过严重程度,则以代码1退出: low, medium, high, critical。 已禁用(high 在CI模式下)
--ci CI模式:GitHub操作注释、步骤摘要、无提示。暗示 --quiet。 已禁用
--api-key <key> AgentDefenders API密钥用于仪表板同步。启用远程结果存储。 无
--watch 持续监控配置文件的更改,并在修改时重新扫描。 已禁用
--interval <seconds> 使用时的轮询间隔(秒) --watch. 30
--quiet 抑制除发现和错误之外的所有输出。 已禁用
--badge 为您的项目README生成一个盾牌徽章URL。 已禁用

隐私

所有分析都在您的计算机上本地运行。除非您明确提供,否则不会向任何外部服务发送任何数据 --api-key 用于仪表板集成。

链接

许可证

麻省理工学院