Kali MCP
Provides access to a suite of Kali Linux security tools for network scanning, web vulnerability testing, password cracking, reconnaissance, exploitation, forensics, and other penetration testing tasks.
Provides tools for interacting with the Metasploit Framework, including running msfconsole commands, generating payloads with msfvenom, searching and viewing module info, and executing resource scripts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Kali MCP scan 192.168.1.0/24 for open ports"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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 |
Local ZAP |
|
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-serverDocker
Confirm Docker is accessible, then build the image:
docker info
./docker-run.sh buildThis 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 releaserelease 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-mcpThe equivalent Docker command is:
docker run --rm -i --platform linux/amd64 \
--cap-add=NET_ADMIN --cap-add=NET_RAW \
kali-mcp:latestKeep -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-mcpStreamable 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 8080Connect 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 8096Transport reference
Transport | Flag | Endpoint |
Stdio |
| stdin/stdout |
Streamable HTTP |
|
|
Legacy SSE |
|
|
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 --listSee 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 |
|
|
|
|
|
|
|
|
|
|
| Unset |
|
| Unset |
|
| Unset |
|
| 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>orX-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 |
|
| Use JSON responses for Streamable HTTP; avoids SSE event-size limits in some clients |
|
| Cap a tool result in bytes; |
|
| ZAP daemon address |
|
| 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:latestFor 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 referenceTroubleshooting
Problem | Action |
Docker is unavailable | Run |
Build downloads fail | Check access to Docker Hub, |
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, |
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 |
Stdio client hangs | Keep Docker stdin open with |
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 toolsaircrack_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).
msf_searchA
Search the Metasploit module database by keyword, CVE, platform, or module type. Use BEFORE opening msfconsole to find relevant modules for a target. Returns module paths, disclosure dates, ranks, and descriptions. After finding a module, use msf_info to see its options and requirements. Output: table of matching modules with full paths and metadata.
Inputs: query (required), module_type.
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
Scored across 59 tools
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.
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.
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.
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
Related MCP Connectors
30 security tools for AI agents: phishing links, exposure maps, DNS, SSL, PQC, history, pivots.
Context and control for any AI. Agent identity, scoped access, and proof across tools.
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
AI-security knowledge as MCP: standards-mapped tools (OWASP, NIST, MITRE) for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects 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-
- AlicenseNot gradedqualityDmaintenanceEnables 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.2MIT
- AlicenseAqualityDmaintenanceEnables 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.191MIT
- AlicenseNot gradedqualityDmaintenanceProvides 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.26MIT