Skip to main content
Glama
Kali MCP

Kali MCP

Kali MCP

Kali MCP exposes 81 security tools to AI applications through the Model Context Protocol (MCP). It supports network and web scanning, source-code analysis, API testing, forensics, and OWASP ZAP workflows.

License: MIT Python 3.10+ MCP 1.x

Contents

Related MCP server: Kali Linux MCP Server

Features

  • 81 MCP tools across 13 categories.

  • Stdio, Streamable HTTP, and legacy SSE transports.

  • Optional token authentication and HTTPS support.

  • Subprocess timeouts, argument validation, and command restrictions for the shell fallback.

  • Headless OWASP ZAP integration for crawling, scanning, alerts, and reports.

  • An AMD64 Kali Docker image with isolated Python environments and Java 21.

Requirements

Deployment

Requirements

Docker

Git, Bash, Docker Engine or Docker Desktop, and internet access for image builds

Local

Python 3.10+, Kali Linux or the required CLI tools installed on PATH

Local ZAP

zaproxy and a Java 17 or 21 JVM

The Docker image targets linux/amd64. Other architectures require AMD64 emulation. On Windows, run the helper in WSL2 with Docker integration enabled.

Allow at least 20 GB of free Docker storage for the image and build cache. First builds download roughly 1.6 GB of apt packages plus the base image and Python/npm dependencies, and can take many minutes. Scanners may also download vulnerability databases, rules, or datasets at runtime.

Installation

Clone the repository:

git clone https://github.com/DansPK/kali-mcp-server.git
cd kali-mcp-server

Docker

Confirm Docker is accessible, then build the image:

docker info
./docker-run.sh build

This creates kali-mcp:latest. To build directly with detailed output:

docker build --platform linux/amd64 --progress=plain -t kali-mcp:latest .

Optionally create the kali-worker:1.0 tag:

./docker-run.sh release

release tags the current image; it does not run verification or push to a registry. Installed package versions are recorded inside the image under /opt/kali-versions/. The base image is pinned by digest, but Kali snapshot packages can change between releases.

Local

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

This installs the kali-mcp entrypoint and the MCP Python dependency (mcp>=1.9,<2). Install the security tools you need separately; the Python package does not install their executables.

Quickstart

Stdio

Stdio is the default transport for both local and Docker deployments. An MCP client launches the process and communicates through stdin/stdout.

# Docker
./docker-run.sh run

# Local
kali-mcp

The equivalent Docker command is:

docker run --rm -i --platform linux/amd64 \
  --cap-add=NET_ADMIN --cap-add=NET_RAW \
  kali-mcp:latest

Keep -i enabled for stdio. The helper also persists scanner caches and Nuclei templates in Docker volumes. Compose uses stdio as well:

docker compose run --rm kali-mcp

Streamable HTTP

Run the container on host port 8096:

docker run --rm --name kali-mcp-http --platform linux/amd64 \
  -p 8096:8080 \
  --cap-add=NET_ADMIN --cap-add=NET_RAW \
  -e KALI_MCP_AUTH_TOKEN=change-me \
  kali-mcp:latest \
  -t streamable-http -H 0.0.0.0 -p 8080

Connect your client to http://localhost:8096/mcp with Authorization: Bearer change-me. Replace change-me with your own token. The container listens on port 8080; Docker publishes it on host port 8096.

For a local installation:

KALI_MCP_AUTH_TOKEN=change-me kali-mcp \
  -t streamable-http -H 0.0.0.0 -p 8096

Transport reference

Transport

Flag

Endpoint

Stdio

-t stdio (default)

stdin/stdout

Streamable HTTP

-t streamable-http or -t http

/mcp

Legacy SSE

-t sse

/sse and /messages/

For HTTPS, pass --ssl-certfile cert.pem --ssl-keyfile key.pem with a network transport. The https transport alias alone does not enable TLS.

Client configuration

For clients that accept an mcpServers configuration, launch the Docker image over stdio:

{
  "mcpServers": {
    "kali": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i", "--platform", "linux/amd64",
        "--cap-add=NET_ADMIN", "--cap-add=NET_RAW",
        "kali-mcp:latest"
      ]
    }
  }
}

For a local stdio server, use the absolute path to .venv/bin/python as the command and ["-m", "kali_mcp.server"] as its arguments.

For HTTP clients, configure the URL http://localhost:8096/mcp and the authentication header used above. Client-specific configuration formats may differ.

The repository includes a command-line client. After local installation, list tools on the HTTP server:

python client/kali_mcp_client.py \
  -t streamable-http -u http://localhost:8096/mcp \
  --auth-token change-me --list

