AI連携 (MCP)

Claude等のAIから、直接Macのセキュリティ状況を確認

RoamSwitchには読み取り専用のMCP(Model Context Protocol)サーバーが同梱されています。Claude Desktop / Claude Codeに接続すれば、「今のMacは安全?」「外部に公開されているポートは?」と自然文で聞くだけで、RoamSwitch自身が計算した正確な診断結果に基づく回答が返ります。ロックダウン切替やポート隔離などの操作は一切できず、通信はすべて端末内のstdioのみで完結します(Zero Telemetryの延長)。

🔒 なぜ安全なのか

  • 読み取り専用: セキュリティ診断・ポート監視・ガード設定の確認のみ。ロックダウン切替、ポート隔離、デバイス取り出しなどの操作系ツールは一切実装していません。
  • 完全ローカル: 通信は標準入出力(stdio)のみ。AIクライアント(Claude Desktop/Code)とMac上のRoamSwitchプロセス間で完結し、外部サーバーへの送信は一切ありません。
  • 誤操作の防止: 操作系ツールを持たないため、プロンプトインジェクション等でファイアウォールやネットワーク設定を誤って変更されるリスクがありません。
接続方法

2ステップで設定完了

1バイナリの場所

RoamSwitch.appに同梱されています。個別のダウンロードやインストールは不要です。

/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2aClaude Desktopの場合

~/Library/Application Support/Claude/claude_desktop_config.json"mcpServers" に以下を追加し、Claude Desktopを再起動してください。

{
  "mcpServers": {
    "roamswitch": {
      "command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
    }
  }
}

2bClaude Codeの場合

ターミナルで以下のコマンドを1回実行するだけです。

claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2cOpenAI Codex CLIの場合

~/.codex/config.toml に以下を追加するか、ターミナルで以下のコマンドを実行してください。

[mcp_servers.roamswitch]
command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2dOpenCodeの場合

プロジェクト直下の opencode.json(またはグローバル設定 ~/.config/opencode/opencode.json)に以下を追加してください。

{
  "mcp": {
    "roamswitch": {
      "type": "local",
      "command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
    }
  }
}

💡 ローカルLLM対応: OllamaやLM Studio等のローカルモデルと連携している場合、RoamSwitchが脅威検知によりネットワークを緊急遮断している最中でも、完全オフラインでその場で安全確認やアドバイスの問い合わせが可能です。

2eAntigravityの場合

~/.gemini/config/mcp_config.json(またはワークスペース直下の .agents/mcp_config.json)に以下を追加してください。

{
  "mcpServers": {
    "roamswitch": {
      "command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
    }
  }
}

※ Antigravity CLI (agy) 等でツール実行時に Hook Failure やテレメトリのエラーが出る場合は、~/.gemini/config/plugins/.../hooks.json"enabled": false に設定してフックを無効化してください。

1バイナリの場所

apt / rpm / AUR パッケージに同梱されており、インストール時に自動で /usr/bin/roamswitch-mcp として配置されます。個別のダウンロードやビルドは不要です(クライアント版・Server Edition共通)。

/usr/bin/roamswitch-mcp

Server Edition(ヘッドレス運用)でも同じバイナリ・同じ設定方法がそのまま使えます。詳細は「運用マニュアル (Linux Server)」の「AI エージェント / MCP 連携運用」章を参照してください。

2aClaude Desktopの場合

Claude DesktopはLinux版が公式提供されていません。非公式ビルド(例: claude-desktop-debian等)をお使いの場合は、~/.config/Claude/claude_desktop_config.json"mcpServers" に以下を追加し、再起動してください。

{
  "mcpServers": {
    "roamswitch": {
      "command": "/usr/bin/roamswitch-mcp"
    }
  }
}

2bClaude Codeの場合

ターミナルで以下のコマンドを1回実行するだけです。

claude mcp add roamswitch /usr/bin/roamswitch-mcp

2cOpenAI Codex CLIの場合

~/.codex/config.toml に以下を追加するか、ターミナルで以下のコマンドを実行してください。

[mcp_servers.roamswitch]
command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp

2dOpenCodeの場合

プロジェクト直下の opencode.json(またはグローバル設定 ~/.config/opencode/opencode.json)に以下を追加してください。

{
  "mcp": {
    "roamswitch": {
      "type": "local",
      "command": ["/usr/bin/roamswitch-mcp"]
    }
  }
}

