Kali MCP Server
Um servidor MCP em Python que conecta Modelos de Linguagem de Grande Escala nativamente a um conjunto abrangente de ferramentas de segurança ofensiva.
Documentação
🐉 Kali Linux MCP Server
📖 Visão Geral do Projeto
O Kali Linux MCP Server é uma implementação especializada do Model Context Protocol (MCP) projetada para conectar Modelos de Linguagem de Grande Porte nativamente a um conjunto abrangente de ferramentas de segurança ofensiva, reconhecimento e enumeração. Alimentado pelo FastMCP Python SDK, este servidor traduz solicitações em linguagem natural em execuções seguras e encapsuladas de utilitários padrão do Kali Linux via linha de comando.
Ao expor essas ferramentas como recursos MCP, agentes de IA podem executar consultas WHOIS de forma autônoma, rodar varreduras Nmap, fazer fuzzing de diretórios web, pesquisar bancos de dados de exploits e até mesmo interagir com o Metasploit Framework, tudo isso retornando saída padrão estruturada e logs de erro para o contexto do LLM.
Principais Recursos
- 🎯 Kit de Ferramentas Abrangente de Segurança Ofensiva: Expõe nativamente categorias distintas de ferramentas de teste de penetração ao seu LLM. O servidor categoriza logicamente as capacidades, incluindo módulos dedicados para Quebra de Senhas & Força Bruta, bem como Exploração & Sniffing.
- 📦 Containerização Automatizada e Isolada: A configuração Docker incluída garante uma configuração sem atritos e reproduzível. Ela utiliza a variável de ambiente
DEBIAN_FRONTEND=noninteractivepara suprimir prompts manuais durante instalações de pacotes Debian, garantindo um processo de build totalmente automatizado. - Integração Nativa com o SDK MCP: Construído de forma robusta sobre o SDK Python oficial
mcp. O ambiente é flexível, permitindo que o SDK seja instalado globalmente dentro do contêiner isolado (--break-system-packages) ou via um ambiente virtual Python localizado. - ⚡ Transporte Padronizado
stdio: Utiliza entrada/saída padrão direta para comunicação JSON-RPC, contornando configurações de rede complexas e garantindo compatibilidade imediata com IDEs de IA (como Cursor e VS Code) e clientes desktop (como Claude Desktop).
Demonstração
Quebra de Hash
Varredura de Vulnerabilidades
Pré-requisitos
As dependências necessárias variam inteiramente de acordo com o método de execução escolhido.
Opção A: 🐳 Execução via Docker (Recomendada)
Ao usar Docker, o servidor roda em um contêiner isolado que provisiona automaticamente Python 3, pip, e um conjunto extenso de ferramentas Kali Linux (incluindo nmap, sqlmap, tcpdump e metasploit-framework).
- Docker Engine: Deve estar instalado e em execução. Este método funciona perfeitamente em Windows, macOS e Linux sem exigir ferramentas de segurança locais.
Opção B: 🐍 Execução Local via Python
Se você optar por executar o script diretamente na sua máquina host em vez de usar Docker, seu host deve ter as ferramentas disponíveis nativamente.
- Sistema Operacional: Kali Linux (recomendado) ou outra distribuição Linux com as ferramentas de teste de penetração necessárias instaladas e no
PATHdo seu sistema. - Python: Python 3.10 ou superior.
- Dependências: O SDK Python
mcp(pip install mcp). - Permissões: Algumas ferramentas expostas, como
tcpdumppara captura de pacotes, exigem explicitamente privilégios de root para execução nativa.
Como Configurar
🐳 Opção A: Implementação via Docker
Como este servidor depende de dezenas de ferramentas binárias específicas, empacotá-lo via Docker é a abordagem "Padrão Ouro".
A maneira mais rápida de começar é baixar a imagem oficial do Docker Hub.
docker pull cyberillo/kali-mcp-server:latest
Para executar o contêiner interativamente usando o transporte stdio exigido pelos clientes MCP:
docker run -i --rm kali-mcp-server
(Nota: Algumas ferramentas como tcpdump ou netdiscover exigem privilégios elevados. Se você precisar explicitamente delas, pode ser necessário adicionar --privileged ou flags específicas de --cap-add ao seu comando docker run, embora isso seja fortemente desencorajado para uso geral).
Alternativamente, construa a imagem Docker você mesmo seguindo os passos abaixo.
Detalhamento do Dockerfile
-
Imagem Base: O servidor é construído sobre a imagem base oficial
kalilinux/kali-rolling. -
Instalação do Toolchain: Ele atualiza o sistema e instala ferramentas essenciais, incluindo
nmap,sqlmap,metasploit-framework,gobuster,hydraejohn. -
Listas de Palavras: Ele extrai automaticamente a wordlist
rockyou.txt, pois ela vem compactada por padrão, tornando-a imediatamente disponível para ferramentas de quebra de senhas e fuzzing. -
Ambiente Python: Ele utiliza a flag
--break-system-packagesdo PEP 668 para instalar o SDK Pythonmcpglobalmente dentro do contêiner isolado.
- Clone o repositório e navegue até o diretório.
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server
- 🏗️ Construa a imagem
docker build -t kali-mcp-server .
- 🏃 Execute o contêiner
Para executar o contêiner interativamente usando o transporte stdio exigido pelos clientes MCP:
docker run -i --rm kali-mcp-server
(Nota: Algumas ferramentas como tcpdump ou netdiscover exigem privilégios elevados. Se você precisar explicitamente delas, pode ser necessário adicionar --privileged ou flags específicas de --cap-add ao seu comando docker run, embora isso seja fortemente desencorajado para uso geral).
🛠️ Opção B: Configuração de Desenvolvimento Local
Embora o Docker seja o método de implantação recomendado, você pode executar o servidor diretamente em uma máquina Kali Linux para desenvolvimento ou depuração.
- Clone o repositório e navegue até o diretório.
git clone https://github.com/cyberillo/kali-mcp-server.git
cd kali-mcp-server
- 🐍 Configure um Ambiente Virtual Python:
python3 -m venv venv
source venv/bin/activate
- Instale o SDK MCP:
pip install mcp
- Garanta que todas as ferramentas Kali estejam instaladas:
Garanta que ferramentas comonmap,gobuster,sqlmapemsfconsoleestejam disponíveis noPATHdo seu sistema. - Execute o servidor em modo de depuração localmente:
Você pode testar o script Python diretamente usando entrada/saída padrão.
python3 kali-mcp-server.py
🤖 Como Usar
1. Configuração do Claude Desktop
Adicione o seguinte ao seu arquivo claude_desktop_config.json (geralmente localizado em ~/Library/Application Support/Claude/claude_desktop_config.json no Mac ou %APPDATA%\Claude\claude_desktop_config.json no Windows).
Vá em Arquivo > Configurações > Desenvolvedor > Editar Configuração se você não o encontrar nos caminhos acima.
Usando Docker (Recomendado):
{
"mcpServers": {
"kali-tools": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"kali-mcp-server"
]
}
}
}
Usando Python Local:
{
"mcpServers": {
"kali-tools": {
"command": "/path/to/your/venv/bin/python3",
"args": [
"/path/to/kali-mcp-server.py"
]
}
}
}
2. GitHub Copilot (VS Code)
- Se não existir, adicione um diretório
.vscodeno seu espaço de trabalho. - Adicione o servidor MCP atualizando
.vscode/mcp.jsonda seguinte forma.
{
"servers": {
"kali-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"kali-mcp-server"
]
}
},
"inputs": []
}
3. Cursor / Outros IDEs
Para IDEs que suportam o Model Context Protocol, configure um novo servidor MCP utilizando o tipo de transporte stdio.
- Tipo:
stdio - Comando:
docker - Argumentos:
run -i --rm kali-mcp-server
Definições das Ferramentas MCP
O servidor expõe 21 ferramentas especializadas categorizadas por sua fase operacional.
| Categoria | Nome da Ferramenta | Descrição e Parâmetros |
|---|---|---|
| Recon | whois_lookup | Realiza uma consulta WHOIS. Parâmetros: domain (str). |
| Recon | dnsenum_scan | Enumera registros DNS. Parâmetros: domain (str). |
| Recon | whatweb_scan | Identifica CMS e cabeçalhos. Parâmetros: target_url (str). |
| Recon | amass_enum | Enumeração passiva de subdomínios. Parâmetros: domain (str). |
| Recon | netdiscover_scan | Encontra hosts ativos. Parâmetros: ip_range (str). |
| Scanning | nmap_scan | Descoberta de rede e varredura de portas. Parâmetros: target (str), flags (str, padrão: -sV -F). |
| Scanning | enum4linux_scan | Enumera sistemas Windows/Samba. Parâmetros: target_ip (str). |
| Scanning | smbclient_list | Lista compartilhamentos SMB. Parâmetros: target_ip (str), user (str), password (str). |
| Web Sec | nikto_scan | Varredura de vulnerabilidades web. Parâmetros: target_url (str). |
| Web Sec | gobuster_dir | Força bruta de diretórios. Parâmetros: target_url (str), wordlist (str). |
| Web Sec | dirb_scan | Varredura de conteúdo web. Parâmetros: target_url (str), wordlist (str). |
| Web Sec | ffuf_scan | Fuzzing rápido de diretórios web. Parâmetros: target_url (str), wordlist (str). |
| Web Sec | wfuzz_scan | Fuzzing de parâmetros/diretórios web. Parâmetros: target_url (str), wordlist (str). |
| Web Sec | sqlmap_scan | Detecção/exploração de injeção SQL. Parâmetros: target_url (str), params (str). |
| Web Sec | wpscan_enum | Scanner de vulnerabilidades WordPress. Parâmetros: target_url (str). |
| Cracking | hydra_bruteforce | Força bruta de credenciais de login. Parâmetros: target (str), service (str), user (str), wordlist (str). |
| Cracking | john_crack | Quebra hashes de senha. Parâmetros: hash_file (str), wordlist (str). |
| Cracking | hashcat_crack | Quebra de hashes com uso intensivo de recursos. Parâmetros: hash_file (str), hash_type (str), wordlist (str). |
| Exploit | searchsploit_query | Pesquisa no Exploit Database. Parâmetros: query (str). |
| Exploit | tcpdump_sniff | Captura pacotes de rede. Parâmetros: interface (str), packet_count (str). |
| Exploit | metasploit_exploit | Executa um módulo MSF. Parâmetros: module (str), options (str). |
Dica Profissional para LLMs: Ao pedir ao LLM para executar
metasploit_exploit, formate as opções cuidadosamente como paresKEY=VALUEseparados por vírgula (por exemplo,RHOSTS=192.168.1.5, LHOST=10.0.0.2).
⚙️ Variáveis de Ambiente
Embora o script do servidor Python não imponha variáveis de ambiente personalizadas no nível do aplicativo, o ambiente Docker depende da seguinte variável Linux padrão:
DEBIAN_FRONTEND: Definida como noninteractive no Dockerfile para evitar que o processo de build trave em solicitações de prompt interativas durante instalações de apt.
⚠️ Solução de Problemas
- Comando Excedeu o Tempo: O servidor tem timeouts de segurança embutidos na função
run_cmd(padrão de 300 segundos, estendido para 600+ para ferramentas mais pesadas como Nikto ou Metasploit). Se um alvo estiver completamente sem resposta, a ferramenta retornará limpo um erro de timeout em vez de travar o LLM indefinidamente. - Permissão Negada (Docker): Garanta que seu usuário tenha permissões para executar comandos Docker, ou execute o IDE do cliente com privilégios de usuário apropriados. Ferramentas como
netdiscoveroutcpdumpdentro do contêiner podem falhar silenciosamente ao capturar tráfego externo, a menos que o roteamento de rede host do Docker ou modos privilegiados estejam habilitados.