mcp-shark

作者 mcp-shark

Wireshark-like forensic analysis for Model Context Protocol communications Capture, inspect, and investigate all HTTP requests and responses between your IDE and MCP servers

173
Stars
13
Forks
JavaScript
语言
2026/8/23
添加时间

⚠️ 第三方软件声明

本 Skill 为第三方开源软件,独立托管于 GitHub。SkillTip 仅为信息目录,不控制或维护底层仓库。所显示的安全检查为自动化且范围有限,安装前请自行审查源码。

阅读服务条款

安装

添加到你的 Claude Code skills 目录:

# Add to your Claude Code skills
git clone https://github.com/mcp-shark/mcp-shark

快速入门

使用 mcp-shark 等 Skills 的指南。

安全报告

已验证

上次扫描:—

{
  "status": "PASSED",
  "issues": []
}

README.md

MCP Shark Logo

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).

npm version License: Non-Commercial

Dashboard at a glance

These captures are from the live dashboard with real captured traffic (dummy MCP or your own upstreams). Start with npx @mcp-shark/mcp-shark serve --open. Smart Scan is not shown below — it depends on an optional remote API token. MCP Playground appears once you have at least one MCP upstream configured (the Playground capture uses a demo server with tools loaded).

Live traffic capture

Every JSON-RPC frame between your IDE and each MCP upstream is captured with full headers, body, timing, and an AAuth posture chip. Filter by method, status, server, session, AAuth agent / mission / posture.

Traffic Capture

MCP Playground

Pick an upstream, load tools, prompts, and resources from that server, then call tools or read resources through the proxy — useful for validating behavior before it hits your IDE. The view below shows the tools list for a configured demo MCP.

MCP Playground

AAuth Explorer

Force-directed knowledge graph of every Agent / Mission / Resource / Signing algorithm / Access mode observed across captured traffic. Use Generate sample data for a quick demo graph, or capture real AAuth-shaped traffic through the proxy.

AAuth Explorer

Local Analysis

Offline rule-based scanner over captured traffic. The AAuth Posture card summarizes signed / aauth-aware / bearer / no-auth distribution; the Toxic flows (proxy traffic) panel infers cross-server pairings from observed tools/list responses. With packets already in the database, use Replay from DB (when no live MCP is attached) and then Analyse to populate findings — the view below is after that run.

Local Analysis

YARA Detection

Same Local Analysis tab: switch to YARA Detection for the traffic rule engine — engine status, eight predefined rules (toggle, edit, delete), and New Rule for your own patterns. When the native yara module is not installed, scans still run using the built-in regex fallback (see docs/local-analysis.md).

YARA Detection

New Rule opens the editor with a starter template (meta, strings, and condition). Edit the rule text, then Save Rule to add it as a custom pattern alongside the built-ins.

Adding a custom YARA rule

Server setup

Auto-detects Cursor / Codex / Windsurf configs, converts them to mcp-shark format, and patches the IDE to route through the proxy on start.

Server Setup

Why mcp-shark?

MCP setups commonly mix secrets, broad tool access, and multiple servers in one agent context; issues are easy to miss without checking configs. See the OWASP MCP Top 10 for a structured view of what can go wrong.

mcp-shark runs on your machine — no API keys or hosted scan backend. Install with npx and review findings locally.

Toxic flow analysis

The scanner models how MCP servers compose in the agent context and flags risky capability pairings (for example, secret access combined with external egress):

  ▲ 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.

Use mcp-shark findings as input to your own threat model, not as a complete audit.

Features

