MCP服务器网络扫描工具

mcpmap是一款用于发现和安全审计MCP(Model Context Protocol)服务器的网络扫描工具,类似于针对MCP协议的nmap。

  • by canack
  • Rust
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 canack/mcpmap

使用说明

mcpmap

用于发现和安全审计的网络扫描仪 主控程序 跨IP范围的服务器。与nmap类似,但适用于模型上下文协议。

安装

# Homebrew (macOS/Linux)
brew install canack/tap/mcpmap

# Cargo
cargo install mcpmap

# Shell one-liner (macOS/Linux)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/canack/mcpmap/releases/latest/download/mcpmap-installer.sh | sh

# Docker
docker run --rm ghcr.io/canack/mcpmap:latest 192.168.1.0/24

上所有平台的预构建二进制文件 GitHub发布.

用法

mcpmap 192.168.1.0/24                          # discover MCP servers
mcpmap 192.168.1.0/24 --enumerate              # list tools + risk levels
mcpmap 192.168.1.0/24 --enumerate --active     # active security audit (safe, metadata-only)
mcpmap 192.168.1.0/24 --enumerate --active \
  --probe-tools --i-accept-risk                # call LOW-risk tools
mcpmap 192.168.1.0/24 --enumerate --active \
  --pin baseline.json                          # save tool hashes
mcpmap 192.168.1.0/24 --enumerate --active \
  --verify baseline.json                       # verify against baseline
mcpmap 192.168.1.0/24 --enumerate --json       # JSON output for CI/CD

运作原理

Targets ──▶ Port Scan ──▶ HTTP Probe ──▶ MCP Handshake ──▶ Security Checks
                                              │
                                     --enumerate: Tool Enumeration
                                              │
                                        --active: Behavioral Probing

被动(默认): 端口扫描→ HTTP启发式→ JSON-RPC initialize 握手→ origin/auth/session验证→ 工具枚举和风险分类。

活动(--active): 模式中毒、资源注入、工具占用、临时地毯拉取、渗透链、跨服务器操作、响应注入、拒绝钱包。

主动探测层

级别 标志 它的作用
1--安全 --active 仅元数据:工具/列表、资源/列表、模式分析。没有工具调用。
2--受控 + --probe-tools --i-accept-risk 使用测试输入调用低风险工具(读取、获取、列表、搜索)。
3--攻击性 + --probe-medium 也称为中等风险工具。只有最重要的。

从不调用关键/高风险工具。没有旗帜可以覆盖这一点。

安全限制:3个调用/工具,50个调用/服务器,5秒/调用超时,100KB响应上限,总探测超时120秒。

安全检测

被动和主动扫描中的15个漏洞类别:

ID 漏洞 服务。 模式
MCP-001 DNS重新绑定(缺少源验证) 高 被动
MCP-002 缺少身份验证 高 被动
MCP-003 不安全传输(无TLS) 医疗 被动
MCP-004 可预测会话ID 高 被动
MCP-005 危险工具暴露 临界值 --enumerate
MCP-006 工具说明中的快速注射 Med --enumerate
MCP-007 资源含量注射 药物 --active
MCP-008 架构中毒 高 --active
MCP-009 工具名称浅写 高 --active
MCP-010 Rug pull(定义突变) Crit --active
MCP-011 反应注射(ATPA) 高 --probe-tools
MCP-012 拒绝钱包 医疗 --probe-tools
MCP-013 渗出链风险 高 --active
MCP-014 跨服务器操作 医疗 --active
MCP-015 引脚验证失败 关键 --verify

输出示例

MCPMAP - 256 targets scanned in 3.42s
────────────────────────────────────────────────────────────
192.168.1.10:3001 [CONFIRMED 100%]
  Server: filesystem-server/1.2.0 (MCP 2025-11-25)
  Capabilities: tools, resources
  Transport: SSE @ /mcp
  Origin: NOT VALIDATED (DNS rebinding risk)
  Tools: 5 discovered [HIGH RISK]
    - read_file [Medium] - Read file contents
    - write_file [High] - Write to files
    - delete_file [Critical] - Delete files
  Active Probe: Tier 2 executed, 3 findings
    MCP-008 [HIGH] Schema poisoning: parameter 'content_include_env_vars'
    MCP-010 [CRITICAL] Rug-pull: get_weather description changed after 3 calls
    MCP-012 [MEDIUM] analyze_data returned 102KB (threshold: 50KB)

192.168.1.15:8000 [LIKELY 75%]
  Server: unknown (MCP 2024-11-05)
  Capabilities: tools
  Transport: HTTP @ /
  Auth: Required (Bearer)
────────────────────────────────────────────────────────────
2 MCP servers | 1 confirmed | 1 likely | 1 auth required

选项

Scanning:
  -m, --mode <MODE>      fast | full | stealth         [default: fast]
  -p, --ports <PORTS>    port range (80,443 or 1-1000)
  -t, --threads <N>      concurrent threads            [default: 50]
      --timeout <SECS>   connection timeout             [default: 5]

Probing:
      --enumerate        list tools on confirmed servers
      --active           active security probing (safe, metadata-only)
      --probe-tools      call LOW-risk tools with test inputs
      --probe-medium     also call MEDIUM-risk tools (pentest only)
      --dry-run          show probe plan without executing
      --i-accept-risk    explicit consent for tool invocation
      --pin <FILE>       save tool/resource hashes
      --verify <FILE>    verify against a saved pin file

Output:
      --json             JSON output
  -W, --wide             wide table (grep-friendly)
  -q, --quiet            suppress progress output
  -v, --verbose          verbose (-v, -vv, -vvv)
Advanced options (see mcpmap --help)
Scanning:
      --deep-probe          try extra endpoints (/sse, /api/mcp, /v1/mcp)
      --scheme <S>          http | https | both         [default: both]
      --insecure            accept invalid TLS certs
      --max-targets <N>     max IP:port combinations    [default: 1000000]
      --rate-limit <N>      max req/sec (0 = unlimited) [default: 0]

Output:
      --show-all            include low-confidence results
      --min-confidence <N>  minimum confidence 0-100    [default: 0]

退出代码

代码 含义
0 成功
1 错误
2 Pin验证失败(--verify)

许可证

麻省理工学院