See client/README.md for interactive usage and tool calls.

Configuration

CLI arguments override the corresponding environment defaults. --url overrides the bind host and port; its path does not change the /mcp endpoint.

CLI argument

Environment variable

Default

--transport, -t

KALI_MCP_TRANSPORT

stdio

--host, -H

KALI_MCP_HOST

127.0.0.1

--port, -p

KALI_MCP_PORT

8080

--url, -u

KALI_MCP_URL

Unset

--auth-token

KALI_MCP_AUTH_TOKEN

Unset

--ssl-certfile

KALI_MCP_SSL_CERTFILE

Unset

--ssl-keyfile

KALI_MCP_SSL_KEYFILE

Unset

KALI_MCP_URL supplies the bind host/port when KALI_MCP_HOST and KALI_MCP_PORT are unset. Network services inside Docker must bind to 0.0.0.0 to accept connections through published ports.

Authentication

When a token is configured, tools/list and tools/call requests must authenticate using one of:

  • HTTP header: Authorization: Bearer <token> or X-Auth-Token: <token>.

  • Request metadata on any transport: params._meta.auth_token.

Missing or incorrect tokens return MCP error code -32001. Without a configured token, authentication is disabled. The bundled client supports --auth-token for all transports.

Results and ZAP

Environment variable

Default

Purpose

KALI_MCP_JSON_RESPONSE

true

Use JSON responses for Streamable HTTP; avoids SSE event-size limits in some clients

KALI_MCP_MAX_RESULT_BYTES

0

Cap a tool result in bytes; 0 is unlimited. Overflow includes a truncation marker and a server-side file containing the full result

KALI_ZAP_HOST

127.0.0.1

ZAP daemon address

KALI_ZAP_PORT

8090

ZAP daemon port

ZAP starts automatically when needed and is reused across calls. Use zap_stop to shut it down. The Docker image includes ZAP, Java 21, Chromium, and its matching driver.

Available tools

See TOOLS.md for the complete tool reference.

Category

Tools

Network

nmap, masscan, netcat, tcpdump, arp_scan, onesixtyone, dnsrecon, tshark, naabu

Web

sqlmap, nikto, gobuster, dirb, wpscan, ffuf, nuclei, whatweb, wfuzz, xsser, commix, httpx_probe, testssl, katana, arjun, dalfox

Source

semgrep, gitleaks, trivy

API

schemathesis, newman

OWASP ZAP

zap_start, zap_stop, zap_status, zap_spider, zap_active_scan, zap_scan, zap_alerts, zap_report, zap_context, zap_openapi_import, zap_ajax_spider

Password

hydra, john, hashcat, crunch

Recon

enum4linux, searchsploit, subfinder, amass, exiftool, theHarvester, smbclient

Metasploit

msfconsole, msfvenom, msfdb, msf_search, msf_info, msf_resource

Evasion

evasive_payload, list_payloads, list_encoders, list_encryption, shellcode_to_exe

Forensics

binwalk, volatility, foremost, steghide

Post-Exploit

crackmapexec, evil_winrm, chisel

Misc

aircrack_ng, responder, impacket, mimikatz, bettercap, hash_identifier, cewl, proxychains, wifite, reaver

Meta

run_command

Scan local files with Docker

Mount your project and pass its container path to tools such as semgrep, gitleaks, or trivy:

docker run --rm -i --platform linux/amd64 \
  -v "$PWD/project:/workspace:ro" kali-mcp:latest

For example, call semgrep with {"path":"/workspace"}. Files referenced by tool arguments must exist in the server's filesystem.

Volatility uses the Volatility 3 vol CLI with namespaced plugins such as windows.pslist. Mimikatz lists packaged Windows resources; execution requires Windows. Physical wireless devices, GPUs, and Windows/AD workflows require additional environment-specific setup.

Web and API workflows

Start with katana to discover URLs and browser XHR endpoints, use arjun to find hidden parameters, then pass selected URLs to dalfox, nuclei, or other targeted scanners. headers accepts an object containing target authentication headers. Katana and Dalfox default to five requests per second; Arjun uses a single worker and a 0.2-second delay. opts supports advanced CLI settings.

Example MCP tool arguments:

{
  "url": "http://app.example.test",
  "headless": true,
  "depth": 3,
  "headers": {"Authorization": "Bearer target-token"},
  "rate_limit": 5,
  "timeout": 300
}

Call katana with the object above. Its JSON lines omit raw request/response bodies. Call arjun with url, optional method (GET, POST, JSON, or XML), and an optional local parameter wordlist. Call dalfox with url, optional parameters, headers, and body; its JSON report preserves finding confidence and scan-completeness metadata. Complete Dalfox findings are successful MCP results; execution failures remain errors.