FeatureDescription
41 security rulesOWASP MCP Top 10 + Agentic Security Initiative + AAuth visibility + general checks
Toxic flow analysisCross-server attack path detection from tool capability heuristics
Attack walkthroughsStep-by-step exploit narratives from findings
Shark ScoreTransparent security posture score (0-100, A-F)
Auto-fix--fix replaces hardcoded secrets, fixes permissions, with backup/undo
Tool pinningGit-committable .mcp-shark.lock with SHA-256 hashes
15 IDE detectionCursor, Claude Desktop, VS Code, Windsurf, Codex, Amp, Kiro, and more
4 output formatsTerminal, JSON, SARIF v2.1.0, HTML
Health checksdoctor command for environment validation
Server inventorylist command shows all servers in a table
Watch modeLive re-scan on config changes
HTML reportsSelf-contained offline security reports
Downloadable rule packsRule pack registry (manifest + JSON); update-rules syncs declarative packs and toxic-flow heuristics — zero code changes
YAML rulesPer-project custom rules via .mcp-shark/rules/
GitHub ActionCI/CD integration with SARIF upload
Interactive TUIlazygit-style terminal UI for scan, fix, and server browsing
Browser dashboardLive traffic, Local Analysis, YARA rules, AAuth Explorer, Playground, setup, and logs
Proxy toxic flowsLocal Analysis panel + GET/POST /api/security/traffic-toxic-flows* infer cross-server pairs from captured tools/list traffic (see docs/local-analysis.md)
YARA-style traffic rulesIn Local Analysis → YARA Detection, enable or edit built-in pattern rules, add custom rules, and inspect engine status (native YARA when available, regex fallback otherwise)
Local static scansNo hosted scan backend; update-rules is opt-in HTTPS to the registry

Quick Start

# 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

Commands

CommandDescription
scan (default)Run security scan with 41 rules
lockCreate .mcp-shark.lock file
lock --verifyVerify current state matches lockfile
diffShow tool definition changes since last lock
doctorRun environment health checks
listShow inventory of all detected servers (--format json supported)
update-rulesDownload latest rule packs from remote registry
watchWatch config files and re-scan on changes
tuiInteractive terminal UI (lazygit-style)
serveStart the local proxy and monitoring dashboard

CLI flags

scan (default command)

FlagDescription
--fixAuto-fix issues (interactive confirmation)
--fix --yesAuto-fix without prompting
--fix --undoRestore backups from previous fix
--walkthroughShow full attack chain narratives
--ciCI mode: exit code 1 on critical/high
--format <fmt>Output: terminal, json, sarif, html
--output <path>Write report to file (for html format)
--strictCount advisory findings in score
--ide <name>Scan specific IDE only
--rules <path>Load custom YAML rules from directory
--refresh-rulesFetch rule packs from registry before scan (HTTPS; see rule registry config)

Other commands

CommandFlags / notes
list--format terminal or --format json
update-rules--source <url> for a custom pack manifest
serve--open / -o to open the browser
lock--verify to check lockfile match

How scan works

The CLI scan command is static: it reads MCP entries from your IDE config files (see Supported IDEs and optional project ./mcp.json) and analyzes what is written there. It does not connect to running MCP servers or call tools/list.

  • Always scanned: each server block’s command, args, env, url, and related fields (secrets in env, unsafe spawn patterns, HTTP URLs, etc.).
  • Tool-level rules (declarative packs, command-injection heuristics, toxic-flow classification from tool names, etc.) run only when that server entry includes an embedded tools array (name, description, schemas). If tools is omitted—typical for command/stdio-only configs—the scan may report 0 tools checked even though Cursor is running the server fine.

To exercise full rule coverage in CI or test repos, either embed tool metadata in the same JSON your scanner reads, or use a project-local mcp.json harness (see --ide Project).

What it covers

mcp-shark is aimed at config and metadata you already have on disk (plus optional local monitoring). It helps catch common misconfigurations and risky combinations; treat output as input to your own review, not a guarantee nothing is wrong.

AreaNotes
Install / runNode.js 20+; npx @mcp-shark/mcp-shark
Security rules41 checks — 30 declarative JSON packs, 11 JS where heuristics need code
Toxic flow analysisHeuristic cross-server paths; quality depends on embedded tools / classifications
Attack walkthroughsNarratives derived from findings
Auto-fixSupported for a subset of issues; confirm changes in your repo
Tool pinning.mcp-shark.lock with SHA-256 hashes
Live trafficDashboard (serve) for monitoring; separate from static scan
Custom rulesYAML under .mcp-shark/rules/ and JSON rule packs
Findings & scoreconfirmed / advisory tiers plus Shark Score (0–100, A–F)
IDE configs15 built-in paths + project-local mcp.json variants — see Supported IDEs
OutputTerminal, JSON, SARIF v2.1.0, HTML
Healthdoctor for environment checks
CIscan --ci and optional GitHub Action
WatchRe-scan when config files change
Rule updatesupdate-rules (optional HTTPS fetch; static scan works without it)

