AI代理工具安全扫描器

MCP Shark是一款专为安全工程师和平台工程师设计的AI代理工具安全扫描器,提供本地静态扫描、实时流量监控和多种报告格式输出,支持41种安全规则和有毒流量分析,无需云端配置即可运行。

  • by mcp-shark
  • JavaScript
  • 本地部署
  • 179 星标
  • 更新于
在 GitHub 查看 mcp-shark/mcp-shark

使用说明

mcp-shark

Security scanner for AI agent tools — built for security and platform engineers working with MCP in the IDE.

Run a local static scan over MCP IDE configs and embedded tool metadata: 41 rules (including AAuth visibility), toxic-flow heuristics, and SARIF / HTML / JSON reports. There is no hosted config-scan backend.

Add an optional local HTTP proxy with an in-browser dashboard so live traffic, findings, AAuth signals, and playground checks stay in one place—without sending your configs to a vendor.

You can

  • Use Traffic for live JSON-RPC capture, filters, export, and AAuth posture chips
  • Run Local Analysis for OWASP-style findings over captured traffic
  • Run YARA Detection for traffic pattern rules (native engine when installed, regex fallback otherwise)
  • Open AAuth Explorer for a graph of agents, missions, resources, and signing / access signals
  • Use MCP Playground to call tools, prompts, and resources through the proxy
  • Optionally run Smart Scan (AI-backed; uses your API token when enabled)
  • Use Server setup to detect configs, convert format, and route the editor through the proxy

Privacy: static scans need no cloud and send no telemetry. Refreshing rule catalogs is opt-in HTTPS (update-rules).

仪表板概览

这些照片来自现场 仪表盘 和 实际捕获的流量 (虚拟MCP或您自己的上游)。开始 npx @mcp-shark/mcp-shark serve --open. 智能扫描 下面没有显示-它取决于可选的远程API令牌。 MCP游乐场 一旦您至少配置了一个MCP上游(Playground捕获使用加载了工具的演示服务器),就会出现。

实时流量捕获

IDE和每个MCP上游之间的每一个JSON-RPC帧都被捕获了完整的报头、正文、时序和AAuth姿态芯片。按方法、状态、服务器、会话、AAuth代理/任务/姿态过滤。

MCP游乐场

选择上游,装载 工具, 提示,以及 资源 从该服务器,然后调用工具或通过代理读取资源——这对于在行为到达IDE之前进行验证非常有用。下面的视图显示了已配置演示MCP的工具列表。

AAuth浏览器

在捕获的流量中观察到的每个代理/任务/资源/签名算法/访问模式的强制知识图。使用 生成样本数据 获取快速演示图,或通过代理捕获真实的AAuth形状的流量。

局部分析

基于离线规则的扫描仪对捕获的流量进行扫描。这 AAuth姿势 该卡总结了签名/aauth感知/承载/无身份验证分布;这 有毒流量(代理流量) 面板根据观察到的结果推断跨服务器配对 tools/list 响应。如果数据包已在数据库中,请使用 从DB回放 (当没有连接活动MCP时),然后 分析 填充结果——下面的视图是在运行之后。

YARA 检测

相同 局部分析 选项卡:切换到 YARA 检测 对于交通规则引擎——引擎状态,八个预定义规则(切换、编辑、删除),以及 新规则 为了你自己的模式。当原住民 yara 模块未安装,扫描仍使用内置的正则表达式回退运行(请参阅 docs/local-analysis.md).

新规则 使用启动器模板(meta, strings,以及 condition).编辑规则文本,然后 保存规则 将其作为自定义模式添加到内置组件旁边。

服务器设置

自动检测Cursor/Copyx/Windsurf配置,将其转换为mcp-shark格式,并在启动时修补IDE以通过代理进行路由。

为什么选择mcp鲨鱼?

MCP设置通常将秘密、广泛的工具访问和多个服务器混合在一个代理上下文中;如果不检查配置,很容易错过问题。请参阅 OWASP MCP前10名 以结构化的方式查看可能出错的地方。

mcp-shark在您的机器上运行-没有API密钥或托管扫描后端。安装时使用 npx 并在当地审查调查结果。

有毒物质流动分析