For API regression and stateful testing, call schemathesis:

{
  "schema": "/workspace/openapi.json",
  "base_url": "http://api.example.test",
  "headers": {"Authorization": "Bearer target-token"},
  "include_methods": ["GET", "POST"],
  "phases": ["examples", "fuzzing", "stateful"],
  "max_examples": 50,
  "seed": 42,
  "report_dir": "/workspace/reports",
  "rate_limit": "5/s",
  "timeout": 600
}

report_dir receives JSON verdicts, HAR request recordings, and JUnit reports. Mount a writable report directory when using Docker. include_paths selects exact OpenAPI paths; basic_auth and checks are also available. Existing schema/opts calls remain supported. Schemathesis assertion failures return MCP errors with the report paths.

For ZAP, create a zap_context with a unique name, target base URL, optional excluded URL regexes, and authentication settings. Use its returned context_id and user_id with zap_spider, zap_active_scan, or zap_scan. Authentication method and credential parameters follow the installed ZAP API, for example:

{
  "name": "staging-user",
  "url": "http://app.example.test",
  "exclude": [".*/logout.*"],
  "authentication_method": "jsonBasedAuthentication",
  "authentication_params": {
    "loginUrl": "http://app.example.test/login",
    "loginRequestData": "{\"username\":\"{%username%}\",\"password\":\"{%password%}\"}"
  },
  "user_name": "scanner",
  "credentials": {"username": "scanner", "password": "target-password"},
  "logged_in_regex": "Welcome",
  "logged_out_regex": "Please login"
}

Use zap_openapi_import to import an API definition from a URL or local file, with optional base_url, context_id, and user_id. For JavaScript-rendered pages, use zap_ajax_spider with optional context_name and user_name. AJAX crawling returns endpoint summaries for the target subtree, runs one crawl per daemon, and stops on timeout. ZAP keeps authentication contexts until its daemon is stopped.

The image pins Katana 1.8.0, Dalfox 3.2.4, and Arjun 2.2.7. Upstream binary archives are verified against SHA-256 checksums; versions are recorded under /opt/kali-versions/.

Project structure

src/kali_mcp/
├── server.py       # CLI, transports, authentication, and MCP handlers
└── tools/          # Tool schemas, argument builders, and execution gateway
client/             # Cross-platform MCP command-line client
docker/             # Pinned dependencies and container launcher adjustments
Dockerfile          # AMD64 Kali image
docker-compose.yml  # Stdio service and cache volumes
docker-run.sh       # Build, run, release-tag, and Compose helper
TOOLS.md            # Tool reference

Troubleshooting

Problem

Action

Docker is unavailable

Run docker info; start the daemon or correct socket access

Build downloads fail

Check access to Docker Hub, kali.download, PyPI, and npm, then rerun the build

Image export takes a long time

Allow several minutes for large layers and check free Docker storage

HTTP client cannot connect

Check the published port, -t streamable-http, and the container's -H 0.0.0.0 setting

Tool reports an authentication error

Match the client token to the server's configured token

Local tool executable is missing

Install the corresponding utility and make it available on PATH, or use Docker

Stdio client hangs

Keep Docker stdin open with -i and configure the process in an MCP client

Some tools need network capabilities; the helper grants NET_ADMIN and NET_RAW. Amass downloads address datasets on first use for actual operations; help and version commands skip those downloads.

Contributing

Open an issue for bugs or feature requests, or submit a pull request with a description of the change. Follow AGENTS.md for repository conventions.

New tool wrappers belong in the appropriate module under src/kali_mcp/tools/. Register each schema in its module's TOOLS list and its handler in DISPATCH. Run subprocesses through the execution helpers in tools/base.py.

Responsible use

Use Kali MCP only on systems you own or have explicit permission to assess. Users are responsible for complying with applicable laws and regulations.

License

Licensed under the MIT License.

Available Tools

59 tools
aircrack_ngA

WiFi security auditing tool — cracks WEP, WPA/WPA2-PSK, and WPA3 keys from captured wireless traffic. Requires a .cap capture file containing the 4-way handshake (for WPA) or enough IVs (for WEP). For capturing handshakes and automating attacks, use wifite. For WPS attacks, use reaver. Output: cracked WiFi password/key on success.

Inputs: capture_file (required), opts, wordlist.

amassA

Comprehensive network mapping and attack surface discovery using OSINT and active techniques. Discovers subdomains, IP ranges, ASNs, and related domains. Use for deep domain mapping — combines passive (OSINT) and active (DNS brute-force) methods. More thorough than subfinder but slower. Use subfinder for quick passive-only results. Output: discovered assets with their sources and relationships.

