
Servidor do Protocolo de Contexto de Modelo para descoberta autônoma de vulnerabilidades
Servidor Model Context Protocol para automação de pesquisa em segurança
Compatível com:
MCPwner é um servidor Model Context Protocol (MCP) que integra ferramentas de teste de segurança em fluxos de trabalho orientados por LLM. Ele fornece uma interface unificada para varredura de segredos, análise estática (SAST), análise de composição de software (SCA), segurança de infraestrutura como código (IaC), fuzzing de código-fonte, reconhecimento, teste dinâmico de segurança de aplicações (DAST) e pesquisa de vulnerabilidades, incluindo descoberta de 0-day.
Em vez de encadear ferramentas manualmente e colar saídas no seu LLM, o MCPwner padroniza e transmite os resultados diretamente no contexto ativo do modelo. Isso permite raciocínio contínuo, correlação e descoberta de caminhos de ataque ao longo do ciclo de vida da pesquisa em segurança — desde o mapeamento de superfícies de ataque e identificação de vulnerabilidades conhecidas até a descoberta de novos vetores de ataque.
Nota: Este projeto está em desenvolvimento ativo. Saiba mais sobre MCPs aqui.
As seguintes ferramentas estão planejadas para versões futuras.
Geradores de cadeias de gadgets e payloads para weaponizar sumidouros de desserialização identificados durante a SAST. Ecossistemas maduros de cadeias de gadgets existem para Java, .NET e PHP; Python é coberto via geração de pickle malicioso (a desserialização de Ruby/Node é baseada em payload e reside no corpus de Payloads abaixo):
Corpora curadas de payloads e wordlists para dar suporte às ferramentas acima:
"Enumerate and scan example.com" → MCPwner chains: Subfinder + Amass → Masscan + Nmap → httpx → Katana + gau → ffuf + Arjun
### Escaneie um Repositório do GitHub por Segredos```
"Scan https://github.com/example/repo for secrets"
→ MCPwner runs Gitleaks, TruffleHog, detect-secrets and correlates findings
"Run a security audit on my Python project" → MCPwner runs Bandit (SAST), OSV-Scanner (SCA), and secrets scanning
### Análise de Caminho de Ataque```
"Find vulnerabilities in the authentication module"
→ MCPwner runs CodeQL queries, cross-references with secrets and SCA results
"Test for SQLi and XSS on http://localhost:8080" → MCPwner chains: sqlmap + Dalfox and verifies findings
## Instalação
### Pré-requisitos
**Requisitos do Sistema:**
- Docker Engine 20.10+ e Docker Compose 2.0+
- 8GB de RAM mínimo (16GB recomendado para executar várias ferramentas)
- 20GB de espaço livre em disco (as imagens de ferramentas de segurança são grandes)
- Plataformas suportadas: Linux, macOS, Windows (com WSL2)
**Cliente MCP:**
- Claude Desktop, Cursor, Kiro, ou qualquer cliente compatível com MCP
### Configuração
1. **Clone o repositório**: ```bash
git clone https://github.com/nedlir/mcpwner.git
cd mcpwner
Assim que os contêineres Docker estiverem em execução, adicione o MCPwner ao seu cliente MCP:
Importante: Registro Dinâmico de Ferramentas
O MCPwner usa uma arquitetura modular e de adesão opcional. As ferramentas de segurança são governadas por profiles do Docker Compose.
.env (COMPOSE_PROFILES=sast,secrets,reconnaissance,dast,etc) determina quais contêineres são trazidos online. Alternativamente, você pode substituir isso e iniciar perfis específicos via CLI: docker compose --profile sast --profile dast up -d.semgrep), omita sua categoria (sast) do .env e liste manualmente as outras ferramentas desejadas (bandit,gosec,codeql).utilities (ex.: Linguist, WireMock, Chromium) são tratadas como dependências permanentes do núcleo. Elas são executadas incondicionalmente em docker compose up -d para garantir que dependências críticas entre ferramentas (como detecção de linguagem) sempre funcionem.Locais dos Arquivos de Configuração:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS)mcp.json no diretório do seu projeto ou de configuraçõesInstalação com Um Clique (requer Docker em execução):
Configuração Manual:
Adicione o seguinte ao seu arquivo de configuração MCP:```json { "mcpServers": { "mcpwner": { "command": "docker", "args": ["exec", "-i", "mcpwner-server", "python", "src/server.py"], "env": {} } } }
Reinicie seu cliente MCP para carregar a nova configuração do servidor.
### Escaneando Projetos Locais
Para escanear projetos da sua máquina host, monte-os no contêiner adicionando um volume em `docker-compose.yaml`:```yaml
services:
mcpwner:
volumes:
- /path/to/your/projects:/mnt/projects:ro
Em seguida, use a ferramenta create_workspace com:
source_type="local"source="/mnt/projects/my-project"O MCPwner persiste automaticamente os metadados do workspace e do banco de dados CodeQL entre reinicializações do contêiner usando armazenamento baseado em arquivos no volume Docker compartilhado (/workspaces/.metadata/). Nenhuma configuração é necessária - o sistema carrega os dados existentes na inicialização e os salva após cada operação usando gravações atômicas para evitar corrupção.
Controle de Limpeza do Workspace:
A ferramenta cleanup_workspace oferece controle granular:
delete_files=True, delete_metadata=False - Liberar espaço em disco, mas preservar o histórico do workspace (recomendado)delete_files=True, delete_metadata=True - Remoção completa do workspace e metadadosdelete_files=False, delete_metadata=True - Remover da lista, mas manter os arquivos no discoBackup:```bash
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar czf /backup/workspaces-backup.tar.gz /data
docker run --rm -v mcpwner_workspaces:/data -v $(pwd):/backup
alpine tar xzf /backup/workspaces-backup.tar.gz -C /
## Arquitetura
O MCPwner usa comunicação baseada em HTTP entre contêineres para suportar implantações remotas futuras. Embora atualmente otimizado para uso local, a arquitetura pode ser adaptada para implantações em servidores remotos com modificações mínimas.
**Princípios de Design:**
- Isolamento de contêineres para execução de ferramentas de segurança
- Formatos de saída padronizados para consumo de LLM (SARIF/JSON)
- Arquitetura de plugin extensível para novas ferramentas
- API sem estado (memórias são gerenciadas pelo usuário)
**Visão Geral da Arquitetura:**```mermaid
graph LR
subgraph IDE[" "]
LLM[🤖<br/>LLM]
Client[MCP Client]
LLM -.-> Client
end
Server[MCPwner Server]
SAST[SAST Tools]
Secrets[Secrets Scanning]
SCA[SCA Tools]
Recon[Reconnaissance]
CodeQL[CodeQL Service]
Linguist[Language Detection]
Utilities[Utilities]
IaC[IaC Security]
Fuzzing[Source Fuzzing]
DAST[DAST Tools]
Client -->|JSON-RPC 2.0| Server
Server -->|HTTP| SAST
Server -->|HTTP| Secrets
Server -->|HTTP| SCA
Server -->|HTTP| Recon
Server -->|HTTP| CodeQL
Server -->|HTTP| Linguist
Server -->|HTTP| Utilities
Server -->|HTTP| IaC
Server -->|HTTP| Fuzzing
Server -->|HTTP| DAST
style LLM fill:#7C3AED,stroke:#5B21B6,stroke-width:3px,color:#fff
style Client fill:#4A90E2,stroke:#2E5C8A,stroke-width:3px,color:#fff
style Server fill:#F5A623,stroke:#C17D11,stroke-width:3px,color:#fff
style SAST fill:#E74C3C,stroke:#C0392B,stroke-width:2px,color:#fff
style Secrets fill:#9B59B6,stroke:#7D3C98,stroke-width:2px,color:#fff
style SCA fill:#1ABC9C,stroke:#16A085,stroke-width:2px,color:#fff
style Recon fill:#00BCD4,stroke:#0097A7,stroke-width:2px,color:#fff
style CodeQL fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#fff
style Linguist fill:#3498DB,stroke:#2874A6,stroke-width:2px,color:#fff
style Utilities fill:#6D28D9,stroke:#4C1D95,stroke-width:2px,color:#fff
style IaC fill:#059669,stroke:#047857,stroke-width:2px,color:#fff
style Fuzzing fill:#B91C1C,stroke:#7F1D1D,stroke-width:2px,color:#fff
style DAST fill:#D35400,stroke:#A04000,stroke-width:2px,color:#fff
style IDE fill:none,stroke:#ddd,stroke-width:2px,stroke-dasharray: 5 5
O MCPwner expõe as seguintes ferramentas através da interface MCP:
Gestão de Espaços de Trabalho:
create_workspace - Inicializar espaço de trabalho de digitalização a partir de caminho local, URL Git ou repositório GitHublist_workspaces - Listar todos os espaços de trabalho disponíveiscleanup_workspace - Remover espaço de trabalho e dados associadosRegisto de Descobertas:
Com âmbito no espaço de trabalho, persistido em disco (<workspace>/findings/<id>.json) e sempre disponível — sem necessidade de contentor ou verificação de saúde. Esta é a fonte de verdade para o pipeline de pesquisa profunda multi-agente: toda hipótese, resultado de PoC e veredito de revisão é uma entrada de descoberta em vez de prosa.
upsert_finding - Criar ou atualizar uma descoberta. Faz merge profundo numa entrada existente por predefinição, para que um agente possa escrever o seu próprio sub-objeto (ex.: poc) sem sobrescrever campos de outro agente (ex.: review)list_findings - Listar todas as descobertas num espaço de trabalho, opcionalmente filtradas por status (ex.: poc-confirmed, review-approved)get_finding - Recuperar uma única descoberta pelo idSAST (Análise Estática):
run_sast_scan - Executar ferramentas de análise estática (Semgrep, Bandit, Gosec, Brakeman, PMD, Psalm, NodeJsScan, Joern, YASA)get_sast_report - Recuperar resultados da digitalização SASTsast_list_tools - Listar ferramentas SAST disponíveisDeteção de Segredos:
run_secrets_scan - Executar ferramentas de digitalização de segredos (Gitleaks, TruffleHog, Whispers, detect-secrets, Hawk-Eye)get_secrets_report - Recuperar resultados da digitalização de segredossecrets_list_tools - Listar ferramentas de digitalização de segredos disponíveisSCA (Análise de Composição de Software):
run_sca_scan - Analisar dependências para vulnerabilidades (Grype, Syft, OSV-Scanner, Retire.js)get_sca_report - Recuperar resultados da digitalização SCAsca_list_tools - Listar ferramentas SCA disponíveisReconhecimento:
run_reconnaissance_scan - Executar uma única ferramenta de reconhecimento (Subfinder, Amass, Nmap, Masscan, httpx, Katana, ffuf, bbot, gau, Arjun, wafw00f, Kiterunner)run_reconnaissance_chain - Encadear múltiplas ferramentas de reconhecimento sequencialmenteget_reconnaissance_report - Recuperar resultados da digitalização de reconhecimentoreconnaissance_list_tools - Listar ferramentas de reconhecimento disponíveisCodeQL:
detect_languages - Detetar linguagens na base de código via Linguistcreate_codeql_database - Criar base de dados CodeQL para análiselist_databases - Listar bases de dados CodeQL disponíveislist_query_packs - Listar pacotes de consulta disponíveisexecute_query - Executar consultas CodeQL específicasSegurança de Infraestrutura & IaC:
run_iac_scan - Digitalizar infraestrutura como código para configurações incorretas (Checkov, KICS, Terrascan, TFSec, Hadolint)get_iac_report - Recuperar resultados da digitalização IaCiac_list_tools - Listar ferramentas de digitalização IaC disponíveisFuzzing de Código Fonte:
run_fuzzing_scan - Executar uma campanha de fuzzing orientada por cobertura e caixa branca contra um harness por alvo (Atheris, Jazzer, Jazzer.js, PHP-Fuzzer)get_fuzzing_report - Recuperar resultados de crash de fuzzing (entrada causadora de crash + stack trace)fuzzing_list_tools - Listar motores de fuzzing disponíveis, filtrados pela linguagem detetadaDAST (Teste de Segurança de Aplicações Dinâmicas):
run_dast_scan - Executar ferramentas de teste de segurança de aplicações dinâmicas (sqlmap, NoSQLMap, Commix, Dalfox, SSTImap, SSRFmap, jwt_tool, interactsh)get_dast_report - Recuperar resultados da digitalização DASTdast_list_tools - Listar ferramentas DAST disponíveisUtilitários:
run_utilities_scan - Executar uma ferramenta utilitária contra um alvo ativo (Linguist, WireMock, Mitmproxy, aiohttp, Headless Chromium)get_utilities_report - Recuperar resultados da digitalização de utilitáriosutilities_list_tools - Listar ferramentas utilitárias disponíveis e suas opções de configuraçãoSaúde & Monitorização:
health_check - Verificar disponibilidade do servidor e das ferramentaslist_tools - Listar todas as ferramentas disponíveis e seu estadoO MCPwner executa ferramentas de segurança que podem realizar operações intrusivas. Utilize apenas em sistemas e bases de código que possui ou para os quais tem permissão explícita para testar - o acesso não autorizado é ilegal. Restrinja o acesso ao servidor MCP a utilizadores autorizados e considere o isolamento de rede para implementações em produção. Reveja as configurações das ferramentas antes de executar digitalizações, pois algumas ferramentas podem gerar tráfego de rede significativo ou carga no sistema. Registe a execução das ferramentas e os resultados, tendo em mente que as digitalizações de segurança podem acionar alertas em sistemas de monitorização. Siga práticas de divulgação responsável ao reportar vulnerabilidades descobertas usando o MCPwner. Mantenha as imagens Docker atualizadas e digitalize os contentores para vulnerabilidades regularmente. Nunca cometa chaves de API, tokens ou credenciais em ficheiros de configuração - use variáveis de ambiente ou sistemas de gestão de segredos.
Além disso, deve ser responsável pela sua própria segurança ao executar estas ferramentas e ao aceder a bibliotecas de terceiros; é recomendado executar tudo em ambiente isolado (sandbox) e sem autenticação especial (minimizado e endurecido sempre que viável).
![]() | ![]() | ![]() | ![]() | ![]() |
|---|
| Subfinder | Amass | Nmap | Masscan | ffuf |