Raven Nest Mcp

io.github.tidynest由 GitHub 帳號 tidynest 發布v0.4.1更新於 Oct 24, 2026

AI-driven penetration testing - 22 security tools behind safety-hardened MCP endpoints

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

一個攻擊性安全 MCP 伺服器,讓 AI 助理執行 22 種滲透測試工具、記錄漏洞發現並產生報告。

可以做什麼
執行偵察與列舉工具,例如 nmap、masscan、subfinder、dnsx、whatweb,以及 katana 爬取和 enum4linux-ng、netexec(受限)的 SMB/AD 列舉。執行漏洞掃描與 Web 模糊測試工具,包括 nuclei、nikto、wpscan、dalfox、feroxbuster、ffuf,以及 sqlmap、hydra、john 等利用或破解工具。用 gitleaks、trufflehog 掃描機密,用 testssl.sh 檢查 TLS,或在啟用 MSF 的建置中操作 Metasploit 模組與工作階段。管理背景掃描(啟動、狀態、結果、清單、取消),儲存、列出、刪除漏洞發現並產生報告,支援掃描差異比對與依主機的發現追蹤。產生 Markdown、JSON、SARIF 或 HTML 格式報告,並透過唯讀資源瀏覽發現、報告與掃描。
適用情境
適用於對自有系統或已取得明確書面授權的系統進行授權滲透測試與安全評估,希望由助理驅動標準安全工具、留存發現紀錄並產出報告的情境。不適用於未經授權掃描第三方系統。
執行需求
以本機 stdio 程序執行。建議使用已發佈的 Docker 映像,其中在 Kali 基礎上打包了伺服器與全部 22 種工具;masscan 與 nmap 作業系統偵測需要 NET_RAW 與 NET_ADMIN 權限。從原始碼建置需要 Rust 1.93+ 並自行安裝外部工具。設定從 TOML 檔案讀取,可透過 RAVEN_CONFIG 環境變數指定路徑。Metasploit 支援需要啟用 MSF 的建置以及設定好的主機、連接埠與密碼。
安裝前請注意
這是攻擊性安全工具包:未經授權的掃描、列舉或利用可能違法,取得授權由你負責。許多工具會對目標主動探測、模糊測試、利用或破解憑證,發現、掃描與報告會寫入磁碟(預設輸出目錄在 /tmp 下)並記錄稽核日誌。部分工具可透過免密碼 sudo 執行,Metasploit 設定區段中包含密碼。預設映像不含 Metasploit;啟用受限的 netexec 或範圍限制等安全選項需自行設定。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Raven Nest Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Raven Nest MCP

[License: Apache-2.0] [CI] [Release] [MCP tools: 46] [MCP] [Canopii Trust Score]

A pentesting toolkit that runs as an MCP server, giving AI assistants structured access to industry-standard security tools through a safety-hardened interface.

Authorized use only. Raven Nest is an offensive-security tool intended solely for testing systems you own or have explicit written permission to assess. Unauthorized scanning, enumeration, or exploitation may be illegal. You are solely responsible for obtaining authorization and complying with all applicable laws. The software is provided "as is", without warranty of any kind - see LICENSE.

Demo

Real MCP traffic to the tools - no LLM in the loop, fully deterministic. Targets are the authorized public test hosts example.com / scanme.nmap.org.

Scan → structured finding → report

[Scan to structured finding to report]

Recon flow - connectivity, ports, web stack

[Recon flow: ping, nmap, whatweb]

Metasploit module discovery - requires an MSF-enabled build; the default container image excludes Metasploit

[Metasploit search and module info]

What It Does

Raven Nest wraps 22 security tools plus Metasploit Framework behind an MCP interface with input validation, output quality assessment, session-aware context budgeting, and configurable safety limits. It handles tool execution, restart-safe background scans (completed results survive a server restart; interrupted ones surface as failed), vulnerability finding persistence, target discovery tracking, scan diffing, and multi-format report generation (Markdown, JSON, SARIF, HTML). Findings, reports, and scans are also exposed as MCP resources for browsing. 46 MCP endpoints total.