Inputs: domain (required), mode, opts.

arp_scanA

ARP-based host discovery on a local network segment. Sends ARP requests and identifies live hosts by MAC address and vendor. Use for initial reconnaissance of a local subnet — faster and more reliable than nmap ping scans on the same LAN. Output: IP address, MAC address, and OUI vendor name for each responding host.

Inputs: target (required), opts, iface.

bettercapA

Real-time MITM attack framework with modular caplets. Performs ARP spoofing, DNS spoofing, HTTP/HTTPS traffic manipulation, credential sniffing, and session hijacking. Use for man-in-the-middle attacks on a local network segment. Output: real-time captured credentials, session cookies, and traffic logs.

Inputs: opts, iface, caplet.

binwalkA

Firmware analysis tool — scans binary files for embedded file signatures, compressed data, and filesystem structures. Automatically extracts discovered files when using -e. Use for reverse engineering firmware images, IoT device binaries, or any blob that may contain embedded files. Output: offset map of discovered signatures and extracted file paths.

Inputs: filepath (required), opts.

cewlA

Custom wordlist generator that spiders a website and extracts words from its content. Creates targeted password lists based on the vocabulary actually used by the target organization. Use to generate wordlists for password attacks when you have a target website. For generating wordlists from character sets and patterns (not website content), use crunch. Output: list of extracted words, optionally saved to a file for use with hydra, john, or hashcat.

Inputs: url (required), opts, depth, outfile, +1 more.

chiselA

Fast TCP/UDP tunnel over HTTP/HTTPS — ideal for pivoting through firewalls and NAT. Single binary for both client and server. Encapsulates TCP connections inside HTTP WebSocket streams. Use to tunnel traffic from an internal network through a compromised host to your attack machine. Run server on your attack box, client on the pivot host with reverse port forwarding. Output: connection status and tunnel statistics.

Inputs: command (required), opts, port, socks, +1 more.

commixA

Automated OS command injection detection and exploitation tool. Tests for shell command injection in HTTP parameters, headers, cookies, and POST data. Use when sqlmap confirms the parameter is NOT SQL injectable but may still be vulnerable to command injection. Supports multiple injection techniques: results-based, blind, time-based. Output: confirms injection, shows OS type, and provides an interactive pseudo-shell on success.

Inputs: url (required), opts.

crackmapexecA

Swiss army knife for pentesting Windows/Active Directory environments. Enumerates and exploits SMB, WinRM, MSSQL, RDP, SSH, and FTP services across multiple hosts. Supports pass-the-hash, Kerberos auth, and module execution (lsassy, mimikatz, spider_plus, etc.). Use as the PRIMARY post-exploitation tool against Windows networks when you have credentials. For interactive WinRM shells, use evil_winrm. For detailed SMB enumeration, use enum4linux. Output: per-host results with authentication status, shares, logged-on users, and module output.

Inputs: target (required), opts, user, module, +3 more.

crunchA

Wordlist generator — creates custom password lists based on character sets, length ranges, and patterns. Use to generate targeted wordlists when you know password policy (min/max length, required characters). For generating wordlists from website content (password profiling), use cewl instead. Output: wordlist printed to stdout or written to a file.

Inputs: max_len (required), min_len (required), opts, output, +1 more.

dirbA

Classic web content scanner using dictionary-based attacks to find hidden directories and files. Simpler than gobuster — good for quick scans with built-in wordlists. Use when you want a straightforward directory scan without configuring many options. Output: list of found paths with HTTP response codes. Non-recursive by default.

Inputs: target (required), opts, wordlist.

dnsreconA

DNS enumeration tool — performs zone transfers, brute-force subdomain discovery, reverse lookups, and DNS record enumeration (A, AAAA, MX, NS, SOA, TXT, SRV). Use when you have a domain and need to map its DNS footprint. For passive subdomain discovery across many sources, prefer subfinder. Output: DNS records organized by type with associated IPs and hostnames.

Inputs: domain (required), opts.

enum4linuxA

Windows/Samba enumeration tool. Extracts user lists, shares, groups, password policies, and OS information from SMB services (ports 139/445). Use for Windows domain reconnaissance without authentication. For more advanced AD enumeration with credentials, use crackmapexec or impacket modules. Output: structured enumeration data including RID-cycled user lists and accessible shares.

Inputs: target (required), opts.

evasive_payloadA

