Armis Security Scanner

Varredura de segurança com inteligência artificial. Escaneia código, arquivos e diffs do git em tempo real em busca de vulnerabilidades usando a API de varredura da Armis.

Documentação

Plugin MCP Armis AppSec

Varredura de segurança com IA para Claude Code, Cursor, VS Code (GitHub Copilot), Gemini CLI, GitHub Copilot CLI, Codex CLI e Cline. Escaneia código, arquivos e diffs de git em busca de vulnerabilidades em tempo real usando a API de varredura da Armis.

Recursos

  • scan_code — Escaneia um trecho de código em busca de vulnerabilidades
  • scan_file — Escaneia um arquivo no disco
  • scan_diff — Escaneia alterações do git (staged, unstaged ou diff contra um branch)
  • approve_findings — Aprova descobertas após consentimento do usuário (para envio com riscos conhecidos)
  • debug_config — Verifica o status da configuração do scanner
  • Commit gate — Hook de pre-commit do git que bloqueia commits até o código ser escaneado
  • /security-scan — Comando de barra do Claude Code para varredura sob demanda

Configuração Rápida (qualquer cliente)

# 1. Clone the repository
git clone https://github.com/ArmisSecurity/armis-appsec-mcp.git
cd armis-appsec-mcp

# 2. Create credentials
cat > .env << 'EOF'
ARMIS_CLIENT_ID=<your-client-id>
ARMIS_CLIENT_SECRET=<your-client-secret>
EOF
chmod 600 .env

# 3. Generate config for your client
make setup CLIENT=cursor    # or: vscode, gemini, copilot

Entre em contato com a equipe Armis AppSec se você não tiver credenciais.

Configuração por Cliente

Cursor

Execute make setup CLIENT=cursor e copie a saída para ~/.cursor/mcp.json (nível de usuário) ou .cursor/mcp.json (nível de workspace).

Ou adicione manualmente à sua configuração:

{
  "mcpServers": {
    "armis-scanner": {
      "command": "/path/to/armis-appsec-mcp/run.sh",
      "args": []
    }
  }
}

VS Code (GitHub Copilot)

Execute make setup CLIENT=vscode e copie a saída para .vscode/mcp.json no seu projeto.

Ou adicione manualmente:

{
  "servers": {
    "armis-scanner": {
      "type": "stdio",
      "command": "/path/to/armis-appsec-mcp/run.sh",
      "args": []
    }
  }
}

Habilite MCP nas configurações do VS Code se ainda não estiver: github.copilot.chat.mcp.enabled: true.

Gemini CLI

Execute make setup CLIENT=gemini e copie a saída para ~/.gemini/settings.json (nível de usuário) ou .gemini/settings.json (nível de projeto).

Ou adicione manualmente o bloco mcpServers ao seu settings.json:

{
  "mcpServers": {
    "armis-scanner": {
      "command": "/path/to/armis-appsec-mcp/run.sh",
      "args": []
    }
  }
}

GitHub Copilot CLI

Execute make setup CLIENT=copilot e copie a saída para .mcp.json (workspace) ou ~/.copilot/mcp-config.json (nível de usuário).

O Copilot CLI exige os campos command e args. Uma configuração sem args será ignorada.

Codex CLI

Adicione o servidor MCP à configuração do seu Codex CLI conforme a documentação dele. Em seguida, conecte o hook de commit gate:

make setup CLIENT=codex   # prints the hook config JSON

Mescle o bloco hooks impresso no arquivo de configuração de hooks do seu Codex CLI (o caminho varia conforme a instalação), substituindo /absolute/path/to/armis-appsec-mcp pelo caminho real do clone.

Cline

Adicione o servidor MCP pelo painel de configurações MCP do Cline. Em seguida, conecte o hook de commit gate:

make setup CLIENT=cline   # prints the hook config JSON

Mescle o bloco hooks impresso no seu settings.json do Cline, substituindo /absolute/path/to/armis-appsec-mcp pelo caminho real do clone.

Claude Code (integração completa)

Instale pelo marketplace de plugins para a experiência completa (hooks + comando de barra):

/plugin marketplace add ArmisSecurity/armis-appsec-mcp
/plugin install armis-appsec@armis-appsec-mcp

Depois defina as credenciais:

PLUGIN_DIR="$(ls -dt ~/.claude/plugins/cache/armis-appsec-mcp/armis-appsec/*/ | head -1)"
cat > "$PLUGIN_DIR/.env" << 'EOF'
ARMIS_CLIENT_ID=<your-client-id>
ARMIS_CLIENT_SECRET=<your-client-secret>
EOF
chmod 600 "$PLUGIN_DIR/.env"

Comparação de Recursos

RecursoClaude CodeCursorVS CodeGeminiCopilot CLICodex CLICline
Ferramentas MCP (todas as 5)SimSimSimSimSimSimSim
Commit gate (rígido)Hook nativoHook nativoGit hookHook nativoHook nativoHook nativoHook nativo
Commit gate (flexível)Hook nativo.cursor/rulesinstructionsAGENTS.md—AGENTS.md—
/security-scanSim——————

"Hook nativo" = hook PreToolUse conectado ao pipeline de ferramentas do cliente (bloqueia o comando antes de executá-lo, injeta uma instrução de varredura). "Git hook" = script pre-commit portátil (instalado via make install-hooks). O VS Code é o único cliente sem um template de hook nativo.

Opcional: Hook de Pre-Commit do Git

Para um commit gate independente de cliente que funciona independentemente da ferramenta de IA que você usa:

make install-hooks

