Interrogez directement des assistants IA comme Claude sur l'état de sécurité de votre Mac / Linux
RoamSwitch intègre un serveur MCP (Model Context Protocol) en lecture seule. Connectez-le à un client MCP et posez simplement, en langage naturel, des questions comme « mon Mac / Linux est-il sécurisé en ce moment ? » ou « quels ports sont exposés ? » — vous obtiendrez des réponses fondées sur les diagnostics précis de RoamSwitch lui-même, et non sur des suppositions. Il ne peut ni changer le niveau de verrouillage, ni isoler des ports, ni effectuer aucune autre action ; toute communication reste entièrement sur l'appareil via stdio (une extension de notre politique Zero Telemetry).
🔒 Pourquoi c'est sûr
- Lecture seule : uniquement des diagnostics de sécurité, une surveillance des ports et des vérifications de l'état des gardes. Aucun outil d'action tel que le basculement du verrouillage, l'isolement de ports ou l'éjection d'appareils n'est implémenté.
- Entièrement local : la communication se fait uniquement via stdio, exclusivement entre votre client IA (Claude Desktop/Code, etc.) et le processus RoamSwitch sur votre Mac / Linux — rien n'est jamais envoyé à un serveur externe.
- Prévention des erreurs : en l'absence d'outils d'action, il n'y a aucun risque qu'une injection de prompt ou autre modifie accidentellement votre pare-feu ou vos paramètres réseau.
Configuration en deux étapes
1Emplacement du binaire
Intégré à RoamSwitch.app — aucun téléchargement ni installation séparée n'est nécessaire.
/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2aPour Claude Desktop
Ajoutez ce qui suit à "mcpServers" dans ~/Library/Application Support/Claude/claude_desktop_config.json, puis redémarrez Claude Desktop.
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
2bPour Claude Code
Il suffit d'exécuter une seule fois la commande suivante dans le terminal.
claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2cPour OpenAI Codex CLI
Ajoutez ce qui suit à ~/.codex/config.toml, ou exécutez la commande ci-dessous dans le terminal.
[mcp_servers.roamswitch] command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2dPour OpenCode
Ajoutez ce qui suit à opencode.json à la racine du projet (ou dans ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
}
}
}
💡 Support des LLM locaux : Associé à des modèles locaux via Ollama ou LM Studio, vous pouvez interroger RoamSwitch hors ligne, même si le réseau a été coupé en urgence face à une menace.
2ePour Antigravity
Ajoutez ce qui suit à ~/.gemini/config/mcp_config.json (ou .agents/mcp_config.json à la racine de votre espace de travail).
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
* Remarque : Si vous rencontrez une erreur Hook Failure ou de télémétrie dans Antigravity CLI (agy), désactivez le hook en définissant "enabled": false dans ~/.gemini/config/plugins/.../hooks.json.
1Emplacement du binaire
Inclus dans le paquet apt / rpm / AUR et installé automatiquement sous /usr/bin/roamswitch-mcp. Aucun téléchargement ni compilation séparés requis (identique pour l'édition Client et l'édition Serveur).
/usr/bin/roamswitch-mcp
Le même binaire et la même procédure de configuration fonctionnent tels quels avec l'édition Serveur (sans interface graphique). Voir le chapitre « Agents IA / Intégration MCP » du manuel d'exploitation Linux Server pour plus de détails.
2aPour Claude Desktop
Claude Desktop n'a pas de version Linux officielle. Si vous utilisez une version non officielle (par ex. claude-desktop-debian), ajoutez ce qui suit à "mcpServers" dans ~/.config/Claude/claude_desktop_config.json, puis redémarrez l'application.
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
2bPour Claude Code
Il suffit d'exécuter une seule fois la commande suivante dans le terminal.
claude mcp add roamswitch /usr/bin/roamswitch-mcp
2cPour OpenAI Codex CLI
Ajoutez ce qui suit à ~/.codex/config.toml, ou exécutez la commande ci-dessous dans le terminal.
[mcp_servers.roamswitch] command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp
2dPour OpenCode
Ajoutez ce qui suit à opencode.json à la racine du projet (ou dans ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/usr/bin/roamswitch-mcp"]
}
}
}
💡 Support des LLM locaux : Associé à des modèles locaux via Ollama ou LM Studio, vous pouvez interroger RoamSwitch hors ligne, même si le réseau a été coupé en urgence face à une menace.
2ePour Antigravity
Ajoutez ce qui suit à ~/.gemini/config/mcp_config.json (ou .agents/mcp_config.json à la racine de votre espace de travail).
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
* Remarque : Si vous rencontrez une erreur Hook Failure ou de télémétrie dans Antigravity CLI (agy), désactivez le hook en définissant "enabled": false dans ~/.gemini/config/plugins/.../hooks.json.
Outils en lecture seule (actuellement 17 sur Mac / 25 sous Linux, en augmentation continue)
get_security_report
Effectue un audit en 18 points sur Mac (FileVault, SIP, Gatekeeper, pare-feu, robustesse du chiffrement Wi-Fi, usurpation ARP, ports exposés, etc.) ou en 24 points côté client / 30 points côté serveur sous Linux (durcissement du noyau, protection du socket Docker et des conteneurs privilégiés, isolation du runtime de conteneurs, vulnérabilités connues, etc.), et renvoie un score ainsi que des recommandations correctives.
get_exposed_ports
Répertorie tous les ports actuellement en écoute et, pour ceux exposés à l'extérieur, renvoie un audit détaillé incluant la détection de services à risque connus (Redis, MongoDB, etc.).
get_guard_status
Renvoie l'état de la protection des ports, du confinement ARP, de la protection USB, Bluetooth, Web/Mail et DNS, ainsi que le niveau de sécurité.
audit_url_safety
Analyse les liens d'e-mails ou URLs web pour détecter le phishing, les attaques homographes Unicode, les sous-domaines trompeurs et TLDs à risque (Zero Telemetry).
get_app_help
Recherche dans la base de connaissances officielle de RoamSwitch couvrant toutes les fonctionnalités, alertes, paramètres et dépannages en local pour fournir des explications précises.
audit_security_logs
Agrège les journaux de sécurité récents (Mac : échecs d'authentification sudo, tentatives de force brute SSH, blocages Gatekeeper, détections XProtect, etc. / Linux : échecs d'authentification sudo, force brute SSH, blocages pare-feu, refus AppArmor, détections ClamAV, etc.), masque automatiquement les informations sensibles telles que les clés API et jetons, et renvoie également les résultats de la détection de nouveaux motifs (par gabarits de logs) et des anomalies de fréquence (pics statistiques).
get_notification_history
Renvoie l'historique des notifications envoyées par RoamSwitch (anomalies d'audit des journaux de sécurité, détections ClickFix, etc.) des 7 derniers jours, les plus récentes en premier.
roamswitch://docs/* (MCP Resources)
Ressources de documentation officielles que les clients IA peuvent intégrer directement dans leur contexte (fonctionnalités, alertes, paramètres, dépannage).
Autres outils en lecture seule
| Outil | Plateforme | Description |
|---|---|---|
audit_secrets |
Mac / Linux | Détecte les clés d'API et les clés privées exposées dans un texte, un fichier ou une arborescence (les valeurs trouvées sont masquées en sortie). |
run_active_vuln_scan |
Mac / Linux | Vérification active de vulnérabilités, non destructive et limitée à 127.0.0.1. Le seul outil qui utilise le réseau : désactivé par défaut, il exige un consentement explicite dans les réglages. |
run_package_cve_scan |
Mac / Linux | Compare les paquets installés (Mac : Homebrew / Linux : dpkg, dnf, zypper, pacman) à une carte CVE locale. Aucune communication réseau n'a lieu. |
run_package_cve_scan_languages |
Mac / Linux | Compare les fichiers de verrouillage de dépendances npm, PyPI, crates.io, RubyGems, Packagist, Go et Maven à la même carte CVE locale. Aucune communication réseau n'a lieu. |
get_quarantine_status |
Mac / Linux | Renvoie le contenu du coffre de quarantaine : chemin d'origine, nom de la menace détectée, date de mise en quarantaine et taille. |
get_canary_status |
Mac / Linux | Renvoie l'état des fichiers leurres anti-rançongiciel (canary) ainsi que les 50 incidents détectés les plus récents. |
get_port_anomaly_incidents |
Mac / Linux | Renvoie l'état de référence de la protection contre les ports anormaux, les ports actuellement bloqués automatiquement et les 50 incidents les plus récents. La réponse précise explicitement que les ports actuellement bloqués sont un instantané de l'état présent, sans horodatage, distinct de l'historique des incidents qui, lui, est horodaté. |
get_runtime_threat_status |
Mac | Indique si ce Mac est isolé (Air-Gap) à la suite d'une détection de logiciel malveillant par XProtect, et l'incident déclencheur. À consulter en premier lors d'un Air-Gap actif. |
verify_fim |
Linux | Recalcule l'empreinte d'environ 150 fichiers système critiques et la compare à la référence enregistrée pour détecter toute altération. |
get_file_scan_guard_status |
Linux (Server) | Renvoie la configuration du File Scan Guard (ClamAV) et l'état du coffre de quarantaine associé. |
get_ebpf_incidents |
Linux (Server) | Renvoie l'état d'isolation actuel du garde d'exécution eBPF et l'historique des incidents à son origine. |
get_resource_guard_incidents |
Linux (Server) | Renvoie l'historique du garde contre l'épuisement des ressources et les anomalies de processus (fuites mémoire, boucles de plantage), avec un niveau de confiance. |
get_incident_timeline |
Mac / Linux | Regroupe les détections de tous les gardes dans une chronologie unique, avec la filiation des processus et des étiquettes MITRE ATT&CK (expérimental). |
get_network_history |
Mac | Enregistre, pour chaque réseau Wi-Fi mémorisé, le nombre d'appareils passerelle distincts ayant répondu et la dernière date de vue, et signale les autres réseaux au nom suspicieusement similaire (candidats Evil Twin). Permet aussi de savoir si vous vous êtes déjà connecté à un réseau donné. |
get_vpn_status |
Linux (Client) | Indique si le VPN sur réseaux non fiables (WireGuard / Tailscale) est activé, si le tunnel est réellement établi, et si le kill switch anti-fuite est armé. |
get_link_guard_status |
Linux (Client) | Renvoie l'état d'activation de Link Guard (blocage du phishing / des sites malveillants via inspection DNS / TLS SNI / hôte HTTP), son mode (désactivé / avertissement / blocage), la liste blanche, ainsi que les événements de blocage/avertissement des 7 derniers jours. |
get_air_gap_status |
Linux (Client) | Indique si l'isolation Air-Gap d'urgence (tout le trafic bloqué) est actuellement active, la raison du déclenchement, le temps restant avant la levée automatique, et tous les processus actuellement gelés par SIGSTOP. |
get_sharing_services_status |
Linux (Client) | Renvoie le paramètre qui arrête automatiquement SSH, Samba et le partage d'écran (GNOME Remote Desktop / VNC / xrdp) sur les réseaux non fiables, ainsi que l'état réel des services effectivement arrêtés et restaurés. |
get_bluetooth_guard_status |
Linux (Client) | Renvoie le paramètre de Bluetooth Guard qui désactive de force la visibilité sur les réseaux non fiables, ainsi que l'état réel du contrôleur (alimenté, visible, appareils connectés). |
get_usb_guard_status |
Linux (Client) | Renvoie les paramètres de la garde de stockage USB et de la garde clavier BadUSB (la saisie n'est bloquée que via evdev — un appareil n'est jamais désautorisé au niveau du noyau), ainsi que les appareils connectés et ceux en attente d'approbation. |
Parmi les outils ci-dessus, ceux qui ne lisent que l'état local (quarantaine, canari, anomalie de port, menace runtime, historique des notifications, chronologie des incidents, historique réseau, statut VPN / Link Guard / Air-Gap / services de partage / Bluetooth / garde USB, etc.) continuent de fonctionner même lorsque RoamSwitch a coupé le réseau en urgence suite à une menace détectée. Combinés à un LLM local, ils permettent d'enquêter sur la cause sur place pendant la coupure.
Comment interroger l'IA au quotidien et en développement
Exemples de prompts et de réponses IA pour l'audit des ports en développement local, la vérification du Wi-Fi public, la détection d'URL de phishing, etc. Copiez les prompts directement dans votre IA.
Audit d'exposition des ports de serveurs locaux & DB
Lors du lancement de Next.js, Vite, Python, Docker, Redis, etc., demandez à l'IA d'auditer si des ports sont involontairement exposés sur 0.0.0.0 au réseau local.
• 🚨 Port 3000 (node / Next.js): Exposé à l'extérieur sur
0.0.0.0:3000• 🚨 Port 6379 (redis-server): Exposé à l'extérieur sur
0.0.0.0:6379 (sans authentification ; accessible par d'autres appareils sur le même Wi-Fi)• ✅ Port 5432 (postgres): Lié à
127.0.0.1:5432 (localhost uniquement / sûr)💡 Recommandation: Modifiez la configuration Redis pour
bind 127.0.0.1 et démarrez Next.js avec npm run dev -- -H 127.0.0.1.Vérification de sécurité lors de la connexion à un Wi-Fi public
Juste après vous être connecté au Wi-Fi gratuit d'un café ou d'un hôtel, demandez à l'IA un diagnostic complet pour vérifier si le pare-feu et la protection ARP sont bien actifs.
• 🛡️ Score global: 88 / 100 (Grade: A-)
• 📡 Statut réseau: Réseau non fiable (Mode déplacement / filtrage de paquets actif)
• ✅ Pare-feu / Mode furtif: Activé (bloque les sondages externes)
• ✅ Isolement automatique anti-usurpation ARP: Activé (isolement auto en cas d'interception)
• ⚠️ Action recommandée: Le chiffrement FileVault est désactivé. Il est recommandé de l'activer dans les Réglages Système.
Analyse des liens suspects dans les e-mails & messages
Faites inspecter instantanément par l'IA les URL d'e-mails ou de messages Slack/Discord suspects, entièrement en local sans envoyer de données à l'extérieur (Zero Telemetry).
• 🚨 Niveau de risque: Dangerous (Dangereux / Score: 8/100)
• ❌ Sous-domaine usurpateur: Se fait passer pour
apple.com, mais le domaine réel est login-auth-verify.xyz.• ❌ TLD à haut risque:
.xyz est très fréquemment utilisé pour des campagnes de phishing éphémères.• 🔒 Zero Telemetry: Analysé en local sur votre Mac sans aucune transmission vers des serveurs tiers.
• 🛑 Recommandation: Ne cliquez surtout pas sur ce lien, supprimez et signalez l'e-mail.
Garde-fou de sécurité autonome pendant le codage
Lorsque Claude Code ou Antigravity configure des services ou exécute des suites de tests, laissez l'agent exécuter les outils MCP comme garde-fou pour vérifier qu'aucun port n'a été exposé par erreur.
1. Serveur Fastify démarré sur le port 8080.
2. 🔍 Vérification RoamSwitch MCP:
get_exposed_ports exécuté et confirmation que le port est strictement lié à 127.0.0.1:8080 (localhost uniquement).3. Environnement sécurisé vérifié. Poursuite des tests d'intégration.
Rapport de sécurité quotidien & Export Markdown
Générez en un clic un rapport d'état de sécurité Markdown soigné pour la conformité d'entreprise, les audits IT ou votre journal de travail personnel.
## 🛡️ Mac Security Health Report (2026-08-28)
- Score global: 96 / 100 (Grade: A+)
- État des défenses principales:
• FileVault: ✅ Activé (APFS Encrypted)
• SIP: ✅ Activé
• Pare-feu / Mode furtif: ✅ Activé
• Protection anti-usurpation ARP: ✅ Activé
• Protection contre les menaces DNS: ✅ Activé (Quad9 Secure DNS)
- Actions recommandées: Aucune (très bonne posture de sécurité)Vérification des gardes USB, Bluetooth & téléchargement
Vérifiez que les protections en temps réel comme l'alerte de stockage USB inconnu, la surveillance Bluetooth et l'analyse des téléchargements sont bien actives.
• 🛡️ Niveau de protection actif: Balanced (Mode de protection standard)
• ✅ Garde stockage USB: Actif (alerte/bloque les clés USB non enregistrées)
• ✅ Garde Bluetooth: Actif (surveille la proximité d'appareils non jumelés)
• ✅ Protection téléchargements Web/Mail: Actif (analyse automatique ClamAV des fichiers en quarantaine)
• ✅ Protection menaces DNS: Actif (bloque les domaines malveillants C2 et de phishing)
Conseils sur l'utilisation de l'app et les alertes reçues
Consultez l'IA sur toute notification, avertissement ou détail technique (filtre de paquets, FSEvents, ClamAV, protection USB, etc.) avec des explications vérifiées.
• 🚪 Raison : Le serveur a démarré sur
0.0.0.0 (public). RoamSwitch a bloqué les accès externes entrants.• ⚙️ Solution :
1. Recommandé : Lancez avec
npm run dev -- -H 127.0.0.1.2. Partage réseau : Autorisez le port 3000 dans l'audit des ports.
• 🔍 Analyse de l'incident : Un appareil a falsifié les paquets ARP pour usurper la passerelle (attaque Man-in-the-Middle).
• 🛡️ Défense automatique : RoamSwitch a isolé immédiatement l'interface réseau en mode air-gap d'urgence.
• 🛑 Recommandation : Ne vous reconnectez pas à ce Wi-Fi public. Poursuivez vos activités en partage de connexion.
• 🔌 Raison de l'éjection : Éjecté pour prévenir les fuites de données et les attaques BadUSB.
• ⚙️ Procédure : 1. Ouvrez 'Paramètres' depuis l'icône RoamSwitch → 2. Sélectionnez l'onglet 'Protection USB' → 3. Cliquez sur 'Ajouter depuis les appareils connectés' → 4. Définissez l'autorisation sur 'Lecture seule (Recommandé)' et enregistrez.
• ⚠️ Cause : La communication XPC avec le démon privilégié
RoamSwitchHelper est interrompue.• 🛠️ Restauration :
1. Ouvrez le Terminal et redémarrez l'assistant :
sudo killall RoamSwitchHelper2. Relancez l'application RoamSwitch.
3. Dans 'Réglages Système' > 'Général' > 'Ouverture et extensions', assurez-vous que
RoamSwitchHelper est activé.Triage hors ligne avec un LLM local + MCP après un verrouillage d'urgence Air-Gap
Lorsque Air-Gap (coupure réseau d'urgence) se déclenche — par exemple lors de la détection d'un ransomware —, cela coupe aussi la communication avec les clients IA cloud comme Claude Desktop. Mais le serveur MCP de RoamSwitch continue de fonctionner, car il ne communique que via un tube de processus local ; associé à un LLM local (via Ollama, par exemple), vous pouvez poursuivre le diagnostic sans aucun accès réseau. La détection d'anomalies de journaux, la détection d'altération et la vérification des CVE connues sont entièrement locales : c'est exactement le moment pour lequel elles ont été conçues, quand le réseau lui-même a disparu.
• 🐛 Canari déclenché : chiffrement de
/var/www/decoy_invoice.pdf détecté à 14:32:07 ; le processus suspicious_enc (PID 8823) a été immédiatement gelé et isolé• 🔌 Surveillance des ports (Port Anomaly Guard) : aucun nouveau blocage automatique dans l'historique des incidents — le déclenchement du canari semble être le seul point d'entrée, aucun port de porte dérobée supplémentaire n'a été ouvert
• 📜 Corrélation des journaux (détection d'anomalies) : un pic d'échecs d'authentification
sshd débute 12 minutes avant le déclenchement (pic de fréquence détecté, Z-score 5,2) — un point d'entrée possible• 🔒 Détection d'altération (FIM) : aucune altération constatée sur ~150 chemins système critiques — rien n'indique que la brèche a atteint la couche système
• 📦 Vérification des CVE connues : comparaison avec la carte CVE locale — aucune vulnérabilité connue critique dans les paquets concernés
💡 Action recommandée : la brèche est probablement confinée à la racine web. Avant de restaurer depuis une sauvegarde, vérifiez aussi individuellement les autres fichiers de ce répertoire.
À propos de l'intégration MCP
Q. Ne communique-t-il vraiment jamais avec l'extérieur ?
A. Exact. Le serveur MCP est un processus local lancé directement par votre client IA via les entrées/sorties standard (stdio) et ne contient aucun code réseau. Les résultats des diagnostics sont également calculés sur place, sur ce Mac / Linux.
Q. Puis-je l'utiliser sans la version Pro ?
A. Oui, tous les outils fonctionnent avec la version gratuite. Cependant, l'activation réelle de chaque garde automatique dépend aussi de l'état de la licence Pro, donc l'outil ne peut confirmer que l'état de l'interrupteur dans les réglages.
Q. Quels clients IA sont pris en charge ?
A. Tout client prenant en charge le transport stdio du MCP (Model Context Protocol) devrait fonctionner, même au-delà de ceux listés ci-dessus. Vérifié avec Claude Desktop, Claude Code, OpenAI Codex CLI, OpenCode et Antigravity.
Q. Antigravity affiche une erreur « Hook Failure » ou de télémétrie lors de l'appel d'outils ?
A. Un hook PreToolUse provenant d'un plugin externe (tel que la télémétrie Google Cloud) dans Antigravity peut bloquer l'exécution. Ouvrez ~/.gemini/config/plugins/.../hooks.json et définissez "enabled": false.
Q. Puis-je toujours interroger le serveur MCP lorsque le réseau est coupé ?
A. Oui, si vous utilisez un LLM local (via OpenCode avec Ollama ou LM Studio), tout s'exécute à 100% sur votre Mac / Linux et fonctionne même en cas d'isolation d'urgence du réseau. Si vous utilisez un LLM cloud (comme l'API Claude), passez en partage de connexion sécurisé avant d'interroger l'IA.