Advanced payload crafter for anti-virus evasion. Applies multiple evasion layers: polymorphic encoding (shikata_ga_nai, xor), encryption (AES256, RC4), template injection into legitimate executables (putty, plink), process migration on execution, bad character avoidance, and obfuscation padding. Use INSTEAD of msfvenom when AV evasion is needed. Use msfvenom for simple/standard payload generation. Output: saved payload file path with size, plus any msfvenom warnings about the chosen configuration.

Inputs: lhost (required), lport (required), payload (required), fmt, +11 more.

evil_winrmA

Windows Remote Management (WinRM) shell client. Provides an interactive PowerShell session on port 5985 (HTTP) or 5986 (HTTPS) with pass-the-hash support. Use when you have valid Windows credentials and WinRM is enabled (common on servers). For non-interactive WinRM command execution or multi-host testing, use crackmapexec with winrm protocol. Output: interactive PowerShell session output.

Inputs: user (required), target (required), opts, port, +2 more.

exiftoolA

Read, write, and edit metadata embedded in files — images, PDFs, Office documents, audio, video. Use to extract hidden information: GPS coordinates from photos, author names from documents, software versions from PDFs, or creation timestamps. Output: all metadata fields with their values. Can also strip or modify metadata.

Inputs: filepath (required), opts.

ffufA

Extremely fast web fuzzer written in Go. Supports directory discovery, virtual host enumeration, GET/POST parameter fuzzing, header fuzzing, and more. Use for high-performance fuzzing tasks. Place 'FUZZ' keyword in the target URL where fuzzing should occur. For simpler directory scans, use gobuster or dirb. For HTTP parameter brute-force, wfuzz has more features. Output: matched URLs with status codes and response sizes.

Inputs: target (required), wordlist (required), opts, match_code.

foremostA

File carving tool — recovers deleted files from disk images and raw data by searching for file headers, footers, and data structures. Supports common formats: images, documents, archives, executables. Use for data recovery from formatted drives, corrupted media, or when filesystem metadata is lost. Output: recovered files organized by type in the output directory.

Inputs: filepath (required), opts, output_dir.

gobusterA

Fast multi-mode brute-force tool: directory/files (dir), DNS subdomains (dns), virtual hosts (vhost), and fuzzing. Use for discovering hidden paths and subdomains. Written in Go — faster than dirb. For pure directory brute-force, dirb is simpler. For parameter/header fuzzing, use ffuf. Output: discovered paths/subdomains with HTTP status codes.

Inputs: target (required), wordlist (required), mode, opts.

hashcatA

World's fastest GPU-accelerated password cracker with 300+ hash type modes. Use for high-performance cracking of large hash sets. REQUIRES the mode number matching the hash type. For CPU-only or auto-detect cracking, use john instead. Use hash_identifier first if unsure of hash type. Output: cracked hashes with their plaintext passwords. Status lines show cracking speed and progress.

Inputs: hashfile (required), wordlist (required), mode, opts.

hash_identifierA

Hash type identification tool. Analyzes a hash string and determines which algorithm(s) likely produced it (MD5, SHA1, SHA256, NTLM, bcrypt, etc.). Use BEFORE attempting to crack a hash — you must know the hash type to select the correct mode in hashcat or format in john. Output: list of possible hash types ranked by likelihood with the corresponding hashcat mode and john format.

Inputs: hash_str, hashfile.

hydraA

Fast network login brute-force tool supporting 50+ protocols (SSH, FTP, HTTP, RDP, SMB, MySQL, etc.). Use for testing password strength on network services. Specify the target service and provide user/password lists. For offline hash cracking, use john or hashcat instead. Output: found credentials in login:password format, or 'no valid credentials found'.

Inputs: target (required), service (required), passlist (required), userlist (required), +1 more.

impacketA

Collection of Python tools for Windows network protocols. Includes secretsdump (dump credentials remotely), psexec (remote command execution), wmiexec (WMI shell), GetNPUsers (AS-REP roasting), GetUserSPNs (Kerberoasting), and many more. Use for post-exploitation Windows/AD operations when you have credentials. Output: varies by module — dumped hashes, command output, or shell access.

Inputs: module (required), target (required), opts.

johnA

John the Ripper — offline password hash cracker. Supports hundreds of hash formats with auto-detection. Use for cracking password hashes extracted from /etc/shadow, SAM databases, or captured network hashes. CPU-based — better for smaller hash sets or when GPU is unavailable. For GPU-accelerated cracking of large hash sets, prefer hashcat. Output: cracked passwords with their corresponding hashes.

Inputs: hashfile (required), fmt, opts, wordlist.

list_encodersA

List all available msfvenom encoders with their ranks and descriptions. Use to find the best encoder for your target architecture. Filter by platform or architecture to see relevant encoders only. Output: table of encoder names with ranks (excellent, great, good, normal, manual) and descriptions.

