Skip to main content
Glama

ferret-den

An MCP server that exposes the Warren's reconnaissance kit under decoupled tool names to prevent false-positive model refusals.

CI WTFPL jobs shell stdio

den:whisker runs subfinder. den:fang runs nuclei. The agent sees the job. The binary name stays out of the catalog.

Why the Names · Architecture & Safety · Jobs · Installation · Configuration · License

Asked for subfinder. The ferret slides whisker under the door.


Why the Names

Frontier models and automated API moderation layers frequently trigger refusal reflexes on specific cybersecurity keywords (nuclei, subfinder, exploit, vulnerability scanner). When these names appear directly in an MCP server's tools/list catalog, models often refuse benign reconnaissance tasks (such as asset inventory or attack surface mapping) before evaluating the prompt context, target authorization, or input arguments.

ferret-den decouples tool definitions from binary execution:

  • The Agent View: The agent inspects den:* names paired with clear functional descriptions and typed schemas (e.g., den:whisker = "Finds subdomains").

  • The Process View: The local server translates valid calls into local binary invocations via argument arrays (subfinder, httpx, nuclei).

  • The Safety View: Destructive or active scanning actions are protected by explicit human confirmation gates (confirm: true), replacing brittle keyword blocking with real operational oversight.

This design reflects recent empirical research on agentic safety boundaries:

Renaming is not an exploit or a jailbreak. If a model determines that an underlying objective is harmful, it will still refuse. The renaming simply prevents surface-level lexical filters from blocking authorized, routine recon.


Related MCP server: PengStrike AI MCP

Architecture & Safety

  • No Shell Interpolation: All binaries are spawned directly using argument arrays via POSIX spawn. Shells (/bin/sh, cmd.exe) are never invoked, eliminating command injection risks.

  • Execution Timeouts: Kit jobs carry an enforced 120-second execution cap. den:denhome exits after 8 seconds.

  • Human Confirmation Gate: den:fang, den:raid, den:keeper, den:chatter, den:shadow, den:denhome, and den:sniff require confirm: true before execution begins.

  • External Binaries: The repository does not ship binaries. It invokes existing executables managed by pdtm in $PD_TOOLS_DIR (defaulting to $HOME/.pdtm/go/bin).


Jobs

The server exposes 22 discrete MCP tools. The primary nine jobs feature fully typed argument schemas, while utility tasks accept a target and an argument array.

MCP Tool Name

Underlying Binary

Functional Description

Execution Gate

den:whisker

subfinder

Discovers subdomains passively across public sources.

Standard

den:squeak

dnsx

Resolves hostnames and validates active DNS records. Accepts one or many record types via types: "A,AAAA,CNAME,MX,NS,TXT,PTR,SOA" (or recordType: "TXT"). Output is aggregated per requested type.

Standard

den:nose

httpx

Probes HTTP/HTTPS endpoints for status, title, and tech stack.

Standard

den:padlock

tlsx

Inspects TLS/SSL certificates, ciphers, and protocols.

Standard

den:scratch

naabu

Performs fast TCP port scanning.

Standard

den:tunnel

katana

Crawls web pages and JavaScript links.

Standard

den:rummage

shuffledns

Brute-forces domain resolution against wordlists.

Standard

den:fang

nuclei

Executes vulnerability and configuration template checks.

confirm: true

den:raid

chain

Runs subfinder, dnsx, naabu, then probes open ports with httpx, crawls with katana, and scans with nuclei.

confirm: true

den:keeper

pdtm

Fetches and updates kit members from the Warren.

confirm: true

den:expose

uncover

Discovers exposed assets and administrative panels via OSINT engines.

Standard

den:chatter

notify

Dispatches webhook and messaging notifications.

confirm: true

den:shadow

proxify

Intercepts and captures HTTP/HTTPS traffic.

confirm: true

den:scatter

chaos

Queries the Warren's curated threat-intelligence datasets.

Standard

den:cloak

cdncheck

Detects CDN, cloud provider, and WAF IP ownership.

Standard

den:range

asnmap

Maps ASN IP ranges and CIDR blocks.

Standard

den:mutate

alterx

Generates permutation lists of subdomains.

Standard

den:warren

mapcidr

Formats and expands CIDR blocks.

Standard

den:cloudkit

cloudlist

Enumerates assets across cloud infrastructure providers.

Standard

den:turf

tldfinder

Discovers top-level domains for a given entity.

Standard

den:denhome

simplehttpserver

Spawns a local testing file server that auto-terminates after 8 seconds.

confirm: true

den:muse

aix

Prompts the Warren's command assistants.

Standard

den:sniff

ffuf

Fuzzes URL paths/parameters for live endpoints (read-only, rate-limited, JSON results).

confirm: true

den:roster

internal

Returns the active tool mapping table from the running server.

Standard


Installation

One-shot: auto-installer (first-class)

scripts/install.ts installs every kit member the den:* jobs execute, so the server never fails on a missing member at call time. It reads src/den-names.ts as the source of truth and resolves members via PATH or ~/.pdtm/go/bin, fetching through the catalog manager (den:keeper) with a compile-from-source graft fallback for members the catalog dropped. The overlay is absolute: user-facing output speaks den names only — underlying tool and vendor identities are internal resolution constants. Internal composite workflows (den:raid, recon_workflow) are excluded — they are implemented in src/index.ts, not external binaries.

bun install                       # JS deps only
bun run install-bins              # install every missing kit binary
bun run check-bins                # verify only (exit 1 if anything missing)
bun run check-bins -- --quiet     # silent verify for CI / health checks

Safety note: the installer is explicit-only — the MCP server never auto-runs it. On missing binaries the server aborts loudly with the fix command; install passes run when an operator invokes them (or schedules them), never as an unscheduled side effect of startup.

Manual prerequisites (if you prefer)

The Warren's burrow URLs are internal constants — see the OVERLAY table in scripts/install.ts. A manual pass is just: install the catalog keeper from its burrow, run it with -install-all, and members land in ~/.pdtm/go/bin.

Server Setup

git clone https://github.com/toxicwind/ferret-den.git
cd ferret-den
cp .env.example .env
sh scripts/write-env.sh
sh scripts/link-bins.sh
bun install
bun src/index.ts

scripts/link-bins.sh generates the symlinks in the bin directory. The server exclusively accepts and processes den:* identifiers.

Configuration

Add the server to your MCP client configuration (for example claude_desktop_config.json):

{
  "mcpServers": {
    "den": {
      "command": "bun",
      "args": ["/path/to/ferret-den/src/index.ts"],
      "env": {
        "PD_TOOLS_DIR": "$HOME/.pdtm/go/bin"
      }
    }
  }
}

Repository Layout

  • src/index.ts: Primary MCP entrypoint; validates inputs and routes process execution.

  • src/den-names.ts: Static mapping between MCP identifiers and system binaries.

  • src/tools/: Type definitions and structured schemas for core tools.

  • src/tools/kit.ts: Argument forwarding and timeout wrappers for utility tools.

  • src/workflows/bug-bounty.ts: Pre-chained reconnaissance sequence (den:raid).

  • scripts/: Environment configuration and binary symlink scripts.

License

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to run bounded security reconnaissance tools against a local OWASP Juice Shop target via MCP, including HTTP checks, header inspection, Nmap scanning, and web enumeration, without granting arbitrary shell access.
    ISC
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to orchestrate 100+ security tools over MCP for authorized penetration testing, including recon, scanning, exploitation, attack-chain planning, and knowledge-base retrieval.
    6
    Apache 2.0