Rule Extensibility

Downloadable Rule Packs (JSON)

The canonical registry (manifest, pack files, validation CI, and schema notes) lives in mcp-shark/rule-packs. The npm package embeds copies; update-rules pulls the same artifacts into .mcp-shark/rule-packs/.

mcp-shark ships with 30 declarative rules as JSON packs (OWASP MCP, Agentic Security Initiative, General Security, AAuth Visibility), plus a toxic-flow-heuristics pack (toxic_flow_rules for cross-server composition). New vulnerability catalogs can be added as .json files — no JavaScript, no code changes.

# 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

Downloaded packs are cached in .mcp-shark/rule-packs/ and merged with built-in rules on every scan.

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"
    }
  ]
}

Custom YAML Rules (per-project)

Create .mcp-shark/rules/ in your project to add lightweight custom 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"

Both YAML rules and JSON packs are loaded automatically on scan. Share them with your team by committing the folder.

User-Overridable Data (.mcp-shark/)

Every built-in data source can be extended or overridden through YAML files in your project root:

FileOverridesFormat
.mcp-shark/secrets.yamlSecret detection patternsList of { name, regex }
.mcp-shark/classifications.yamlServer/tool capability tagsNested map server: { capability: true }
.mcp-shark/flows.yamlToxic flow rulesList of { source_cap, target_cap, risk, ... }
.mcp-shark/rules/*.yamlCustom per-project rulesSee YAML Rules above
.mcp-shark/rule-packs/*.jsonOverride or add declarative packsSee JSON Packs above

User data is merged with built-in data at scan time. No rebuild required.

GitHub Action

# .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

Supported IDEs

IDEConfig PathStatus
Cursor~/.cursor/mcp.json
Claude Desktop~/Library/.../claude_desktop_config.json
Claude Code~/.claude.json
VS Code~/.vscode/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
Codex~/.codex/config.toml
Gemini CLI~/.gemini/settings.json
Continue~/.continue/config.json
Cline~/.../saoudrizwan.claude-dev/.../cline_mcp_settings.json
Amp~/.amp/mcp.json
Kiro~/.kiro/mcp.json
Zed~/.config/zed/settings.json
Augment~/.augment/mcp.json
Roo Code~/.roo-code/mcp.json
Project (local)./mcp.json, ./.mcp.json, ./.mcp/config.json

Security Rules (41)

Full rule list

OWASP MCP Top 10

IDRuleSeveritySource
MCP01Token MismanagementCriticaldeclarative
MCP02Scope CreepHighdeclarative
MCP03Tool PoisoningCriticaldeclarative
MCP04Supply ChainHighdeclarative
MCP05Command InjectionCriticalJS plugin
MCP06Prompt InjectionHighdeclarative
MCP07Insufficient AuthHighdeclarative
MCP08Lack of AuditMediumdeclarative
MCP09Shadow ServersHighdeclarative
MCP10Context InjectionHighdeclarative

Agentic Security Initiative (ASI)

IDRuleSeveritySource
ASI01Goal HijackCriticaldeclarative
ASI02Tool MisuseHighdeclarative
ASI03Identity AbuseHighdeclarative
ASI04Supply ChainHighdeclarative
ASI05Remote Code ExecutionCriticalJS plugin
ASI06Memory PoisoningHighdeclarative
ASI07Insecure CommunicationMediumdeclarative
ASI08Cascading FailuresMediumdeclarative
ASI09Trust ExploitationHighdeclarative
ASI10Rogue AgentCriticaldeclarative

AAuth Visibility (informational)

IDDescriptionSeverity
aauth-agent-identity-observedaauth:<local>@<domain> agent identity in tool/prompt/resource/packetLow
aauth-jwks-discovery-urlURLs containing /.well-known/aauth or /jwksLow
aauth-http-message-signature-observedRFC 9421 Signature-Input / Signature headers in captured trafficLow
aauth-mission-context-observedAAuth-Mission headers in captured trafficLow
aauth-requirement-challenge-observedAAuth-Requirement response headers (resource asking for AAuth)Low
aauth-bearer-token-coexists-with-aauthSame packet has both Bearer token and AAuth signatureMedium

General Security

RuleSeverity
Hardcoded SecretsCritical
Command InjectionCritical
Cross-Server ShadowingHigh
Tool Name AmbiguityMedium
DNS RebindingHigh
ANSI Escape SequencesMedium
Config File PermissionsMedium
Missing ContainmentHigh
Duplicate Tool NamesMedium
Shell/Env InjectionHigh
Excessive PermissionsHigh
Unsafe Default ConfigMedium
Path TraversalHigh
Sensitive Data ExposureHigh
Insecure TransportMedium

Browser dashboard

MCP Shark ships an in-browser dashboard on the local proxy for real-time MCP traffic, analysis, and exploration:

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

Same as the older shortcut (no serve subcommand):

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

The dashboard provides:

  • Multi-server aggregation and real-time traffic capture (filters, export, AAuth posture chips)
  • MCP Playground — call tools, prompts, and resources through the proxy against a selected upstream
  • Local Analysis — OWASP-style static scan over captured traffic; YARA Detection for traffic pattern rules (native engine when installed, regex fallback otherwise)
  • AAuth Explorer — graph of Agent / Mission / Resource / signing / access signals observed in traffic
  • Smart Scan — optional AI-backed scan (requires a configured API token)
  • In-app API docs, server setup, logs, and graceful shutdown

Zero-touch first boot

The dashboard bootstraps itself the first time you launch it on a new machine — no Setup wizard click required:

  1. If ~/.mcp-shark/mcps.json already declares upstreams (e.g. from a previous run, hand-edit, or testbed:up), the proxy starts directly with that config.
  2. Otherwise, on a brand-new install (no ~/.mcp-shark at all), MCP Shark scans for a real editor MCP config (~/.cursor/mcp.json, ~/.codeium/windsurf/mcp_config.json, ~/.codex/config.toml). If one is found with actual upstreams, it auto-imports them, writes ~/.mcp-shark/mcps.json, starts the proxy, and patches the editor config so the editor routes through the proxy.
  3. If neither path applies, the UI starts in monitoring-only mode and the Setup panel is still available for manual configuration.

To re-trigger first-boot behavior on a machine, remove ~/.mcp-shark/ and restart the UI.

Architecture

┌────────────────────────────────────────────────────┐
│  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)  │
└────────────────────────────────────────────────────┘

Design principles:

  • Data-first — Declarative rules, secret patterns, tool classifications, and toxic-flow defaults ship as JSON; 30 of 41 rules are pattern packs you can extend or override without forking those definitions.
  • User-overridable — Built-in data can be extended via .mcp-shark/*.yaml (and JSON pack drops) as documented above.
  • Hybrid rule engine — The other 11 rules are JS plugins where heuristics need code. Both sources are merged at scan time.
  • Zero-config scanningnpx and go. Auto-detects the IDE paths below plus project-local mcp.json variants.

Documentation

Requirements

  • Node.js: 20.0.0 or higher
  • OS: macOS, Windows, or Linux

License

Source-Available Non-Commercial License

  • ✅ View, fork, modify, run for personal, educational, or internal company use
  • ❌ Sell, resell, or integrate into paid products/services without written permission

See LICENSE for full terms.

CLI demo

Same one-liner as Quick Start (default scan). Terminal output depends on your config:

npx @mcp-shark/mcp-shark

mcp-shark demo

Support


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

常见问题

What is mcp-shark?

mcp-shark is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by mcp-shark. Wireshark-like forensic analysis for Model Context Protocol communications Capture, inspect, and investigate all HTTP requests and responses between your IDE and MCP servers. It has 173 GitHub stars.

Is mcp-shark safe to use?

mcp-shark returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.

How do I install mcp-shark?

Clone the repository with "git clone https://github.com/mcp-shark/mcp-shark" and add it to your Claude Code skills directory (see the Installation section above).

What programming language is mcp-shark written in?

mcp-shark is primarily written in JavaScript. It is open-source under mcp-shark on GitHub, so you can review or fork the full source.

Are there alternatives to mcp-shark?

Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh mcp-shark against similar tools.

评论 (0)

暂无评论,成为第一个分享想法的人!

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情

claude-code

by anthropics

Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.

120,03119,897Shell
AI 智能体
查看详情

开发者还喜欢

基于喜欢此 Skill 的开发者投票和收藏

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP 服务器apisai-tools
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情