Inputs: arch, platform.

list_encryptionA

List available msfvenom encryption/encoding formats (aes256, rc4, xor, base64, etc.). Use to see what encryption options are available for payload generation. Output: list of supported encryption methods.

Inputs: no named parameters.

list_payloadsA

List all available msfvenom payloads with descriptions. Use BEFORE generating a payload to find the correct payload name for your target platform and connection type. Filter by platform (windows, linux, android), architecture (x86, x64), or keyword (reverse_tcp, bind, meterpreter). Output: table of payload names with descriptions, organized by platform.

Inputs: arch, keyword, platform.

masscanA

Ultra-fast asynchronous TCP port scanner. Use when you need to scan large IP ranges (entire subnets or the internet) for open ports. Much faster than nmap for bulk scanning but does NOT provide service/version detection. Typical workflow: masscan to find open ports, then nmap on those ports for details. Output: list of open ports with optional banner grab.

Inputs: target (required), rate, ports.

mimikatzA

Windows post-exploitation tool for extracting plaintext passwords, NTLM hashes, Kerberos tickets, and PINs from memory (LSASS). Use on a compromised Windows system to dump credentials. Output: extracted credentials in structured format — usernames, domains, passwords/hashes.

Inputs: opts.

msfconsoleA

Metasploit Framework console — the primary interface for running exploit, auxiliary, post-exploitation, and payload modules. Use to execute exploits, scan with auxiliary modules, or run post-exploitation tasks. For generating standalone payloads without the console, use msfvenom. For searching modules without opening console, use msf_search. Output: module output, exploit results, or session information.

Inputs: command (required), opts, resource_file.

msfdbA

Metasploit database management. Controls the PostgreSQL database used by Metasploit for storing host data, service info, credentials, and loot from scans and exploits. Run 'init' before first use, 'start' to launch the DB, 'status' to check if running. Output: status messages about database state.

Inputs: opts, command.

msf_infoA

Display detailed information about a specific Metasploit module: description, available options, required settings, supported targets, and references. Use after msf_search to understand what a module does and what parameters it needs before running it. Output: module metadata, option table (name, current setting, required, description), and references.

Inputs: module_path (required).

msf_resourceA

Execute a Metasploit resource script (.rc file) — batch automation for multi-step Metasploit operations. Use for running pre-written attack sequences, setting up multi-handlers, or automating complex module chains. Resource files contain msfconsole commands (one per line) executed sequentially. Output: combined output of all commands in the script.

Inputs: script_path (required).

msfvenomA

Metasploit payload generator — creates shellcode and executables from payloads. Use for generating standalone payloads (reverse shells, meterpreter, etc.) in various formats. For AV-evasion with encoding, encryption, and template injection, use evasive_payload instead. Output: generated payload in the requested format, or list of available payloads/encoders.

Inputs: payload (required), fmt, arch, opts, +8 more.

netcatA

TCP/UDP connection utility — connect to services, create listeners, transfer files, or spawn shells. Use for quick service banner grabs, port connectivity tests, or setting up reverse/bind shells. For structured service enumeration, prefer nmap. For raw packet analysis, use tcpdump/tshark.

Inputs: host (required), port (required), connect.

niktoA

Web server vulnerability scanner — checks for 6700+ known issues: outdated server software, dangerous files/CGIs, default credentials, and server misconfigurations. Use early in web recon to find low-hanging vulnerabilities. Does NOT exploit — only reports. For modern CVE-based scanning, use nuclei. For WordPress-specific, use wpscan. Output: categorized list of findings with severity.

Inputs: host (required), opts, port.

nmapA

Primary network scanner for host discovery, port scanning, service/version detection, and OS fingerprinting. Use this FIRST on any target to understand what's running. Returns open ports with service banners and detected OS. For fast bulk port scanning across many hosts, use masscan instead. For live host discovery on a local subnet, use arp_scan.

Inputs: target (required), opts, ports.

nucleiA

Modern template-based vulnerability scanner with thousands of community-maintained YAML templates. Detects CVEs, misconfigurations, exposed panels, default credentials, and more. Use as your primary vulnerability scanner after discovering services. Much faster and more current than nikto. Output: vulnerability name, severity, matched endpoint, and remediation reference.

Inputs: target (required), opts.

onesixtyoneA

Fast SNMP scanner — discovers SNMP-enabled devices and tests community strings. Use when you suspect SNMP is running (port 161 UDP) and want to find readable community strings (public, private, or custom). Much faster than snmpwalk for initial discovery. Output: list of IPs with their valid community strings and system descriptions.

Inputs: target (required), opts, community.