💡 ローカルLLM対応: OllamaやLM Studio等のローカルモデルと連携している場合、RoamSwitchが脅威検知によりネットワークを緊急遮断している最中でも、完全オフラインでその場で安全確認やアドバイスの問い合わせが可能です。

2eAntigravityの場合

~/.gemini/config/mcp_config.json(またはワークスペース直下の .agents/mcp_config.json)に以下を追加してください。

{
  "mcpServers": {
    "roamswitch": {
      "command": "/usr/bin/roamswitch-mcp"
    }
  }
}

※ Antigravity CLI (agy) 等でツール実行時に Hook Failure やテレメトリのエラーが出る場合は、~/.gemini/config/plugins/.../hooks.json"enabled": false に設定してフックを無効化してください。

提供ツール

読み取り専用のツール

get_security_report

FileVault・SIP・Gatekeeper・ファイアウォール・Wi-Fi暗号強度・ARPスプーフィング・外部公開ポートなど15項目を総合診断し、スコアと改善アドバイスを返します。

get_exposed_ports

現在リッスン中の全ポートを一覧化し、外部公開されているものは既知の危険サービス(Redis/MongoDB等)判定を含む詳細な監査結果を返します。

get_guard_status

未知ポート自動遮断・ARPスプーフィング自動対応・USBストレージガード・Bluetoothガード・Web/Mailダウンロード保護・DNS脅威保護の有効状態と、現在の保護レベルを返します。

audit_url_safety

メール本文やWeb上のURLを引数に取り、フィッシング詐欺・Unicodeホモグラフ偽装・有名ブランド偽装サブドメイン・短縮URL展開・高リスクTLDの安全性を完全端末内(Zero Telemetry)で即座に診断します。

get_app_help

RoamSwitchの全機能仕様・内部動作・全通知メッセージ・トラブルシューティングを網羅した公式ナレッジを端末内で瞬時に検索し、的確な解説とアドバイスを返します。

audit_security_logs

直近のセキュリティログ(Sudo認証失敗・SSH総当たり試行・Gatekeeper遮断・XProtect検知など)を集計し、APIキーやトークンなどの機密情報を自動マスキングした上で、ログパターンをテンプレート化した新規パターン検知・頻度異常(統計的スパイク)検知の結果も返します。

get_notification_history

RoamSwitchが送信した通知(セキュリティログ監査の異常、ClickFix検知など)の履歴を、直近1週間ぶん・最新順で返します。

roamswitch://docs/* (MCP Resources)

AIが直接コンテキストとして参照できる公式ドキュメントリソース(機能仕様・全アラート解説・設定ガイド・トラブルシューティング)。

🐧 Linux版はダウンロード保護ガードの稼働確認(get_file_scan_guard_status)や、約150箇所のクリティカルシステムファイルの改ざん検知(verify_fim)、Server EditionではeBPFランタイムガードの隔離状態・発動理由の取得(get_ebpf_incidents)など、追加のツールにも対応しています。ポート監視の自動遮断履歴(get_port_anomaly_incidents)はMac / Linux共通で利用できます。 CLI / ヘッドレス運用 (Linux)

シーン別実践例

日常業務・開発フローでの具体的な聞き方

ローカル開発中のポート監査、フリーWi-Fi接続時の安全確認、フィッシングURL診断など、実際のシーンで使えるプロンプトとAIの応答例です。プロンプトはコピーしてそのままAIに送信できます。

🛠️

ローカルサーバー・DBのポート露出監査

Web開発 / Docker

Next.js、Vite、Python、Docker、Redisなどを起動した際、意図せず 0.0.0.0 (全公開) でLAN内に晒されていないかをAIに監査させます。

💬 AIへの指示プロンプト例
今Macで起動しているローカル開発サーバーやコンテナの外部公開ポートを監査して。0.0.0.0でバインドされてLAN内に晒されている危険なポートはない?
⚡ Tool: get_exposed_ports
検出されたポート監査結果:
• 🚨 ポート 3000 (node / Next.js): 0.0.0.0:3000 で外部公開中
• 🚨 ポート 6379 (redis-server): 0.0.0.0:6379 で外部公開中(認証なしのため同一Wi-Fi内の他端末から直接アクセス可能)
• ✅ ポート 5432 (postgres): 127.0.0.1:5432 (localhost限定・安全)
💡 推奨対策: Redisの設定で bind 127.0.0.1 に変更し、Next.jsは npm run dev -- -H 127.0.0.1 で起動してください。

