Armis Security Scanner
Escaneo de seguridad impulsado por IA. Escanea código, archivos y diferencias de git en busca de vulnerabilidades en tiempo real utilizando la API de escaneo de Armis.
Documentación
Complemento MCP de Armis AppSec
Escaneo de seguridad impulsado por IA para Claude Code, Cursor, VS Code (GitHub Copilot), Gemini CLI, GitHub Copilot CLI, Codex CLI y Cline. Escanea código, archivos y diferencias de git en busca de vulnerabilidades en tiempo real mediante la API de escaneo de Armis.
Características
scan_code— Escanea un fragmento de código en busca de vulnerabilidadesscan_file— Escanea un archivo en discoscan_diff— Escanea cambios de git (preparados, no preparados o diferencias contra una rama)approve_findings— Aprueba hallazgos después del consentimiento del usuario (para enviar con riesgos conocidos)debug_config— Verifica el estado de configuración del escáner- Puerta de confirmación — Gancho de pre-confirmación de git que bloquea confirmaciones hasta que el código sea escaneado
/security-scan— Comando de barra de Claude Code para escaneo bajo demanda
Configuración rápida (cualquier 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
Contacta al equipo de Armis AppSec si no tienes credenciales.
Configuración del cliente
Cursor
Ejecuta make setup CLIENT=cursor y copia la salida a ~/.cursor/mcp.json (nivel de usuario) o .cursor/mcp.json (nivel de espacio de trabajo).
O agrégalo manualmente a tu configuración:
{
"mcpServers": {
"armis-scanner": {
"command": "/path/to/armis-appsec-mcp/run.sh",
"args": []
}
}
}
VS Code (GitHub Copilot)
Ejecuta make setup CLIENT=vscode y copia la salida a .vscode/mcp.json en tu proyecto.
O agrégalo manualmente:
{
"servers": {
"armis-scanner": {
"type": "stdio",
"command": "/path/to/armis-appsec-mcp/run.sh",
"args": []
}
}
}
Habilita MCP en la configuración de VS Code si aún no está: github.copilot.chat.mcp.enabled: true.
Gemini CLI
Ejecuta make setup CLIENT=gemini y copia la salida a ~/.gemini/settings.json (nivel de usuario) o .gemini/settings.json (nivel de proyecto).
O agrega manualmente el bloque mcpServers a tu settings.json:
{
"mcpServers": {
"armis-scanner": {
"command": "/path/to/armis-appsec-mcp/run.sh",
"args": []
}
}
}
GitHub Copilot CLI
Ejecuta make setup CLIENT=copilot y copia la salida a .mcp.json (espacio de trabajo) o ~/.copilot/mcp-config.json (nivel de usuario).
Copilot CLI requiere tanto los campos command como args. Una configuración sin args será ignorada.
Codex CLI
Agrega el servidor MCP a tu configuración de Codex CLI según su documentación. Luego conecta el gancho de puerta de confirmación:
make setup CLIENT=codex # prints the hook config JSON
Fusiona el bloque hooks impreso en tu archivo de configuración de ganchos de Codex CLI (la ruta varía según la instalación), reemplazando /absolute/path/to/armis-appsec-mcp con la ruta real del clon.
Cline
Agrega el servidor MCP a través del panel de configuración de MCP de Cline. Luego conecta el gancho de puerta de confirmación:
make setup CLIENT=cline # prints the hook config JSON
Fusiona el bloque hooks impreso en tu settings.json de Cline, reemplazando /absolute/path/to/armis-appsec-mcp con la ruta real del clon.
Claude Code (integración completa)
Instala a través del mercado de complementos para la experiencia completa (ganchos + comando de barra):
/plugin marketplace add ArmisSecurity/armis-appsec-mcp
/plugin install armis-appsec@armis-appsec-mcp
Luego establece las credenciales:
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"
Comparación de características
| Característica | Claude Code | Cursor | VS Code | Gemini | Copilot CLI | Codex CLI | Cline |
|---|---|---|---|---|---|---|---|
| Herramientas MCP (las 5) | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
| Puerta de confirmación (estricta) | Gancho nativo | Gancho nativo | Gancho de git | Gancho nativo | Gancho nativo | Gancho nativo | Gancho nativo |
| Puerta de confirmación (flexible) | Gancho nativo | .cursor/rules | instrucciones | AGENTS.md | — | AGENTS.md | — |
| /security-scan | Sí | — | — | — | — | — | — |
"Gancho nativo" = gancho PreToolUse conectado a la canalización de herramientas del cliente (bloquea el comando antes de que se ejecute, inyecta una instrucción de escaneo). "Gancho de git" = script portátil pre-commit (instalado mediante make install-hooks). VS Code es el único cliente sin una plantilla de gancho nativo.
Opcional: Gancho de pre-confirmación de git
Para una puerta de confirmación independiente del cliente que funcione sin importar qué herramienta de IA uses:
make install-hooks
Esto instala un gancho de pre-confirmación de git que verifica el pase de escaneo (almacenado dentro de .git/, por lo que nunca satura tu árbol de trabajo) antes de permitir confirmaciones. Fallas abiertas de forma predeterminada (los errores del complemento nunca bloquean a los desarrolladores). Establece APPSEC_HOOK_STRICT=1 para un comportamiento de fallo cerrado.
Para eliminar: make uninstall-hooks
Desarrollo local
Para probar cambios no confirmados de un clon de extremo a extremo en Claude Code (o cualquier cliente que cargue el complemento instalado), apunta el complemento instalado a tu árbol de trabajo:
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 respalda el complemento real en latest.bak, crea un enlace simbólico de latest a este repositorio y copia el .env instalado (credenciales) para que la verificación previa del lanzador aún pase. Reinicia Claude Code después de cada instalación/desinstalación — los servidores MCP se inician al comienzo de la sesión. Anula la ubicación de caché con PLUGIN_CACHE=... si tus complementos están en otro lugar.
Uso
Escanear cambios preparados (predeterminado)
/security-scan
O pregúntale a tu asistente de IA: "escanea los cambios preparados en busca de problemas de seguridad"
Escanear un archivo específico
/security-scan path/to/file.py
Escanear diferencias contra una rama
/security-scan ref=main
Escanear código pegado
Pega código en la conversación y pregunta:
Is this code secure?
Comportamiento de la puerta de confirmación
Cuando el gancho de pre-confirmación de git está instalado, o cuando se usan los ganchos nativos de Claude Code:
- Bloquea el comando hasta que el código sea escaneado
- El asistente de IA escanea los cambios automáticamente
- Permite el comando después de un escaneo limpio (sin hallazgos ALTOS/CRÍTICOS)
Si se encuentran hallazgos ALTOS/CRÍTICOS, el asistente intentará corregirlos. Si quedan hallazgos después de la remediación, solicita tu aprobación antes de continuar.
Configuración
| Variable de entorno | Predeterminado | Descripción |
|---|---|---|
ARMIS_CLIENT_ID | (requerido) | ID de cliente para autenticación |
ARMIS_CLIENT_SECRET | (requerido) | Secreto de cliente para autenticación |
APPSEC_ENV | prod | dev o prod — selecciona el punto final de la API |
APPSEC_API_URL | (automático) | Anula la URL base de la API |
APPSEC_DEBUG | (sin establecer) | Establece cualquier valor para habilitar el registro de depuración |
APPSEC_TRANSPORT | stdio | Transporte MCP (stdio, sse) |
APPSEC_HOOK_STRICT | (sin establecer) | Establece 1 para el gancho de git de fallo cerrado |
SSL_CERT_FILE / SSL_CERT_DIR / REQUESTS_CA_BUNDLE | (sin establecer) | Paquete de CA explícito; anula el almacén de certificados del sistema operativo |
HTTPS_PROXY / ALL_PROXY / NO_PROXY | (sin establecer) | Configuración de proxy explícita; anula la configuración de proxy del sistema operativo |
Redes corporativas (inspección TLS, proxies)
El servidor confía en el almacén de certificados del sistema operativo (almacén de certificados de Windows, Llavero de macOS) mediante truststore, por lo que los proxies con inspección TLS como Zscaler o Netskope funcionan sin configuración adicional. Precedencia de CA: SSL_CERT_FILE > SSL_CERT_DIR > REQUESTS_CA_BUNDLE > almacén del sistema operativo > certifi (se usa si truststore no está disponible).
Sin variables de entorno de proxy establecidas, se usa el proxy estático del sistema (registro de Opciones de Internet de Windows, Configuración del sistema de macOS), respetando NO_PROXY y la lista de exclusión del sistema operativo. Los scripts de configuración automática PAC/WPAD no se evalúan; en tales redes establece HTTPS_PROXY explícitamente.
Registros
El servidor registra en stderr y en <plugin dir>/logs/server.log (rotado a ~1 MB, 3 copias de respaldo): configuración de inicio (versión, Python, fuente de CA, proxy, URL de API), cada llamada de herramienta con duración y resultado, y excepciones no controladas. Las credenciales, tokens y contraseñas de proxy nunca se registran. La herramienta debug_config informa la fuente de CA, el proxy y la ruta del archivo de registro.
Transporte SSE (servidor compartido)
Para equipos que quieren una única instancia de escáner compartida:
APPSEC_TRANSPORT=sse ./run.sh
Luego configura los clientes para conectarse mediante HTTP en lugar de iniciar un proceso local.
Soporte de plataformas
macOS y Linux son totalmente compatibles. En Windows, usa WSL2 para Claude Code; para otros clientes MCP (Cursor, VS Code, etc.), make setup también admite el inicio nativo mediante Git Bash — consulta make setup CLIENT=....
Ejecución de pruebas
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
Arquitectura
+---------------------+
| 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
Licencia
Licencia Apache 2.0 — consulta LICENSE para más detalles.