proxychainsA

Proxy wrapper — forces any TCP-based tool's connections through a chain of proxies (Tor, SOCKS4/5, HTTP proxies). Reads proxy configuration from /etc/proxychains4.conf. Use to route tools through a pivot host (after setting up chisel or SSH tunneling) or through Tor for anonymity. Wrap any command: proxychains nmap -sT target.com Output: the wrapped tool's normal output, plus proxy chain connection debug info.

Inputs: command (required), opts.

reaverA

WPS (WiFi Protected Setup) brute-force attack tool. Exploits the WPS PIN vulnerability to recover the WPA/WPA2 passphrase without needing a captured handshake. Use when the target AP has WPS enabled (many do by default). For full WiFi attack automation including WPA handshake capture, use wifite. Output: WPA PSK (password) and AP details on success, or PIN attempt progress.

Inputs: bssid (required), interface (required), opts, channel.

responderA

LLMNR, NBT-NS, and mDNS poisoner. Responds to name resolution requests on the local network and captures NTLMv2 password hashes from Windows systems. Use on internal network assessments to capture credentials when systems attempt to resolve names. Run on a network interface with an IP on the target subnet. Output: captured NTLMv2 hashes that can be cracked with hashcat (mode 5600).

Inputs: interface (required), opts.

run_commandA

Execute an arbitrary command on the Kali system. Use ONLY as a fallback when the specific tool you need is not available as a dedicated MCP tool. The command is parsed into arguments and runs with safety restrictions — dangerous commands (rm, dd, shutdown, etc.) are blocked. Prefer the dedicated tool functions whenever possible for better parameter validation and structured output. Output: command stdout and stderr output.

Inputs: command (required), timeout.

searchsploitA

Command-line interface to the Exploit Database. Search for public exploit code by software name, version, CVE number, or vulnerability description. Use after identifying software versions (from nmap, whatweb, etc.) to find available exploits. Output: exploit title, path, and sometimes the exploit file content. Pair with msf_search for Metasploit module equivalents.

Inputs: query (required), opts.

shellcode_to_exeA

Convert raw shellcode from a file into a Windows executable. Use when you have shellcode from another source (Cobalt Strike, custom C code, or extracted from malware) and need to package it as an EXE for execution. Output: path to the generated executable file.

Inputs: shellcode_file (required), arch, outfile.

smbclientA

SMB/CIFS client — connects to Windows file shares for browsing, downloading, and uploading files. Use to access SMB shares with or without credentials (anonymous/null session). For SMB vulnerability scanning, use nmap or crackmapexec. For automated share enumeration, use enum4linux. Output: directory listings, file contents, or confirmation of upload/download.

Inputs: target (required), opts, user, share, +2 more.

sqlmapA

Automated SQL injection detection, exploitation, and data extraction. Use when you find a URL parameter that may be injectable. Handles detection, database fingerprinting, data dumping, and even OS shell access via SQLi. Output: confirms injectable parameters, database type/version, and extracted data. For command injection (not SQL), use commix. For XSS, use xsser.

Inputs: url (required), opts.

steghideB

Steganography tool — hides data within image (JPEG, BMP) and audio (WAV, AU) files, or extracts hidden data from them. Uses passphrase-protected embedding. Use to detect hidden messages in files (CTF challenges) or to conceal data. Output: embedded file confirmation or extracted hidden content.

Inputs: opts, command, cover_file, embed_file, +2 more.

subfinderA

Passive subdomain discovery using multiple online sources (certificate transparency, search engines, DNS datasets). No direct DNS queries — completely passive and undetectable. Use for initial domain reconnaissance to map external attack surface. For active DNS brute-force and zone transfers, use dnsrecon. For deeper OSINT, use amass. Output: list of discovered subdomains.

Inputs: domain (required), opts.

tcpdumpA

Real-time packet capture on a network interface. Use for live traffic monitoring, debugging connectivity, or capturing evidence of network activity. For deeper protocol analysis and display filtering, use tshark. Output: raw packet headers (IP, TCP/UDP, payload snippets). Requires root/privileged access.

Inputs: filt, count, interface.

theHarvesterA

OSINT tool for harvesting emails, names, subdomains, IPs, and URLs from public sources (Google, Bing, LinkedIn, Shodan, PGP key servers, and 20+ others). Use for early reconnaissance to identify employee email patterns, exposed services, and related domains. Output: organized results by source — emails, hosts, IPs, and URLs.

Inputs: domain (required), opts, limit, source.

tsharkA