外出先Wi-Fi接続時の安全状態チェック

リモートワーク / 公共Wi-Fi

カフェやホテルのフリーWi-Fiに接続した直後、作業を開始して安全か、必要な防護設定(ファイアウォールやARP監視等)が有効かをAIに総合診断させます。

💬 AIへの指示プロンプト例
今カフェのフリーWi-Fiに接続した。この環境で作業して大丈夫かセキュリティ状態を総合診断して。ファイアウォールやARPスプーフィング対策の状況も教えて。
⚡ Tools: get_security_report, get_guard_status
Mac セキュリティ総合診断結果:
• 🛡️ 総合スコア: 88 / 100 (Grade: A-)
• 📡 ネットワーク判定: 未信頼ネットワーク(外出先モード・パケットフィルタ稼働中)
• ✅ ファイアウォール / ステルスモード: 有効(外部探査パケットを遮断中)
• ✅ ARPスプーフィング自動遮断: 有効(パケット傍受検知時に自動隔離)
• ⚠️ 改善提案: FileVaultのディスク暗号化が無効です。システム設定から有効化を推奨します。
✉️

不審なメール・チャットリンクの安全性検査

フィッシング対策 / URL診断

取引先を名乗る不審なメールやSlack/DiscordのDMに含まれるURLを、外部に送信することなく(Zero Telemetry)完全端末内でAIに即座に診断させます。

💬 AIへの指示プロンプト例
取引先から届いたメールに「https://apple.com.login-auth-verify.xyz/account」というリンクがあった。クリックする前に安全性を診断して。
⚡ Tool: audit_url_safety
URL安全性診断レポート (完全ローカル解析):
• 🚨 リスク判定: Dangerous (危険 / 安全スコア: 8/100)
• ❌ ブランド偽装サブドメイン: apple.com に見せかけていますが、実ドメインは login-auth-verify.xyz です。
• ❌ 高リスクTLD: .xyz は使い捨てフィッシングで頻用される危険ドメインです。
• 🔒 Zero Telemetry: 外部送信ゼロ・Mac端末内で安全に検証完了。
• 🛑 推奨対応: リンクは絶対に開かず、メールを破棄・報告してください。
🤖

コーディング中の自律的セキュリティセーフガード

AIエージェント協調

Claude CodeやAntigravityにサービス構築やテストを任せる際、MCPツールをセーフガードとして自律的に実行させ、意図しないポート露出や脆弱性を防ぎます。

💬 AIへの指示プロンプト例
プロジェクトのバックエンドAPIとテスト環境を構築して。完了後、RoamSwitch MCPで意図しない外部ポートが開いていないか確認してから完了報告して。
⚡ Tool: get_exposed_ports
AIエージェントの自律実行サマリー:
1. Fastifyバックエンドサーバーをポート8080で起動しました。
2. 🔍 RoamSwitch MCP検証: get_exposed_ports を実行し、127.0.0.1:8080 (localhost限定) でバインドされておりLAN外部への露出がないことを確認しました。
3. 安全性が担保されたため、引き続き結合テストを実行します。
📋

始業時チェック・社内提出用レポート作成

定期監査 / レポート作成

企業のセキュリティ規程遵守の確認や情シス提出用、あるいは個人のセルフチェック用に、現在のMacセキュリティ状態をMarkdown形式で一括出力させます。

💬 AIへの指示プロンプト例
現在のMacのセキュリティ状態を、社内提出や日報に貼れるMarkdown形式のサマリーレポートにして出力して。改善点も箇条書きでまとめて。
⚡ Tools: get_security_report, get_guard_status
Markdown レポート生成例:
## 🛡️ Mac Security Health Report (2026-08-28)
- 総合スコア: 96 / 100 (Grade: A+)
- 主要防御状況:
  • FileVault: ✅ 有効 (APFS Encrypted)
  • SIP (システム整合性保護): ✅ 有効
  • ファイアウォール / ステルスモード: ✅ 有効
  • ARPスプーフィング自動遮断: ✅ 有効
  • DNS脅威保護: ✅ 有効 (Quad9 Secure DNS)
- 推奨アクション: 特になし(良好なセキュリティ状態です)
🛡️

USB・Bluetooth・各種防護ガードの稼働確認

デバイス・物理防護

未知のUSBストレージ挿入時の保護やBluetooth監視、Web/Mailダウンロード保護、セキュアDNSの切り替えなど、RoamSwitchの各種プロテクションが有効か確認します。