Supported Tools

CategoryTools
Reconnmap, masscan, whatweb, httpx, subfinder, dnsx, dnsrecon
Crawlingkatana
SMB/ADenum4linux-ng
Credentialed enum (gated)netexec
Vulnerabilitynuclei, nikto, wpscan, dalfox (XSS)
Web fuzzingferoxbuster, ffuf
Exploitationsqlmap, hydra
Password crackingjohn
Secret scanninggitleaks, trufflehog
TLS/SSLtestssl.sh
Metasploitmsf_search, msf_module_info, msf_exploit, msf_auxiliary, msf_sessions, msf_post
Utilityping_target, http_request
Scan managementlaunch_scan, get_scan_status, get_scan_results, list_scans, cancel_scan
Findingssave_finding, get_finding, list_findings, list_findings_by_scan, delete_finding, generate_report
Engagementset_engagement, list_engagements
Discovery trackingget_target_info, list_targets, diff_scans

How It Fits Together

Raven Nest is an MCP server - it doesn't do anything on its own. An MCP host launches it over stdio and drives the tools. Pick whichever host suits you:

  • Any MCP host (recommended) - point Claude Desktop, Cursor, or any MCP client at the Docker image below; the host spawns the server for you.
  • Companion REPL - raven-nest-client is a TypeScript terminal client (tab-completion, scan/finding/report commands, engagement scoping) for driving Raven Nest by hand. It can launch either a local raven-server build or the Docker image.

The server is the same stdio binary in both cases.

Quick Start

Run with Docker (recommended)

The published image bundles raven-server and all 22 wrapped tools on a Kali base, so you don't have to install them yourself. Point your MCP client at it (stdio):

json
{  "mcpServers": {    "raven-nest": {      "command": "docker",      "args": ["run", "--rm", "-i", "ghcr.io/tidynest/raven-nest-mcp:latest"]    }  }}

masscan and nmap -O need raw sockets - append --cap-add=NET_RAW and --cap-add=NET_ADMIN to args if you use them (the container runs as a dedicated non-root user; the runtime grants those capabilities to the container process directly, so they keep working without root). The server is also listed on the MCP Registry as io.github.tidynest/raven-nest-mcp.

Prerequisites

  • Rust 1.93+ (2024 edition)
  • One or more external tools installed (nmap, nuclei, nikto, etc.)

Build

bash
cargo build --release

Configure your MCP client

Create .mcp.json in your project root (or configure your MCP client directly):

json
{  "mcpServers": {    "raven-nest": {      "command": "/path/to/raven-server",      "args": []    }  }}

The server communicates over stdio and requires no network ports.

Configuration

Raven Nest loads configuration from TOML, resolved in order:

  1. RAVEN_CONFIG environment variable (path to file)
  2. config/default.toml next to the binary
  3. config/default.toml in the working directory
  4. Built-in defaults

Key configuration sections:

toml
[safety]allowed_tools = ["nmap", "nuclei", "nikto", "whatweb", "masscan", ". . ."] context_budget = 65536          # Model context window in chars (0 = disabled)expected_tool_calls = 10        # Anticipated calls per sessionsudo_tools = ["masscan", "nmap"] # Tools invoked via passwordless sudo# auto_save_findings = false     # opt-in: auto-extract findings from scanners
[execution]default_timeout_secs = 600max_concurrent_scans = 3output_dir = "/tmp/raven-nest"
# [scope]                        # engagement authorization allowlist (deny-wins)# enabled = true# allowed_domains = ["example.com"]
# [network]# http_proxy = "http://127.0.0.1:8080"
# [metasploit]# enabled = true# host = "127.0.0.1"# port = 55553# password = "changeme"
# [netexec]                      # gated, read-only credentialed enumeration# enabled = true

See docs/USAGE.md for the full parameter reference and per-tool configuration options.

