Pregunta directamente a asistentes de IA como Claude sobre el estado de seguridad de tu Mac / Linux
RoamSwitch incluye un servidor MCP (Model Context Protocol) de solo lectura. Conéctalo a un cliente MCP y simplemente pregunta, en lenguaje natural, «¿está mi Mac / Linux seguro ahora mismo?» o «¿qué puertos están expuestos?»: obtendrás respuestas basadas en los diagnósticos precisos del propio RoamSwitch, no en conjeturas. No puede cambiar el nivel de bloqueo, aislar puertos ni realizar ninguna otra acción; toda la comunicación permanece por completo en el dispositivo a través de stdio (una extensión de nuestra política Zero Telemetry).
🔒 Por qué es seguro
- Solo lectura: únicamente diagnósticos de seguridad, monitorización de puertos y comprobación del estado de los guardias. No se implementa ninguna herramienta operativa como cambiar el modo de bloqueo, aislar puertos o expulsar dispositivos.
- Totalmente local: la comunicación es solo mediante stdio, exclusivamente entre tu cliente de IA (Claude Desktop/Code, etc.) y el proceso de RoamSwitch en tu Mac / Linux; nunca se envía nada a un servidor externo.
- Prevención de errores: al no existir herramientas operativas, no hay riesgo de que una inyección de prompt u otra técnica similar modifique accidentalmente tu cortafuegos o la configuración de red.
Configuración en dos pasos
1Ubicación del binario
Incluido en RoamSwitch.app; no requiere descarga ni instalación por separado.
/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2aPara Claude Desktop
Añade lo siguiente a "mcpServers" en ~/Library/Application Support/Claude/claude_desktop_config.json y reinicia Claude Desktop.
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
2bPara Claude Code
Basta con ejecutar una vez el siguiente comando en la terminal.
claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2cPara OpenAI Codex CLI
Añade lo siguiente a ~/.codex/config.toml, o ejecuta el siguiente comando en la terminal.
[mcp_servers.roamswitch] command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2dPara OpenCode
Añada lo siguiente a opencode.json en la raíz del proyecto (o configuración global ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
}
}
}
💡 Soporte de LLM locales: Al utilizar modelos locales con Ollama o LM Studio, puede consultar RoamSwitch completamente sin conexión, incluso cuando la red haya sido aislada por emergencia ante una amenaza.
2ePara Antigravity
Añade lo siguiente a ~/.gemini/config/mcp_config.json (o a .agents/mcp_config.json en la raíz de tu espacio de trabajo).
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
* Nota: Si encuentra un error de Hook Failure o telemetría en Antigravity CLI (agy), desactive el hook configurando "enabled": false en ~/.gemini/config/plugins/.../hooks.json.
1Ubicación del binario
Incluido en el paquete apt / rpm / AUR e instalado automáticamente en /usr/bin/roamswitch-mcp. No es necesario descargarlo ni compilarlo por separado (igual para la edición Cliente y la edición Servidor).
/usr/bin/roamswitch-mcp
El mismo binario y los mismos pasos de configuración funcionan igual en la edición Servidor (sin interfaz gráfica). Consulta el capítulo «Agentes de IA / Integración MCP» del manual de operaciones de Linux Server para más detalles.
2aPara Claude Desktop
Claude Desktop no tiene una versión oficial para Linux. Si usas una compilación no oficial (por ejemplo, claude-desktop-debian), añade lo siguiente a "mcpServers" en ~/.config/Claude/claude_desktop_config.json y reinicia la aplicación.
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
2bPara Claude Code
Basta con ejecutar una vez el siguiente comando en la terminal.
claude mcp add roamswitch /usr/bin/roamswitch-mcp
2cPara OpenAI Codex CLI
Añade lo siguiente a ~/.codex/config.toml, o ejecuta el siguiente comando en la terminal.
[mcp_servers.roamswitch] command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp
2dPara OpenCode
Añada lo siguiente a opencode.json en la raíz del proyecto (o configuración global ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/usr/bin/roamswitch-mcp"]
}
}
}
💡 Soporte de LLM locales: Al utilizar modelos locales con Ollama o LM Studio, puede consultar RoamSwitch completamente sin conexión, incluso cuando la red haya sido aislada por emergencia ante una amenaza.
2ePara Antigravity
Añade lo siguiente a ~/.gemini/config/mcp_config.json (o a .agents/mcp_config.json en la raíz de tu espacio de trabajo).
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
* Nota: Si encuentra un error de Hook Failure o telemetría en Antigravity CLI (agy), desactive el hook configurando "enabled": false en ~/.gemini/config/plugins/.../hooks.json.
Herramientas de solo lectura (actualmente 17 en Mac / 25 en Linux, en constante ampliación)
get_security_report
Realiza una auditoría de 18 puntos en Mac (FileVault, SIP, Gatekeeper, cortafuegos, solidez del cifrado Wi-Fi, suplantación ARP, puertos expuestos, etc.) o de 24 puntos en cliente / 30 en servidor bajo Linux (endurecimiento del kernel, protección del socket de Docker y contenedores privilegiados, aislamiento del runtime de contenedores, vulnerabilidades conocidas, etc.), devolviendo una puntuación y recomendaciones de mejora.
get_exposed_ports
Enumera todos los puertos en escucha actualmente y, para los expuestos externamente, devuelve una auditoría detallada que incluye la detección de servicios de riesgo conocidos (Redis, MongoDB, etc.).
get_guard_status
Devuelve el estado de la protección de puertos, contención ARP, USB, Bluetooth, descargas Web/Mail, protección contra amenazas DNS y el nivel de seguridad.
audit_url_safety
Analiza enlaces de correos o URLs web para detectar phishing, ataques homógrafos Unicode, subdominios engañosos y TLDs de alto riesgo (Zero Telemetry).
get_app_help
Busca en la base de conocimientos oficial de RoamSwitch sobre todas las funciones, alertas, ajustes y solución de problemas en el dispositivo para ofrecer explicaciones y consejos precisos.
audit_security_logs
Agrega los registros de seguridad recientes (Mac: fallos de autenticación sudo, intentos de fuerza bruta SSH, bloqueos de Gatekeeper, detecciones de XProtect, etc. / Linux: fallos de autenticación sudo, fuerza bruta SSH, bloqueos del cortafuegos, denegaciones de AppArmor, detecciones de ClamAV, etc.), enmascara automáticamente información sensible como claves API y tokens, y además devuelve los resultados de la detección de patrones nuevos (mediante plantillas de log) y de anomalías de frecuencia (picos estadísticos).
get_notification_history
Devuelve el historial de notificaciones enviadas por RoamSwitch (anomalías de auditoría de registros de seguridad, detecciones de ClickFix, etc.) de los últimos 7 días, las más recientes primero.
roamswitch://docs/* (MCP Resources)
Recursos de documentación oficiales que los clientes de IA pueden consultar directamente en su contexto (especificaciones, alertas, ajustes y solución de problemas).
Otras herramientas de solo lectura
| Herramienta | Plataforma | Descripción |
|---|---|---|
audit_secrets |
Mac / Linux | Detecta claves de API y claves privadas expuestas en texto, un archivo o un árbol de directorios (los hallazgos se enmascaran en la salida). |
run_active_vuln_scan |
Mac / Linux | Verificación activa de vulnerabilidades, no destructiva y limitada a 127.0.0.1. La única herramienta que usa la red: desactivada por defecto, requiere activarla en los ajustes. |
run_package_cve_scan |
Mac / Linux | Compara los paquetes instalados (Mac: Homebrew / Linux: dpkg, dnf, zypper, pacman) con un mapa de CVE local. No se realiza ninguna comunicación de red. |
run_package_cve_scan_languages |
Mac / Linux | Compara los archivos de bloqueo de dependencias de npm, PyPI, crates.io, RubyGems, Packagist, Go y Maven con el mismo mapa de CVE local. No se realiza ninguna comunicación de red. |
get_quarantine_status |
Mac / Linux | Devuelve el contenido del baúl de cuarentena: ruta original, nombre de la amenaza detectada, fecha de cuarentena y tamaño. |
get_canary_status |
Mac / Linux | Devuelve el estado de los archivos señuelo antiransomware (canary) y hasta los 50 incidentes detectados más recientes. |
get_port_anomaly_incidents |
Mac / Linux | Devuelve el estado de la línea base de la protección de puertos anómalos, los puertos bloqueados automáticamente y hasta los 50 incidentes más recientes. La respuesta indica explícitamente que los puertos actualmente bloqueados son una instantánea del estado actual, sin marca de tiempo, distinta del historial de incidentes, que sí lleva marca de tiempo. |
get_runtime_threat_status |
Mac | Indica si este Mac está aislado (Air-Gap) por una detección de malware de XProtect, junto con el incidente que lo activó. Es lo primero que conviene consultar durante un Air-Gap activo. |
verify_fim |
Linux | Vuelve a calcular el hash de unos 150 archivos críticos del sistema y lo compara con la línea base guardada para verificar su integridad. |
get_file_scan_guard_status |
Linux (Server) | Devuelve la configuración del File Scan Guard (ClamAV) y el estado del baúl de cuarentena que utiliza. |
get_ebpf_incidents |
Linux (Server) | Devuelve el estado de aislamiento actual del guardián de ejecución eBPF y el historial de incidentes que lo motivó. |
get_resource_guard_incidents |
Linux (Server) | Devuelve el historial del guardián de agotamiento de recursos y anomalías de procesos (fugas de memoria, bucles de fallo), con un nivel de confianza. |
get_incident_timeline |
Mac / Linux | Unifica las detecciones de todos los guardianes en una única línea temporal, con la ascendencia de procesos y etiquetas MITRE ATT&CK (experimental). |
get_network_history |
Mac | Registra cuántos dispositivos de puerta de enlace distintos han respondido por cada red Wi-Fi recordada y cuándo se vio por última vez, y señala otras redes con nombres sospechosamente similares (posibles Evil Twin). También permite saber si ya te has conectado antes a una red concreta. |
get_vpn_status |
Linux (Client) | Indica si la VPN en redes no confiables (WireGuard / Tailscale) está activada, si el túnel está realmente establecido y si el kill switch antifugas está armado. |
get_link_guard_status |
Linux (Client) | Devuelve el estado de activación de Link Guard (bloqueo de phishing / sitios maliciosos mediante inspección de DNS / TLS SNI / host HTTP), su modo (desactivado / aviso / bloqueo), la lista de permitidos y los eventos de bloqueo/aviso de los últimos 7 días. |
get_air_gap_status |
Linux (Client) | Indica si el aislamiento de emergencia Air-Gap (todo el tráfico bloqueado) está activo en este momento, el motivo que lo desencadenó, el tiempo restante hasta la liberación automática y todos los procesos actualmente congelados con SIGSTOP. |
get_sharing_services_status |
Linux (Client) | Devuelve el ajuste que detiene automáticamente SSH, Samba y el uso compartido de pantalla (GNOME Remote Desktop / VNC / xrdp) en redes no confiables, y el estado real de los servicios que efectivamente se detienen y restauran. |
get_bluetooth_guard_status |
Linux (Client) | Devuelve el ajuste de Bluetooth Guard que fuerza la desactivación de la visibilidad en redes no confiables, y el estado real del controlador (encendido, visible, dispositivos conectados). |
get_usb_guard_status |
Linux (Client) | Devuelve los ajustes de la guardia de almacenamiento USB y de la guardia de teclado BadUSB (la entrada solo se suprime mediante evdev; un dispositivo nunca se desautoriza a nivel de kernel), junto con los dispositivos conectados y los pendientes de aprobación. |
De las herramientas anteriores, las que solo leen el estado local (cuarentena, señuelo/canary, anomalías de puertos, amenazas en tiempo de ejecución, historial de notificaciones, línea temporal de incidentes, historial de red, estado de VPN / Link Guard / Air-Gap / servicios compartidos / Bluetooth / guardia USB, etc.) siguen funcionando incluso cuando RoamSwitch ha cortado la red de emergencia al detectar una amenaza. Combinadas con un LLM local, permiten investigar la causa in situ durante el corte.
Cómo consultar a la IA en el trabajo y desarrollo diario
Ejemplos prácticos de prompts y respuestas de IA para auditoría de puertos en desarrollo local, verificación de Wi-Fi público, detección de phishing y más. Copia los prompts directamente en tu IA.
Auditoría de exposición de puertos en servidores locales y DB
Al iniciar Next.js, Vite, Python, Docker, Redis, etc., pide a la IA que audite si los puertos están expuestos accidentalmente en 0.0.0.0 a toda la red local.
• 🚨 Puerto 3000 (node / Next.js): Expuesto externamente en
0.0.0.0:3000• 🚨 Puerto 6379 (redis-server): Expuesto externamente en
0.0.0.0:6379 (sin autenticación; accesible por otros dispositivos en el mismo Wi-Fi)• ✅ Puerto 5432 (postgres): Vinculado a
127.0.0.1:5432 (solo localhost / seguro)💡 Recomendación: Cambia la configuración de Redis a
bind 127.0.0.1 e inicia Next.js con npm run dev -- -H 127.0.0.1.Verificación de seguridad al conectarse a Wi-Fi público
Justo después de conectarte a una red Wi-Fi pública en una cafetería o un hotel, pide a la IA un diagnóstico completo para comprobar si el cortafuegos y la protección ARP están activos.
• 🛡️ Puntuación global: 88 / 100 (Grade: A-)
• 📡 Estado de la red: Red no confiable (Modo fuera de oficina / filtro de paquetes activo)
• ✅ Cortafuegos / Modo invisible: Activado (bloquea paquetes de sondeo externos)
• ✅ Aislamiento automático anti-suplantación ARP: Activado (aislamiento automático ante interceptaciones)
• ⚠️ Acción recomendada: El cifrado FileVault está desactivado. Se recomienda activarlo en Ajustes del Sistema.
Análisis de enlaces sospechosos en correos y chats
Haz que la IA inspeccione de inmediato enlaces sospechosos en correos o mensajes de Slack/Discord completamente en local, sin enviar la URL a servidores externos (Zero Telemetry).
• 🚨 Nivel de riesgo: Dangerous (Peligroso / Puntuación: 8/100)
• ❌ Subdominio suplantador: Finge ser
apple.com, pero el dominio real es login-auth-verify.xyz.• ❌ TLD de alto riesgo:
.xyz se asocia frecuentemente con campañas de phishing efímeras.• 🔒 Zero Telemetry: Inspeccionado localmente en tu Mac sin transferir ningún dato al exterior.
• 🛑 Recomendación: No abras el enlace bajo ninguna circunstancia, elimina y reporta el correo.
Salvaguarda de seguridad autónoma al programar
Cuando encargues a Claude Code o Antigravity configurar servicios o suites de pruebas, permite que ejecuten las herramientas MCP como salvaguarda para verificar que no haya puertos abiertos indebidamente.
1. Servidor Fastify iniciado en el puerto 8080.
2. 🔍 Verificación con RoamSwitch MCP: Se ejecutó
get_exposed_ports y se confirmó que el puerto está vinculado estrictamente a 127.0.0.1:8080 (solo localhost).3. Entorno seguro verificado. Continuando con las pruebas de integración.
Informe de seguridad diario y exportación en Markdown
Genera con un solo clic un informe en Markdown claro y estructurado para políticas de TI, auditorías de la empresa o tu propio registro diario.
## 🛡️ Mac Security Health Report (2026-08-28)
- Puntuación global: 96 / 100 (Grade: A+)
- Estado de defensas principales:
• FileVault: ✅ Activado (APFS Encrypted)
• SIP: ✅ Activado
• Cortafuegos / Modo invisible: ✅ Activado
• Aislamiento automático ARP: ✅ Activado
• Protección contra amenazas DNS: ✅ Activado (Quad9 Secure DNS)
- Acciones recomendadas: Ninguna (excelente estado de seguridad)Comprobación de estado de guards de USB, Bluetooth y descargas
Comprueba que las defensas en tiempo real, como la alerta de USB desconocido, la supervisión de Bluetooth y la protección de descargas, estén operativas.
• 🛡️ Nivel de protección activo: Balanced (Modo estándar de protección)
• ✅ Guardia de almacenamiento USB: Activo (alerta/bloquea memorias USB no registradas)
• ✅ Guardia de Bluetooth: Activo (supervisa la proximidad de dispositivos no emparejados)
• ✅ Protección de descargas Web/Mail: Activo (análisis automático ClamAV de archivos en cuarentena)
• ✅ Protección contra amenazas DNS: Activo (bloquea dominios maliciosos C2 y phishing)
Consultar sobre el uso de la app y significado de alertas
Pregunte a la IA sobre cualquier notificación o especificación técnica (filtro de paquetes, FSEvents, ClamAV, protección USB, etc.) y obtenga respuestas basadas en la base oficial.
• 🚪 Motivo: El servidor inició en
0.0.0.0 (público en LAN). RoamSwitch bloqueó los accesos externos entrantes.• ⚙️ Solución:
1. Recomendado: Inicie con
npm run dev -- -H 127.0.0.1.2. Compartir en red: Autorice el puerto 3000 en la auditoría de puertos.
• 🔍 Análisis del incidente: Un dispositivo falsificó paquetes ARP para suplantar al router (ataque Man-in-the-Middle).
• 🛡️ Defensa automática: RoamSwitch aplicó un aislamiento de emergencia de la interfaz para evitar la interceptación.
• 🛑 Recomendación: No vuelva a conectarse a esa red pública. Continúe trabajando de forma segura mediante anclaje a red.
• 🔌 Motivo de expulsión: Expulsado para evitar robo de datos y ataques de firmware BadUSB.
• ⚙️ Pasos de registro: 1. Abra 'Ajustes' desde el icono de RoamSwitch → 2. Seleccione la pestaña 'Protección USB' → 3. Haga clic en 'Añadir desde dispositivos conectados' → 4. Establezca el permiso en 'Solo lectura (Recomendado)' y guarde.
• ⚠️ Causa: La comunicación XPC con el daemon privilegiado
RoamSwitchHelper se ha interrumpido temporalmente.• 🛠️ Pasos de restauración:
1. Abra Terminal y reinicie el daemon:
sudo killall RoamSwitchHelper2. Reinicie la app RoamSwitch.
3. En 'Ajustes del Sistema' > 'General' > 'Ítems de inicio y extensiones', asegúrese de que
RoamSwitchHelper esté activado.Triaje sin conexión con un LLM local + MCP tras un bloqueo de emergencia Air-Gap
Cuando se activa Air-Gap (bloqueo de red de emergencia) — por ejemplo, al detectar ransomware —, también se corta la comunicación con clientes de IA en la nube como Claude Desktop. Pero el servidor MCP de RoamSwitch sigue funcionando, ya que solo se comunica mediante una tubería de proceso local; combínalo con un LLM local (por ejemplo, mediante Ollama) y podrás seguir diagnosticando sin ningún acceso a la red. La detección de anomalías en registros, la detección de manipulaciones y el cotejo con CVE conocidos son totalmente locales, así que este es precisamente el momento para el que fueron creados: cuando la propia red ha desaparecido.
• 🐛 Señuelo activado: se detectó el cifrado de
/var/www/decoy_invoice.pdf a las 14:32:07; el proceso suspicious_enc (PID 8823) fue congelado y aislado de inmediato• 🔌 Supervisión de puertos (Port Anomaly Guard): sin nuevos bloqueos automáticos en el historial de incidentes — el señuelo activado parece ser el único punto de entrada, sin puertos de puerta trasera adicionales abiertos
• 📜 Correlación de registros (detección de anomalías): un pico de fallos de autenticación de
sshd comienza 12 minutos antes de la activación (pico de frecuencia detectado, Z-score 5,2) — un posible punto de entrada• 🔒 Detección de manipulación (FIM): no se encontró manipulación en ~150 rutas críticas del sistema — sin indicios de que la brecha alcanzara la capa del sistema
• 📦 Verificación de CVE conocidas: cotejado con el mapa de CVE local — sin vulnerabilidades conocidas críticas en los paquetes afectados
💡 Acción recomendada: es probable que la brecha esté confinada a la raíz web. Antes de restaurar desde una copia de seguridad, revisa también individualmente los demás archivos de ese directorio.
Sobre la integración con MCP
Q. ¿De verdad nunca se comunica con el exterior?
A. Así es. El servidor MCP es un proceso local que tu cliente de IA inicia directamente a través de la entrada/salida estándar (stdio) y no contiene ningún código de red. Los resultados del diagnóstico también se calculan al instante en este Mac / Linux.
Q. ¿Puedo usarlo sin la versión Pro?
A. Sí, todas las herramientas funcionan con la versión gratuita. Sin embargo, que cada guardia automática esté realmente activa también depende del estado de la licencia Pro, por lo que la herramienta solo puede confirmar el estado del interruptor en Ajustes.
Q. ¿Qué clientes de IA son compatibles?
A. Cualquier cliente compatible con el transporte stdio de MCP (Model Context Protocol) debería funcionar en general, incluso más allá de los mencionados arriba. Verificado con Claude Desktop, Claude Code, OpenAI Codex CLI, OpenCode y Antigravity.
Q. ¿Antigravity muestra un error de «Hook Failure» o telemetría al ejecutar herramientas?
A. Un hook PreToolUse de complementos externos (como la telemetría de Google Cloud) en Antigravity puede bloquear la ejecución. Abra ~/.gemini/config/plugins/.../hooks.json y configúrelo como "enabled": false.
Q. ¿Puedo realizar consultas cuando la conexión de red está bloqueada?
A. Sí, si utiliza un LLM local (con OpenCode mediante Ollama o LM Studio), todo se procesa al 100% en su Mac / Linux y funciona sin conexión incluso durante un aislamiento de red de emergencia. Si utiliza un LLM en la nube (como la API de Claude), cambie a una red segura como anclaje móvil antes de consultar.