💬 AIへの指示プロンプト例
USBストレージガードやBluetooth監視、DNS脅威保護、Webダウンロード保護などの各種ガード機能は正常に稼働している?
⚡ Tool: get_guard_status
RoamSwitch ガード稼働状況:
• 🛡️ アクティブ保護レベル: Balanced (標準防護モード)
• ✅ USBストレージガード: 有効 (未登録USB接続時に警告・遮断)
• ✅ Bluetoothガード: 有効 (未ペアリング機器の接近を監視)
• ✅ Web・メールダウンロード保護: 有効 (検知ファイルをClamAVで自動検査)
• ✅ DNS脅威保護: 有効 (マルウェアC2・フィッシングDNSを自動遮断)
💡

アプリの使い方・通知メッセージの意味と対処相談

機能解説 / アラート相談

画面に出た通知や警告(ポート遮断、緊急遮断後の安全確認、USB取り出し、ヘルパー未接続等)や細かい機能仕様について、AIに公式ナレッジベースから的確な解説と対処法を教えてもらいます。

💬 パターンA: 開発中のポート自動遮断・安全な設定相談(Web開発・Next.js)
RoamSwitchから「🚪 未知のリスニングポート(3000)を外部遮断しました」という通知が出た。Next.jsの開発サーバーなんだけど、誤検知を解除して安全にローカルで動かすにはどう設定すればいい?
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
RoamSwitch 公式ナレッジベースからの回答:
• 🚪 通知の理由: Next.js等の開発サーバーが 0.0.0.0(全公開)で起動し、同一LAN内の他端末からアクセス可能な状態になっていたため、外部からの通信のみを安全に自動遮断しました。
• ⚙️ 安全な対処法:
  1. 推奨(ローカル限定起動): npm run dev -- -H 127.0.0.1 で起動すると、外部にポートが晒されず遮断通知も出なくなります。
  2. 外部共有が必要な場合: メニューバーのRoamSwitchアイコン >「ポート診断」からポート3000の外部アクセスを許可できます。
💬 パターンB: 緊急遮断後の安全確認・事象分析(テザリング等へ退避後)
カフェでRoamSwitchから「🚨 ARPスプーフィングを検知しました」と出て緊急遮断されたためテザリングに切り替えた。あのWi-Fiで何が起きていたのか、どんな攻撃でどんな防護が働いたのか、今後の安全な対処法を教えて。
⚡ Tool: get_app_help / Resource: roamswitch://docs/alerts-and-messages
RoamSwitch 公式ナレッジベースからの回答:
• 🔍 発生していた事象: 同一Wi-Fi内の別の端末がルーターになりすましてARPパケットを偽造し、通信を盗聴・改ざんしようとする中間者攻撃(MITM)が発生していました。
• 🛡️ RoamSwitchの自動防護: ARPスプーフィング自動遮断が発動し、通信を即座にエアギャップ隔離してパケット傍受を防ぎました。
• 🛑 今後の推奨対応: 当該公衆Wi-Fiには再接続せず、現在のテザリング回線で作業を継続してください。パスワード変更等の確認も推奨します。
💬 パターンC: USB自動排出・安全な登録手順の相談
RoamSwitchから「🔌 未登録のUSBストレージを取り出しました」と出てUSBメモリが弾かれた。自分の安全なUSBなんだけど、読み取り専用で登録して使う手順を教えて。
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
RoamSwitch 公式ナレッジベースからの回答:
• 🔌 排出の理由: 未登録デバイスによる情報漏洩(データ持ち出し)や悪意あるBadUSB攻撃を防ぐため、自動排出(アンマウント)されました。
• ⚙️ 安全な登録手順: 1. メニューバーのRoamSwitchアイコンから「設定」を開く → 2.「USBストレージ保護」タブを選択 → 3.「接続中デバイスから追加」をクリックし当該デバイスを選択 → 4. 権限を「読み取り専用(推奨)」に指定して保存すると、次回接続時から安全にマウントされます。
💬 パターンD: ヘルパー未接続・バックグラウンドプロセスの復旧相談
メニューバーに「⚠️ ヘルパー未接続」と出ている。どうやって復旧させればいい?
⚡ Tool: get_app_help / Resource: roamswitch://docs/troubleshooting
RoamSwitch 公式ナレッジベースからの回答:
• ⚠️ 原因: パケットフィルタ(PF)制御や特権処理を担う常駐デーモン RoamSwitchHelper とのXPC通信が一時的に切断されています。
• 🛠️ 復旧手順:
  1. ターミナルを開き、以下のコマンドでヘルパーを再起動します:
    sudo killall RoamSwitchHelper
  2. RoamSwitchアプリを再起動します。
  3. macOSの「システム設定」>「一般」>「ログイン項目と拡張機能」で RoamSwitchHelper が許可されていることを確認してください。