扫描仪模拟MCP服务器的运行方式 在代理上下文中编写 并标记风险能力配对(例如,秘密访问与外部出口相结合):

  ▲ HIGH  notify-server → repo-server
    Untrusted content in one tool’s channel could lead the agent to
    take a destructive action in another (e.g. push code).

  ▲ MEDIUM  browser-server → filesystem-server
    Web-sourced context could be chained into local file operations.

将mcp-shark的发现作为您自己的威胁模型的输入,而不是作为完整的审计。

特性

特性 描述
41安全规则 OWASP MCP Top 10+代理安全计划+AAuth可见性+一般检查
有毒物质流动分析 基于工具能力启发式的跨服务器攻击路径检测
攻击演练 逐步利用调查结果中的叙述
鲨鱼得分 透明安全态势评分(0-100,A-F)
自动修正 --fix 用备份/撤消替换硬编码的秘密,修复权限
工具固定 Git可提交 .mcp-shark.lock 使用SHA-256哈希
15 IDE检测 Cursor、Claude Desktop、VS Code、Windsurf、Codex、Amp、Kiro等
4种输出格式 终端,JSON,SARIF v2.1.0,HTML
健康检查 doctor 环境验证命令
服务器清单 list 命令显示表中的所有服务器
观看模式 配置更改后的实时重新扫描
HTML报告 独立的离线安全报告
可下载的规则包 规则包注册表 (清单+JSON); update-rules 同步声明性包和有毒流启发式方法——零代码更改
YAML规则 通过以下方式按项目自定义规则 .mcp-shark/rules/
GitHub行动 CI/CD与SARIF上传集成
交互式TUI lazygit风格的终端UI,用于扫描、修复和服务器浏览
浏览器仪表板 实时流量、本地分析、YARA规则、AAuth Explorer、Playground、设置和日志
代理有毒流 本地分析面板+ GET/POST /api/security/traffic-toxic-flows* 从捕获的数据中推断跨服务器对 工具/列表 交通(参见 docs/local-analysis.md)
YARA风格的交通规则 In 局部分析→ YARA检测,启用或编辑内置模式规则,添加自定义规则,并检查引擎状态(本地YARA可用时,否则正则表达式回退)
本地静态扫描 无托管扫描后端; update-rules 在注册表中选择HTTPS

快速开始

# Scan your MCP setup (default command)
npx @mcp-shark/mcp-shark

# Auto-fix issues (with interactive confirmation)
npx @mcp-shark/mcp-shark scan --fix

# See full attack chain narratives
npx @mcp-shark/mcp-shark scan --walkthrough

# Pin tool definitions (lockfile) to spot unexpected changes
npx @mcp-shark/mcp-shark lock

# Check environment health
npx @mcp-shark/mcp-shark doctor

# Show all detected servers
npx @mcp-shark/mcp-shark list

# Download latest rule packs (OWASP, Agentic Security)
npx @mcp-shark/mcp-shark update-rules

# Watch for config changes
npx @mcp-shark/mcp-shark watch

# Interactive terminal UI
npx @mcp-shark/mcp-shark tui

# Generate HTML report
npx @mcp-shark/mcp-shark scan --format html --output report.html

# CI mode (exits 1 on critical/high)
npx @mcp-shark/mcp-shark scan --ci --format sarif

命令

命令 描述
scan (默认) 使用41条规则运行安全扫描
lock 创建 .mcp-shark.lock 文件
lock --verify 验证当前状态是否与锁文件匹配
diff 显示自上次锁定以来的工具定义更改
doctor 运行环境健康检查
list 显示所有检测到的服务器的清单(--format json 支持)
update-rules 从远程注册表下载最新规则包
watch 查看配置文件并重新扫描更改
tui 交互式终端UI(lazygit风格)
serve 启动本地代理和监控仪表板

CLI标志

scan (默认命令)

标志 描述
--fix 自动修复问题(交互式确认)
--fix --yes 无提示自动修复
--fix --undo 从以前的修复程序还原备份
--walkthrough 显示完整的攻击链叙述
--ci CI模式:临界/高退出代码1
--format <fmt> 输出: terminal, json, sarif, html
--output <path> 将报告写入文件( html 格式)
--strict 将咨询结果计入得分
--ide <name> 仅扫描特定IDE
--rules <path> 从目录加载自定义YAML规则
--refresh-rules 扫描前从注册表获取规则包(HTTPS;请参阅规则注册表配置)

其他命令

