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).
](https://www.npmjs.com/package/@mcp-shark/mcp-shark) 
仪表板概览
这些照片来自现场 仪表盘 和 实际捕获的流量 (虚拟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 | 输出: terminal, json, sarif, html |
| `--output | |
| ` | 将报告写入文件( html 格式) |
--strict | 将咨询结果计入得分 |
--ide | 仅扫描特定IDE |
| `--rules | |
| ` | 从目录加载自定义YAML规则 |
--refresh-rules | 扫描前从注册表获取规则包(HTTPS;请参阅规则注册表配置) |
其他命令
| 命令 | 标志/注释 |
|---|---|
list | --format terminal 或 --format json |
update-rules | --source 用于自定义包装清单 |
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 可选 |
| 监视 | 配置文件更改时重新扫描 |
| 规则更新 | 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:@ 工具/提示/资源/数据包中的代理标识 | 低 |
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文档、服务器设置、日志和优雅的关闭
零接触式第一双靴子
仪表板在您第一次在新机器上启动时会自动启动——无需单击安装向导:
- 如果
~/.mcp-shark/mcps.json已经声明上游(例如,来自之前的运行、手动编辑或testbed:up),代理直接从该配置开始。 - 否则,在全新安装时(否
~/.mcp-sharkMCP Shark扫描以寻找真正的编辑器MCP配置(~/.cursor/mcp.json,~/.codeium/windsurf/mcp_config.json,~/.codex/config.toml).如果发现一个具有实际上游,它会自动导入它们,写道~/.mcp-shark/mcps.json,启动代理,并修补编辑器配置,以便编辑器通过代理路由。 - 如果两条路径都不适用,则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变体。
文档
- 规则包注册表 --官方
manifest.jsonJSON包被update-rules - 入门指南 --安装和设置
- 特性 --详细的功能文档
- 用户指南 --完整的使用指南
- 配置 --配置文件和环境变量
- 局部分析 --静态安全分析和YARA交通规则
- AAuth可见性 --RFC 9421/AAuth可观察性
- 建筑 --系统设计
- 数据库体系结构 --SQLite模式参考
- API 参考 -API端点
- 故障排除 --常见问题和修复
- 发展 --贡献和项目惯例
- 包裹检查 --npm包布局
需求
- Node.js:20.0.0或更高
- 操作系统:macOS、Windows或Linux
许可证
来源可用非商业许可证
- ✅ 查看、分叉、修改、运行以供个人、教育或公司内部使用
- ❌ 未经书面许可,销售、转售或整合到付费产品/服务中
看 许可证 完整条款。
CLI演示
与同一衬垫 快速开始 (默认值 scan).终端输出取决于您的配置:
npx @mcp-shark/mcp-shark支持
- 问题:
- 网站: 麦普沙克.sh
______________________________________________________________________
MCP servers can chain through the agent — mcp-shark surfaces risky combinations in config and traffic.