Command-line Wireshark — captures and deeply analyzes network traffic with full protocol dissection. Use for detailed traffic analysis, extracting specific protocol fields, or analyzing pcap files. Superior to tcpdump for protocol decoding and display filters. Can read pcap files or capture live. Output: detailed packet summaries with protocol-specific fields.

Inputs: filt, opts, count, iface, +1 more.

volatilityA

Memory forensics framework for analyzing RAM dumps. Extracts running processes, network connections, loaded DLLs, registry hives, injected code, and malware artifacts from memory images. Requires a memory profile matching the source OS version. Output: structured forensic data — process trees, network sockets, registry keys, or flagged anomalies.

Inputs: image (required), plugin (required), opts, profile.

wfuzzA

Feature-rich web application brute-forcer. Fuzzes URLs, POST data, headers, cookies, and authentication. Use for parameter discovery, login brute-force, header injection testing, and custom fuzzing scenarios. More flexible than ffuf for complex fuzzing (multi-point injection, encoders, auth handling). Output: requests with their response codes, line/word/char counts.

Inputs: target (required), wordlist (required), opts, filter_code.

whatwebA

Passive web technology fingerprinting. Identifies CMS (WordPress, Joomla, Drupal), web frameworks, JavaScript libraries, analytics platforms, CDNs, server software, and more. Use FIRST on any web target to understand the tech stack before running specialized tools. Output: structured list of identified technologies with version numbers where available.

Inputs: target (required), opts.

wifiteA

Automated wireless attack tool. Handles the full WiFi cracking workflow: interface setup, target scanning, WPA handshake capture, WEP cracking, and WPS PIN attacks — all with minimal user interaction. Use as the primary wireless attack tool for streamlined WiFi security testing. For manual control over individual steps, use aircrack_ng directly. For WPS-specific attacks, use reaver. Output: real-time attack progress and recovered passwords.

Inputs: opts.

wpscanA

Dedicated WordPress security scanner. Enumerates installed plugins, themes, users, and checks for known vulnerabilities in all of them. Use ONLY when the target is confirmed to be WordPress (verify with whatweb first). Output: WordPress version, vulnerable plugins/themes with CVE references, enumerated usernames.

Inputs: url (required), opts.

xsserA

Cross-Site Scripting (XSS) detection and exploitation framework. Tests for reflected, stored, and DOM-based XSS. Use when you find user input reflected in page output. Automatically encodes payloads to bypass filters. For general web vulnerability scanning, use nuclei or nikto. For SQL injection, use sqlmap. Output: identified XSS vectors with payload and injection point.

Inputs: url (required), opts.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 59 tools

    Disambiguation3/5

    There are several overlapping clusters: gobuster/dirb/ffuf/wfuzz all perform web content/fuzzing, nikto/nuclei both scan for vulnerabilities, and john/hashcat overlap in hash cracking. The descriptions consistently call out when to prefer one tool over another, which mostly rescues selection, but the sheer number of similar tools still leaves room for misselection.

    Naming Consistency3/5

    Most names are the standard lowercase Kali binary names, which is readable, but the set mixes single-word names (nmap, msfconsole), underscore-separated names (arp_scan, list_payloads), and camelCase (theHarvester). There is no consistent verb_noun or category-prefix scheme; msf_ and list_ prefixes appear only on a subset, so naming is not fully predictable.

    Tool Count1/5

    With 59 tools, this exceeds the 50+ threshold considered an extreme mismatch in the rubric. Even for a Kali-oriented server, exposing nearly six dozen individual tools overwhelms the agent's tool-selection surface and context window.

    Completeness4/5

    The tool surface covers the main penetration-testing lifecycle: reconnaissance, scanning, web/network vulnerability discovery, exploitation, post-exploitation/AD, password attacks, wireless, and forensics. Minor gaps exist (e.g., no dedicated interactive web proxy or traffic replay tool), but run_command as a fallback and the broad coverage mean most workflows have no dead end.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Connects AI assistants to 55+ Kali Linux security tools for automated CTF solving, penetration testing, and security analysis across 7 categories including cryptography, forensics, web security, and binary exploitation.
      79
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to perform penetration testing and security assessments by exposing 60+ Kali Linux security tools including network scanning, web security testing, password cracking, exploitation frameworks, and OSINT capabilities through an AI-friendly interface.
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to perform authorized penetration testing and security assessments by exposing 20+ Kali Linux security tools (nmap, sqlmap, gobuster, hydra, etc.) through a safe, validated interface with command allowlists, rate limiting, and input sanitization.
      19
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides a containerized Kali Linux environment that gives AI assistants access to a comprehensive suite of security and penetration testing tools. It enables automated vulnerability scanning, network reconnaissance, and secure command execution through the Model Context Protocol.
      26
      MIT