命令 标志/注释
list --format terminal 或 --format json
update-rules --source <url> 用于自定义包装清单
serve --open / -o 打开浏览器
lock --verify 检查锁文件是否匹配

如何 scan 作品

CLI scan 命令是 静态:它从IDE配置文件中读取MCP条目(请参阅 支持的IDE 和可选项目 ./mcp.json)并分析 那里写着什么确实如此 不 连接到正在运行的MCP服务器或调用 tools/list.

  • 始终扫描: 每个服务器块的 command, args, env, url,以及相关字段(机密 env、不安全的生成模式、HTTP URL等)。
  • 工具级别规则 (声明性包、命令注入启发式、工具中的有毒流分类 名字等)仅在该服务器条目包括嵌入式 tools 数组(名称、描述、模式)。如果 tools 省略了——通常用于 command/stdio-只有配置--扫描可能会报告 已检查0个工具 即使Cursor正在正常运行服务器。

要在CI或测试仓库中执行完整的规则覆盖,请将工具元数据嵌入到扫描程序读取的同一JSON中,或使用项目本地 mcp.json 线束(参见 --ide Project).

它涵盖了什么

mcp鲨鱼瞄准 磁盘上已有的配置和元数据 (加上可选的本地监控)。它有助于捕捉常见的错误配置和风险组合;将输出视为您自己审核的输入,而不是保证没有任何错误。

区域 注释
安装/运行 Node.js 20+; npx @mcp-shark/mcp-shark
安全规则 41个检查——30个声明性JSON包,11个JS,启发式需要代码
有毒流分析 启发式跨服务器路径;质量取决于嵌入式 tools /分类
攻击演练 根据调查结果得出的叙述
自动修复 支持部分问题;确认您的仓库中的更改
工具固定 .mcp-shark.lock 使用SHA-256哈希
实时流量 仪表板(serve)用于监测;与静态分开 scan
自定义规则 YAML下 .mcp-shark/rules/ JSON规则包
调查结果和评分 确认/建议等级加上鲨鱼评分(0-100,A-F)
IDE配置 15个内置路径+项目本地 mcp.json 变体——请参见 支持的IDE
输出 终端,JSON,SARIF v2.1.0,HTML
健康 doctor 用于环境检查
CI scan --ci 可选 GitHub行动
监视 配置文件更改时重新扫描
规则更新 update-rules (可选HTTPS获取;静态扫描无需它即可工作)

规则可扩展性

可下载的规则包(JSON)

规范 注册表 (清单、包文件、验证CI和模式注释)位于 **mcp鲨鱼/规则包**npm包嵌入了副本; update-rules 将相同的工件拉入 .mcp-shark/rule-packs/.

mcp-shark附带了30条声明性规则作为JSON包(OWASP mcp、代理安全倡议、通用安全、AAuth可见性),以及 toxic-flow-heuristics 包装(toxic_flow_rules 用于跨服务器组合)。新的漏洞目录可以添加为 .json 文件——没有JavaScript,没有代码更改。

# Fetch latest rule packs from the registry
npx @mcp-shark/mcp-shark update-rules

# Use a custom/enterprise registry
npx @mcp-shark/mcp-shark update-rules --source https://internal.corp/rules/manifest.json

下载的包缓存在 .mcp-shark/rule-packs/ 并在每次扫描时与内置规则合并。

Rule pack JSON schema
{
  "id": "owasp-mcp-2027",
  "name": "OWASP MCP Top 10 (2027)",
  "version": "1.0.0",
  "rules": [
    {
      "id": "MCP01-token-mismanagement",
      "name": "Token Mismanagement",
      "severity": "critical",
      "framework": "OWASP-MCP",
      "description": "Detects hardcoded tokens in MCP configs",
      "patterns": [
        { "regex": "(api[_-]?key|token)\\s*[:=]", "flags": "i", "label": "API key pattern" }
      ],
      "scope": ["tool", "prompt", "resource", "packet"],
      "exclude_patterns": [{ "regex": "\\$\\{|process\\.env" }],
      "match_mode": "any"
    }
  ]
}

自定义YAML规则(每个项目)

创建 .mcp-shark/rules/ 在您的项目中添加轻量级自定义规则:

# .mcp-shark/rules/no-production-keys.yaml
id: custom-no-prod-keys
name: No Production Keys
severity: critical
description: Detects production API keys in MCP configs
match:
  env_pattern: "^(PROD_|PRODUCTION_)"
  value_pattern: "^sk-live|^pk-live"
message: "Production key detected in {key} — use staging keys for development"

YAML规则和JSON包在扫描时都会自动加载。通过提交文件夹与您的团队共享。

用户可重写数据(.mcp-shark/)

每个内置数据源都可以通过项目根目录中的YAML文件进行扩展或覆盖:

文件 替换 格式
.mcp-shark/secrets.yaml 秘密检测模式 列表 { name, regex }
.mcp-shark/classifications.yaml 服务器/工具功能标签 嵌套映射 server: { capability: true }
.mcp-shark/flows.yaml 有毒物质流动规则 列表 { source_cap, target_cap, risk, ... }
.mcp-shark/rules/*.yaml 按项目自定义规则 请参阅上面的YAML规则
.mcp-shark/rule-packs/*.json 覆盖或添加声明性包 请参阅上面的JSON包

用户数据在扫描时与内置数据合并。无需重建。

GitHub行动

# .github/workflows/mcp-security.yml
name: MCP Security Scan
on: [push, pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: mcp-shark/scan-action@v1
        with:
          format: sarif
          fail-on: high
      - uses: github/codeql-action/upload-sarif@v3
        if: always()
        with:
          sarif_file: mcp-shark-results.sarif

支持的IDE

IDE 配置路径 状态
光标 ~/.cursor/mcp.json ✅
克劳德桌面 ~/Library/.../claude_desktop_config.json ✅
克劳德代码 ~/.claude.json ✅
VS代码 ~/.vscode/mcp.json ✅
风帆冲浪 ~/.codeium/windsurf/mcp_config.json ✅
食品法典委员会 ~/.codex/config.toml ✅
Gemini CLI ~/.gemini/settings.json ✅
继续 ~/.continue/config.json ✅
克莱恩 ~/.../saoudrizwan.claude-dev/.../cline_mcp_settings.json ✅
放大器 ~/.amp/mcp.json ✅
基罗 ~/.kiro/mcp.json ✅
Zed ~/.config/zed/settings.json ✅
扩充 ~/.augment/mcp.json ✅
Roo代码 ~/.roo-code/mcp.json ✅
项目(当地) ./mcp.json, ./.mcp.json, ./.mcp/config.json ✅

安全规则(41)

Full rule list

OWASP MCP前10名

ID 规则 严重性 来源
MCP01 令牌管理错误 严重 声明性
MCP02 范围蠕变 高 声明性
MCP03 工具中毒 严重 陈述性
MCP04 供应链 高 声明性
MCP05 命令注入 关键 JS插件
MCP06 快速注射 高 陈述性
MCP07 身份验证不足 高 声明性
MCP08 缺乏审核 中等 声明性
MCP09 影子服务器 高 声明性
MCP10 上下文注入 高 声明性

机构安全倡议(ASI)

ID 规则 严重性 来源
ASI01 目标劫持 危急 陈述性
ASI02 工具误用 高 声明性
ASI03 身份滥用 高 陈述性
ASI04 供应链 高 声明性
ASI05 远程代码执行 关键 JS插件
ASI06 记忆中毒 高 陈述性
ASI07 沟通不安全 中等 陈述性
ASI08 级联故障 中等 声明性
ASI09 信任利用 高 声明性
ASI10 流氓特工 关键 声明性

AAuth可见性(信息性)

ID 描述 严重性
aauth-agent-identity-observed aauth:<local>@<domain> 工具/提示/资源/数据包中的代理标识 低
aauth-jwks-discovery-url URL包含 /.well-known/aauth 或 /jwks 低
aauth-http-message-signature-observed RFC 9421 Signature-Input / Signature 捕获流量中的标头 低
aauth-mission-context-observed AAuth-Mission 捕获流量中的标头 低
aauth-requirement-challenge-observed AAuth-Requirement 响应标头(请求AAuth的资源) 低
aauth-bearer-token-coexists-with-aauth 同一数据包同时具有Bearer令牌和AAuth签名 中等

通用安全

规则 严重性
硬编码的秘密 关键
命令注入 严重
跨服务器阴影 高
工具名称不明确 中等
DNS重新绑定 高
ANSI转义序列 中等
配置文件权限 中等
缺少控制 高
工具名称重复 中等
外壳/环境注入 高
权限过多 高
不安全的默认配置 中等
路径遍历 高
敏感数据暴露 高
运输不安全 中等

浏览器仪表板

MCP鲨鱼船 浏览器内仪表板 在本地代理上进行实时MCP流量、分析和探索:

npx @mcp-shark/mcp-shark serve --open

与旧快捷方式相同(否 serve 子命令):

npx @mcp-shark/mcp-shark --open

仪表板提供:

  • 多服务器聚合和实时流量捕获(过滤器、导出、AAuth姿态芯片)
  • MCP游乐场 --通过代理对选定的上游调用工具、提示和资源
  • 局部分析 --对捕获的流量进行OWASP式静态扫描; YARA 检测 用于流量模式规则(安装时为本机引擎,否则为正则表达式回退)
  • AAuth浏览器 --在流量中观察到的代理/任务/资源/签名/访问信号图
  • 智能扫描 -可选的AI支持扫描(需要配置API令牌)
  • In-app API文档、服务器设置、日志和优雅的关闭

零接触式第一双靴子

仪表板在您第一次在新机器上启动时会自动启动——无需单击安装向导:

  1. 如果 ~/.mcp-shark/mcps.json 已经声明上游(例如,来自之前的运行、手动编辑或 testbed:up),代理直接从该配置开始。
  2. 否则,在全新安装时(否 ~/.mcp-shark MCP Shark扫描以寻找真正的编辑器MCP配置(~/.cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, ~/.codex/config.toml).如果发现一个具有实际上游,它会自动导入它们,写道 ~/.mcp-shark/mcps.json,启动代理,并修补编辑器配置,以便编辑器通过代理路由。
  3. 如果两条路径都不适用,则UI将以仅监视模式启动,设置面板仍可用于手动配置。

要在计算机上重新触发首次启动行为,请删除 ~/.mcp-shark/ 并重新启动UI。

建筑

┌────────────────────────────────────────────────────┐
│  CLI (Commander.js)                                │
│  scan · lock · diff · doctor · list · watch · tui  │
│  update-rules · serve                              │
├──────────────┬──────────────┬──────────────────────┤
│  ConfigScanner│  ScanService  │  StaticRulesService  │
│  15 IDEs      │  orchestrator │  41 rules            │
├──────────────┴──────────────┴──────────────────────┤
│  Data layer (JSON + user YAML/JSON overrides)      │
│  ┌────────────┬──────────────┬───────────────────┐ │
│  │ rule-packs │ secret-      │ tool-             │ │
│  │ (30 rules) │ patterns.json│ classifications   │ │
│  ├────────────┼──────────────┼───────────────────┤ │
│  │ toxic-flow │ rule-        │ .mcp-shark/*.yaml │ │
│  │ rules.json │ sources.json │ (user overrides)  │ │
│  └────────────┴──────────────┴───────────────────┘ │
├────────────────────────────────────────────────────┤
│  JS plugins (11 rules needing algorithmic logic)   │
│  + DeclarativeRuleEngine (30 pattern-based rules)  │
└────────────────────────────────────────────────────┘

设计原则:

  • 数据优先 --声明性规则、秘密模式、工具分类和有毒流默认值以JSON形式提供; 30 的 41 规则是模式包,您可以在不分叉这些定义的情况下扩展或覆盖它们。
  • 用户可重写 --内置数据可以通过以下方式扩展 .mcp-shark/*.yaml (以及JSON包删除),如上所述。
  • 混合规则引擎 --另一个 11 规则是JS插件,启发式需要代码。两个源在扫描时合并。
  • 零配置扫描 — npx 然后走。自动检测以下IDE路径以及项目本地路径 mcp.json 变体。

文档

需求

  • Node.js:20.0.0或更高
  • 操作系统:macOS、Windows或Linux

许可证

来源可用非商业许可证

  • ✅ 查看、分叉、修改、运行以供个人、教育或公司内部使用
  • ❌ 未经书面许可,销售、转售或整合到付费产品/服务中

看 许可证 完整条款。

CLI演示

与同一衬垫 快速开始 (默认值 scan).终端输出取决于您的配置:

npx @mcp-shark/mcp-shark

支持


MCP servers can chain through the agent — mcp-shark surfaces risky combinations in config and traffic.