🧯

緊急遮断(Air-Gap)発動後、ローカルLLM+MCPによるオフライン診断

インシデント対応 / ローカルLLM診断

ランサムウェア検知等でAir-Gap(緊急ネットワーク遮断)が発動すると、Claude Desktop等のクラウドAIとの通信も同時に遮断されます。しかしRoamSwitchのMCPサーバーはローカルプロセス通信のみで動作するため、Ollama等のローカルLLMと組み合わせれば、外部ネットワークが一切ない状態でも診断を継続できます。ログの異常検知・改ざん検知・既知脆弱性照合はすべて完全ローカル完結のため、まさに通信が使えないこの瞬間にこそ機能します。

💬 AIへの指示プロンプト例
RoamSwitchのランサムウェア防護が発動してAir-Gap(緊急ネットワーク遮断)状態になった。ネットは使えないが、今の状況を診断して。いつ・どのプロセスで・どのファイルが影響を受けたか、システムファイルの改ざんはないか、関連する不審なログがないか、既知の脆弱性が悪用された形跡がないか教えて。
⚡ Tools: get_canary_status, get_port_anomaly_incidents, audit_security_logs, get_quarantine_status (Linux Server: get_ebpf_incidents / Mac: get_runtime_threat_status)
オフライン診断結果(外部通信ゼロ):
• 🐛 カナリア発火: 14:32:07に/var/www/decoy_invoice.pdfの暗号化を検知、プロセスsuspicious_enc(PID 8823)を即座に凍結・隔離済み
• 🔌 ポート監視(Port Anomaly Guard): 直近のインシデント履歴に新規の自動遮断なし — 侵入経路はカナリア検知の1件のみで、追加のバックドア設置は確認されず
• 📜 ログ相関(異常検知): 発火12分前からsshdの認証失敗が急増(頻度スパイク検知、Z-score 5.2)— 侵入経路の可能性
• 🔒 改ざん検知(FIM): クリティカルパス約150箇所に改ざんなし — システム領域への侵害拡大は確認されず
• 📦 既知脆弱性照合: ローカルCVEマップと突合、該当パッケージに重大な既知脆弱性なし
💡 推奨対応: 侵害はWebルート配下に限定されている可能性が高い。バックアップからの復元前に、該当ディレクトリの他ファイルも個別確認することを推奨します。
よくある質問

MCP連携について

Q. 本当に外部と通信しませんか?

A. はい。MCPサーバーはAIクライアントに標準入出力(stdio)経由で直接起動されるローカルプロセスで、ネットワーク通信のコードを一切含んでいません。診断結果もこのMac上でその場で計算されます。

Q. Pro版でなくても使えますか?

A. はい、無料版でも全てのツールを利用できます。ただし各種自動ガードの実際の有効性はPro版のライセンス状態にも依存するため、ツール側からは設定のトグル状態のみが確認できます。

Q. 対応しているAIクライアントは?

A. MCP(Model Context Protocol)のstdioトランスポートに対応したクライアントであれば、上記以外でも基本的に利用できます。Claude Desktop・Claude Code・OpenAI Codex CLI・OpenCode・Antigravityで動作確認済みです。

Q. Antigravityで「Hook Failure」等のエラーが出てツールを実行できません

A. Antigravityに導入された外部プラグイン(Google Cloudテレメトリ等)のPreToolUseフックが原因でツール実行がブロックされる場合があります。~/.gemini/config/plugins/.../hooks.json を開き、"enabled": false に設定して無効化してください。

Q. ネットワークが遮断されている状態でも問い合わせできますか?

A. OllamaやLM Studio等のローカルLLM(OpenCode等)をお使いの場合、すべての処理がMac端末内だけで完結するため、RoamSwitchによるネットワーク緊急遮断時でも完全オフラインでそのまま問い合わせが可能です。クラウド型LLM(Claude API等)をお使いの場合は、テザリングなどの安全な回線に切り替えてから問い合わせを行ってください。