Safety Architecture

Every tool call passes through six layers:

  1. Allowlist -- only explicitly permitted tools can execute
  2. Input validation -- targets must be valid IPs, hostnames, CIDRs, or URLs; shell metacharacters are rejected
  3. Preset arguments -- users pick scan types, never raw CLI flags
  4. Execution containment -- configurable timeouts with kill_on_drop
  5. Output sanitisation -- ANSI stripping, truncation at configurable limits (UTF-8 safe)
  6. Quality assessment -- detects empty results, rate-limiting, and WAF blocks

Additional hardening:

  • Config validation at startup -- safety limits (sqlmap level/risk, hydra tasks, masscan rate) are range-checked; the server refuses to start with out-of-range values or default MSF credentials
  • Wordlist path validation -- hydra, john, feroxbuster, and ffuf only accept wordlists under /usr/share/, /usr/lib/, or the configured output_dir; path traversal (..) is rejected
  • Positional-argument guards -- free-text values passed to tools as positional arguments are charset-checked so they can't be re-parsed as flags: hydra service (lowercase/digits/hyphens) and form_params (no leading -, no control chars), sqlmap technique (subset of BEUSTQ), ffuf filter_size (digits/commas). Targets get the same treatment (-oN/tmp/evil is rejected as flag-like)
  • Port spec validation -- nmap and masscan port parameters accept only digits, commas, and hyphens
  • File permissions -- cookie files and scan spill files are created with 0o600 (owner-only)
  • Markdown escaping -- report generation escapes user-supplied finding fields to prevent markdown injection
  • Finding ID validation -- finding get/delete operations require valid UUID format, preventing path traversal
  • Engagement scope -- an optional authorization allowlist ([scope]): when enabled, every target must match an allowed CIDR/domain and must not match a denied one (deny wins); loopback is allowed unless disabled. http_request re-validates each redirect hop against the scope, so a redirect cannot escape it. Off by default
  • Audit logging -- every tool execution is appended to {output_dir}/audit.log with the tool, target, and redacted arguments
  • Proactive cooldown -- an optional min_exec_gap_ms spaces out consecutive tool launches so back-to-back aggressive tools don't trip a target's WAF or rate-limiter, and per_target_min_gap_ms does the same per host while independent targets proceed in parallel; complements the reactive WAF/rate-limit detection. Both off by default

Metasploit integration adds a 5-layer safety model: disabled by default, per-tool allowlisting, path-boundary module blocklist, exploit confirmation gate (double-call to execute), and session command filtering. Passwords are redacted from error messages, and TLS certificate bypass is restricted to localhost connections. See docs/METASPLOIT.md.

Tools requiring root (masscan, nmap OS detection) can be run via passwordless sudo without elevating the entire server. See sudo_tools in the configuration docs.

Context Budget

A session-aware context budget tracker dynamically adjusts per-tool output caps based on remaining context window space. This prevents context overflow on local AI models with limited context windows (49-64K tokens).

  • Full mode -- all findings, all details, up to 8K chars per tool call
  • Compact mode -- top-N results, critical/high findings only (triggers at 40% consumed)
  • Minimal mode -- one-line summaries (triggers at 70% consumed)

Parser result caps scale dynamically via scale_cap() -- each tool's output parser adjusts its result limit based on the active budget mode. All tool output passes through centralised ANSI stripping and budget-aware truncation in wrap_result().

When the budget is exhausted, the server returns a message directing the AI to save findings and generate a report rather than running additional scans.

Target Discovery Tracking and Scan Diffing

Every nmap result (run_nmap and background nmap scans) accumulates into a per-host discovery record: ports, states, services, versions, and OS guesses, with first/last-seen timestamps. Re-scanning merges rather than overwrites, so the record shows how the target evolved.

  • list_targets / get_target_info recall the tracked hosts and full per-host service tables without re-scanning.
  • diff_scans compares two completed nmap scans: added/removed hosts and ports, plus per-port state/service/version changes (open (ssh OpenSSH 8.9) → open (ssh OpenSSH 9.0)).
  • Discovery data is engagement-scoped like findings ({engagement}/targets/) and persists across restarts.