Isso instala um hook de pre-commit do git que verifica a aprovação da varredura (armazenada dentro de .git/, para nunca poluir sua árvore de trabalho) antes de permitir commits. Ele falha aberto por padrão (bugs de plugin nunca bloqueiam desenvolvedores). Defina APPSEC_HOOK_STRICT=1 para comportamento de falha fechada.

Para remover: make uninstall-hooks

Desenvolvimento Local

Para testar alterações não commitadas de um clone de ponta a ponta no Claude Code (ou qualquer cliente que carregue o plugin instalado), aponte o plugin instalado para sua árvore de trabalho:

make dev-install     # backs up the installed plugin, symlinks it -> this repo
# ...restart Claude Code, then test...
make dev-uninstall   # restores the backed-up plugin exactly
make dev-status      # show whether dev mode is active

dev-install faz backup do plugin real em latest.bak, cria um symlink de latest para este repositório e copia o .env instalado (credenciais) para que o preflight do launcher ainda passe. Reinicie o Claude Code após cada instalação/desinstalação — os servidores MCP são iniciados no início da sessão. Substitua o local do cache com PLUGIN_CACHE=... se seus plugins estiverem em outro lugar.

Uso

Escanear alterações staged (padrão)

/security-scan

Ou pergunte ao seu assistente de IA: "escaneie alterações staged em busca de problemas de segurança"

Escanear um arquivo específico

/security-scan path/to/file.py

Escanear diff contra um branch

/security-scan ref=main

Escanear código colado

Cole o código na conversa e pergunte:

Is this code secure?

Comportamento do commit gate

Quando o hook de pre-commit do git está instalado, ou ao usar os hooks nativos do Claude Code:

  1. Bloqueia o comando até o código ser escaneado
  2. O assistente de IA escaneia as alterações automaticamente
  3. Permite o comando após uma varredura limpa (sem descobertas HIGH/CRITICAL)

Se descobertas HIGH/CRITICAL forem encontradas, o assistente tentará corrigi-las. Se descobertas permanecerem após a remediação, ele pede sua aprovação antes de prosseguir.

Configuração

Variável de AmbientePadrãoDescrição
ARMIS_CLIENT_ID(obrigatório)Client ID para autenticação
ARMIS_CLIENT_SECRET(obrigatório)Client secret para autenticação
APPSEC_ENVproddev ou prod — seleciona o endpoint da API
APPSEC_API_URL(automático)Substitui a URL base da API
APPSEC_DEBUG(não definido)Defina qualquer valor para habilitar logging de depuração
APPSEC_TRANSPORTstdioTransporte MCP (stdio, sse)
APPSEC_HOOK_STRICT(não definido)Defina como 1 para git hook de falha fechada
SSL_CERT_FILE / SSL_CERT_DIR / REQUESTS_CA_BUNDLE(não definido)Pacote CA explícito; substitui o armazenamento de certificados do SO
HTTPS_PROXY / ALL_PROXY / NO_PROXY(não definido)Configuração de proxy explícita; substitui as configurações de proxy do SO

Redes corporativas (inspeção TLS, proxies)

O servidor confia no armazenamento de certificados do SO (armazenamento de certificados do Windows, Keychain do macOS) via truststore, então proxies com inspeção TLS como Zscaler ou Netskope funcionam sem configuração extra. Precedência de CA: SSL_CERT_FILE > SSL_CERT_DIR > REQUESTS_CA_BUNDLE > armazenamento do SO > certifi (usado se o truststore não estiver disponível).

Sem variáveis de ambiente de proxy definidas, o proxy estático do sistema (registro de Opções da Internet do Windows, Configurações do Sistema do macOS) é usado, respeitando NO_PROXY e a lista de bypass do SO. Scripts de configuração automática PAC/WPAD não são avaliados; em tais redes, defina HTTPS_PROXY explicitamente.

Logs

O servidor registra em stderr e em <plugin dir>/logs/server.log (rotacionado em ~1 MB, 3 backups): configuração de inicialização (versão, Python, fonte de CA, proxy, URL da API), cada chamada de ferramenta com duração e resultado, e exceções não tratadas. Credenciais, tokens e senhas de proxy nunca são registrados. A ferramenta debug_config relata a fonte de CA, o proxy e o caminho do arquivo de log.

Transporte SSE (servidor compartilhado)

Para equipes que querem uma única instância de scanner compartilhada:

APPSEC_TRANSPORT=sse ./run.sh

Depois configure os clientes para conectar via HTTP em vez de iniciar um processo local.

Suporte de Plataforma

macOS e Linux são totalmente suportados. No Windows, use WSL2 para o próprio Claude Code; para outros clientes MCP (Cursor, VS Code, etc.), make setup também suporta inicialização nativa via Git Bash — veja make setup CLIENT=....

Executando Testes

make check          # full CI gate (format + lint + typecheck + test)
make test           # pytest only
pytest hooks/tests/test_pre_commit_scan.py -v  # specific test file

Arquitetura

              +---------------------+
              |  Armis Cloud        |
              |  POST /scan/fast    |
              +--------+------------+
                       ^
                       | HTTPS (JWT Bearer)
              +--------+------------+
              |   Scanner Core       |
              |  scanner_core.py     |
              +--------+------------+
                 +-----+------+
                 |            |
           +-----v-----+ +---v---------+
           | MCP Server | | Git Hook    |
           | server.py  | | git-hooks/  |
           +------------+ +-------------+
                 |
    +------------+-------------+
    |            |             |
  Claude     Cursor      VS Code/
  Code       Gemini      Copilot

Licença

Apache License 2.0 — veja LICENSE para detalhes.