run_nmap and run_nuclei also attach machine-readable structured_content to their responses (hosts/ports/CVEs; findings list), uncapped by the context budget, so clients can process results without parsing prose.

Report Generation

The generate_report endpoint produces a structured report -- Markdown by default, or JSON, SARIF, or HTML via the format parameter -- containing:

  • Table of Contents with linked findings
  • Executive Summary with severity breakdown table and overall risk rating
  • Methodology section (PTES framework)
  • Tools Used (deduplicated from findings)
  • Scope & Timeline -- targets assessed and the engagement window, derived from the findings
  • Numbered Findings with severity, target, tool, CVSS score, CVE identifier, OWASP Top 10 category, evidence, and remediation guidance

The Markdown and HTML formats render the full narrative (table of contents, methodology, scope, generation timestamp); JSON and SARIF are structured envelopes for tooling. Findings support an owasp_category field for mapping vulnerabilities to the OWASP Top 10 (e.g. "A03:2021 Injection").

MCP Resources

Beyond tools, the server exposes its data as read-only MCP resources under the raven:// scheme, so a client can browse or attach them without a tool call:

  • raven://findings -- JSON index of every saved finding
  • raven://findings/{id} -- a single finding as JSON
  • raven://reports/{markdown|json|sarif|html} -- a report rendered on demand
  • raven://scans -- JSON index of background scans
  • raven://scans/{id} -- a scan's captured output

Each saved finding and tracked scan is also listed individually, so they show up as browsable entries in resource-aware clients.

Output Parsers

Every security tool has a structured output parser that extracts key data from raw tool output:

  • nmap -- XML parser with NSE script extraction (vulners CVEs by CVSS)
  • nuclei -- JSONL parser with severity filtering
  • nikto/feroxbuster/ffuf/masscan -- line-oriented parsers with configurable result caps
  • sqlmap -- injection type and parameter extraction
  • testssl -- vulnerability and certificate finding extraction
  • hydra/whatweb -- credential and technology identification
  • subfinder/dnsrecon/dnsx -- subdomain and DNS record extraction
  • httpx/katana -- HTTP fingerprint and crawled-endpoint extraction
  • dalfox/wpscan/enum4linux-ng/john -- structured finding extraction
  • netexec -- authentication verdict and per-host enumeration extraction

All parsers return Option<String> and fall back to raw output when parsing fails. Result limits scale dynamically based on the active budget mode.

Authenticated Scanning

The http_request tool maintains a shared cookie jar that persists within a session and across context clears (saved to disk). External subprocess tools (sqlmap, nikto, feroxbuster, etc.) do not share this jar -- pass cookies via each tool's cookie parameter.

Testing

381 unit and integration tests across 3 crates:

bash
cargo test --workspace
CrateTests
raven-core106
raven-report71
raven-server191
Integration13

A Python-based MCP integration test harness is also available:

bash
python3 -u tests/manual_test_harness.py all     # full suitepython3 -u tests/manual_test_harness.py phase0   # single phase

Project Structure

crates/  raven-core/     # Safety validation, subprocess execution, config (TOML),                  # scan manager (background scans with disk spill), audit log  raven-report/   # Finding types (with OWASP categories), file-per-finding                  # persistence, host/service discovery store (targets),                  # multi-format report generators (md/json/sarif/html)  raven-server/   # MCP server (rmcp), tool handlers (one module per tool),                  # context budget tracker, output parsers, progress ticker,                  # structured scan results, scan diffingconfig/  default.toml    # Default configuration  sudoers-raven-nest  # Sudoers drop-in for privilege escalationtests/  manual_test_harness.py  # MCP integration test harness

Documentation

License

Apache-2.0

來源:README.md,提交 b36a161

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.4.1最新Sep 21, 2026
  2. v0.3.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分