RoboShadow について
RoboShadowはRubicon Platform Data APIをMCP経由で利用可能にし、AIアシスタントやWYRE ConduitゲートウェイにエンドポイントセキュリティとIT資産の照会機能を提供します。API仕様にある40件の読み取り専用操作を実装し、アクセストークンを内部で更新します。
主な機能
- 01組織とユーザーの照会
- 02デバイス、ハードウェア、アプリの一覧確認
- 03ウイルス対策、ファイアウォール、ディスク状態の確認
- 04更新、脆弱性、修復記録の照会
- 05外部脆弱性スキャン結果の確認
活用シーン
- 01組織のデバイスとインストール済みアプリの棚卸し
- 02エンドポイント保護と更新状況の確認
- 03脆弱性のあるアプリやデバイスの特定
MCP 対応
Rubicon Platform Data APIを通じて組織データを照会する40件の読み取り専用ツールをMCPクライアントに公開します。トークン更新は内部で行い、ツールとしては公開しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e ROBOSHADOW_REFRESH_TOKEN -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/roboshadow-mcp:v1.0.2ROBOSHADOW_REFRESH_TOKENシークレットRoboShadow Refresh Token, generated at the RoboShadow portal under Reports > API Token. Exchanged internally for a short-lived Bearer Token before each call.MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.AUTH_MODEシークレットCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.LOG_LEVELLog verbosity: debug, info, warn, errorローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/wyre-ai/roboshadow-mcp:v1.0.2stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
RoboShadow MCP サーバー
AI アシスタントおよび WYRE Conduit ゲートウェイ向けの、RoboShadow の Rubicon Platform Data API 用 MCP サーバーです。エンドポイントセキュリティ(ウイルス対策、Windows Defender、ファイアウォール)、資産/ハードウェアのインベントリ、アプリケーション、ユーザー、脆弱性、修復ステータスを扱います。
範囲:ドキュメントに記載されたすべての操作は読み取り専用です(意図的な設計であり、対象を絞ったものではありません)
RoboShadow の Rubicon Platform Data API(https://cdn.development.roboshadow.com/publicapi/openapi.yaml。直接取得)では、15 個のタグ(Antivirus、Applications、Defender、Devices、Disks、Firewall、Hardware、Identity、MFA、Remediation、Services、Updates、Users、Vulnerabilities、Vulnerability Scanner)にわたる 40 個の GET パスと、仕様全体で 唯一の非 GET 操作である POST /identity/bearertoken が定義されています。この POST は、ベンダーがドキュメントに記載している独自の認証情報更新メカニズム(OpenAPI タグ:Authentication)です。リフレッシュトークンを短期間有効なベアラートークンに交換するもので、組織のデータは変更しません。公開されている仕様には、除外対象となる作成/更新/削除/修復実行エンドポイントはありません。今回のセッションにある他のコネクターとは異なり、このコネクターには除外すべき書き込み機能がありません。
このコネクターは、40 個すべての GET 操作をそれぞれ 1 つのツールとして実装し、POST /identity/bearertoken は内部で呼び出します(公開ツールとしては提供しません)。これは自身のアクセストークンを常に有効な状態に保つためだけのものです。 この呼び出しが存在する理由と、ツールとして提供しない理由については、以下の「認証」を参照してください。
認証
RoboShadow の Rubicon Platform Data API は、Bearer トークン(ベンダー独自の仕様では components.securitySchemes.BearerAuth、bearerFormat: JWT)を使用して認証します。RoboShadow ポータルの Reports -> API Token で認証情報を生成すると、Organisation ID、Bearer Token、Refresh Token の 3 つの値がまとめて表示されます。
Bearer Token 自体の有効期間は短く、RoboShadow 独自の BearerTokenResponse スキーマでは、expiresIn が秒単位で定義されています(ベンダーの例では約 1 時間です)。長時間稼働するコネクターに貼り付けたトークンは 1 時間以内に期限切れになるため、このコネクターでは代わりに Refresh Token を保存し、各データ呼び出しの前に内部で新しい Bearer Token と交換します(POST /identity/bearertoken)。結果はプロセス内にキャッシュされ、有効期限が切れる少し前まで再利用されます。Organisation ID は認証情報として保存されません。各ツールの organisationId 引数に渡してください(まだ分からない場合は roboshadow_list_organisations で確認できます)。MSP/リセラーアカウントでは、Refresh Token に複数の組織を関連付けられるためです。
ここでは、意図的に確信度を変えた 2 つの主張をしています。このバッチのコネクター全体で採用している 2 段階の区分です。
- 構造的に検証済み(直接確認済みで、確信を持って明記): このコネクター独自のコードは、RoboShadow のデータ API に対して変更を伴う呼び出しを一切行いません。組織データを読み取る
client.ts内のすべての関数は、公開仕様にある 40 個の専用 GET 操作のいずれかを呼び出します。src/内で GET 以外の呼び出しは Bearer Token との交換だけであり、これは MCP ツールとして公開されていません。 - ベンダーの文書に記載(独立した検証は未実施のため、意図的に断定を避けています): RoboShadow 独自の OpenAPI 仕様では、組織データを書き込む/変更するエンドポイントはどこにも定義されていません。代わりに要求できる、スコープを限定した読み取り専用の Bearer/Refresh Token もありません。完全なトークンで許可されるのは、ベンダー独自の仕様が許可するものと同じく、読み取りのみです。RoboShadow プラットフォームの別の未文書化部分(この Organisation-Endpoints 仕様の範囲外)が同じトークンで書き込み呼び出しを受け付けるかどうかは、WYRE ではテストしていません。この仕様とこのコネクターが書き込み機能を公開していないことのみ確認しています。
ゲートウェイモードでは、リクエストごとに X-RoboShadow-Refresh-Token ヘッダーを通じて Refresh Token が渡され、ヘッダーがない場合はリクエストが拒否されます。サーバーは ROBOSHADOW_REFRESH_TOKEN にフォールバックしません。ローカル/stdio モードでは、この環境変数から値を読み取ります。HTTP モードでは、以下で説明する X-Gateway-S2S 署名も必要です。
設定
| 環境変数 | 説明 |
|---|---|
ROBOSHADOW_REFRESH_TOKEN | RoboShadow のリフレッシュトークン(ポータルの Reports -> API Token)。stdio および AUTH_MODE=env で必須です。ゲートウェイモードでは読み取られません。 |
MCP_TRANSPORT | stdio(デフォルト)または http。 |
AUTH_MODE | env(デフォルト。上記の環境変数を読み取ります)または gateway(Conduit ゲートウェイによって挿入される X-RoboShadow-Refresh-Token ヘッダーを介して、リクエストごとに認証情報が渡されます)。ゲートウェイモードでは、このヘッダーがない場合に 401 を返し、ROBOSHADOW_REFRESH_TOKEN へのフォールバックは行いません。コンテナーイメージと Compose のデフォルトは gateway です。 |
CONDUIT_S2S_SECRET | HTTP トランスポートの起動に必須です。すべての /mcp リクエストで X-Gateway-S2S と照合される HMAC シークレットです。空の場合、または既知のプレースホルダー(changeme、your-s2s-secret、その他の公開例)の場合、プロセスはエラーをログに記録してゼロ以外の終了コードで終了します。この値がログに記録されることはありません。未設定の場合、Compose は起動しません。 |
MCP_ALLOW_INSECURE_DEV | CONDUIT_S2S_SECRET なしで HTTP を起動する場合に限り、ローカル開発用として正確に 1 を設定します。プロセスは警告をログに記録し、X-Gateway-S2S を検証せず、127.0.0.1 のみでバインドします。より広い範囲の MCP_HTTP_HOST(0.0.0.0 を含む)は無視されます。既知のプレースホルダーシークレットは引き続き拒否されます。 |
MCP_HTTP_HOST | MCP_TRANSPORT=http の場合のバインドアドレスです。デフォルトは 127.0.0.1 です。CONDUIT_S2S_SECRET が設定されている場合にのみ有効です。コンテナーイメージでは 0.0.0.0 が設定されます。 |
MCP_HTTP_PORT | HTTP ポートです。デフォルトは 8080 です。 |
LOG_LEVEL | debug | info(デフォルト)| warn | error。 |
/health は認証されず、認証情報も読み取りません。stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。
X-Gateway-S2S
MCP_TRANSPORT=http かつ CONDUIT_S2S_SECRET が設定されている場合、すべての /mcp リクエストにゲートウェイ署名付きの X-Gateway-S2S ヘッダーを含める必要があります。
X-Gateway-S2S: t=<unix seconds>,v1=<hex hmac-sha256>
v1 は、リテラル文字列 t=<unix seconds>(ヘッダーに含まれるものと同じ t= プレフィックスと値)の HMAC-SHA256 で、CONDUIT_S2S_SECRET を鍵として使用し、小文字の 16 進数でエンコードします。タイムスタンプはサーバーのクロックとの差が 300 秒以内でなければなりません。ヘッダーがない場合、または無効な場合は 401 を返し、ハンドラーはベンダーの認証情報を読み取りません。
AUTH_MODE=gateway の場合、/mcp では X-RoboShadow-Refresh-Token も必要です。ヘッダーがない場合、または空の場合は 401 を返します。サーバーはプロセス環境の ROBOSHADOW_REFRESH_TOKEN にフォールバックしません。
リクエスト制限
- HTTP リクエスト本文の上限は 256 KiB(262144 バイト)です。
X-Gateway-S2Sの検証に成功した後、Content-Lengthが上限を超えている場合は、JSON-RPC エラーを伴う 413 を返します。Content-Lengthのない本文には MCP SDK トランスポートが上限を適用します。未認証のリクエストには、先に 401 を返します。 tools/callの引数は 10,000 個の要素(任意の深さにあるすべての配列項目とオブジェクトキー)を上限とします。これを超える入力にはisErrorツール結果を返し、ディスパッチは行いません。
これらの制限は、CVE-2026-111768 / GHSA-46jr-4wx8-v453(検証中のメモリ枯渇)および GHSA-f897-62hf-6gxq(リクエスト本文/バッチの上限なし)に対処するものです。
ツール
Rubicon Platform Data API の公開仕様にある GET 操作ごとに 1 つ、合計 40 個の読み取り専用ツールがあります。組織スコープのデータを読み取るツールはすべて organisationId を受け取ります。roboshadow_list_organisations で確認してください。
ID
roboshadow_list_organisations- このリフレッシュトークンで表示できるすべての組織を一覧表示します。roboshadow_list_organisation_users- 組織のユーザーを一覧表示します(表示名、メールアドレス、権限レベル)。PII - 管理者権限が必要です。
MFA
roboshadow_get_mfa_report- Microsoft ID にリンクされた組織のページ分けされた MFA ステータスレポート(登録済みの方法、MFA ステータス、グローバル管理者フラグ)です。PII/ID データ - 管理者権限が必要です。
脆弱性スキャナー
roboshadow_list_scan_status- 外部脆弱性スキャン(VScanner)ごとのステータス。スケジュール/ステータスで絞り込めます。roboshadow_get_scan_summary- 1件のスキャンの詳細な概要(IPおよびWeb脆弱性の合計)。roboshadow_get_scan_ips_overview- 1件のスキャンにおける対象ごとのCVE/ポートの内訳。
アプリケーション
roboshadow_list_application_groups- 組織全体のアプリケーションをグループ化し、インストール数/デバイス数/バージョン数を表示します。roboshadow_get_application_group- 1つのアプリケーショングループの詳細。roboshadow_get_device_applications- 1台のデバイスにインストールされているアプリケーション。
デバイス
roboshadow_list_devices- 組織内のすべてのデバイス。ハードウェア/OSの識別情報、ネットワークアドレス、健全性スコア、CVE/更新プログラムの数を表示します。PII(IP/MACアドレス、ログオンユーザー、シリアル番号)- 管理者のみ利用可能です。roboshadow_get_device- 1台のデバイスの詳細。PII - 管理者のみ利用可能です。roboshadow_get_device_user_profiles- 1台のデバイスのWindowsユーザープロファイル(SIDを含む)。PII - 管理者のみ利用可能です。roboshadow_get_device_users- 1台のデバイスのローカル/ADユーザー(メールアドレス、従業員ID、管理者フラグ)。PII - 管理者のみ利用可能です。
ウイルス対策/Defender
roboshadow_get_device_antivirus- 1台のデバイスのウイルス対策/エンドポイント保護の状態。roboshadow_get_antivirus_report_by_device- すべてのデバイスのウイルス対策ステータス。roboshadow_get_ransomware_report- すべてのデバイスのランサムウェア保護の状態。roboshadow_get_antivirus_summary- 組織全体のウイルス対策の概要。roboshadow_get_antivirus_threats- 組織全体で検出されたウイルス対策の脅威。roboshadow_get_windows_defender_report- すべてのデバイスのWindows Defender構成ステータス。
ファイアウォール
roboshadow_get_firewall_report- すべてのデバイスのWindowsファイアウォールの状態(プロファイルごと)。
ディスク
roboshadow_get_device_disks- 1台のデバイスのディスク。roboshadow_get_disk_shares- 1つのディスクで公開されているネットワーク共有。roboshadow_get_disk_report- ディスクごとにグループ化した、組織全体のディスク使用状況。roboshadow_get_disk_report_by_device- デバイスごとにグループ化したディスク情報。roboshadow_get_disk_summary- 組織全体のディスク使用状況の概要(空き容量の少ないデバイス、暗号化されていないドライブ、共有、USBディスク)。
ハードウェア
roboshadow_get_hardware_report_by_device- デバイスごとにグループ化したハードウェアインベントリ。roboshadow_get_hardware_summary- 組織全体のハードウェアの概要。
サービス
roboshadow_get_device_services- 1台のデバイスのWindowsサービス。引用符で囲まれていないサービスパスの脆弱性フラグを含みます。
更新プログラム
roboshadow_get_device_updates- 1台のデバイスに不足しているWindows更新プログラム。roboshadow_get_updates_report_by_device- デバイスごとにグループ化した、ページ分割された不足更新プログラムのレポート。roboshadow_get_updates_summary- 組織全体の更新プログラムの概要と、対応が必要な上位デバイス。
脆弱性
roboshadow_get_device_vulnerability_summary- 1台のデバイスについて、アプリケーションごとのCVE詳細と重大度の集計。roboshadow_get_vulnerable_applications- 組織全体で既知の脆弱性があるアプリケーション。roboshadow_get_cpe_vulnerabilities- 組織全体のCPE脆弱性の検出結果。roboshadow_get_cve_vulnerabilities- 組織に影響するCVE(CVSS/EPSS、悪用確認済みフラグ)。roboshadow_get_cve_fixes- 1件のCVEに利用可能な修正/パッチ。roboshadow_get_vulnerable_devices- 既知の脆弱性があるデバイス。roboshadow_get_vulnerabilities_summary- 組織全体の脆弱性の概要と、重大なアプリケーション/CVE/デバイスの上位5件。
修復
roboshadow_get_remediation_report- 組織全体の脆弱性修復の試行(アクション、対象、結果)。roboshadow_get_remediation_attempt_cves- 1件の修復試行で対処したCVE。
機微性
RoboShadow はエンドポイントセキュリティおよび脆弱性管理プラットフォームです。このコネクターの 40 個のツールの大半は、単なる読み取りであっても、PII(デバイスユーザーの SID、従業員 ID、メールアドレス、デバイスのログオンユーザー、IP/MAC アドレス、シリアル番号)、ID/MFA の状態、またはセキュリティ評価データ(脆弱性、脅威、修復結果、外部スキャン結果)を扱います。同じ期間の同種ベンダー(Cork、CyberQP、Cisco Duo、Slide)と同じ方針に従い、このコネクターのすべてのツールは、動詞にかかわらず Conduit の配線で isAdmin: true になります。これは意図的なベンダー全体の設計判断であり、ツールごとに機微な読み取り権限を昇格させるものではなく、vendor-config.ts の roboshadow エントリーに一度だけ記載されています。
開発
npm install
npm run build
npm test
npm run lint # tsc --noEmit
Docker
イメージはコンテナー内で 0.0.0.0(MCP_HTTP_HOST)をリッスンし、デフォルトで AUTH_MODE=gateway を使用します。起動時には引き続き、CONDUIT_S2S_SECRET が実際のシークレットでなければ実行を拒否します。ポートはループバックで公開してください。ゲートウェイモードでは、更新トークンはリクエストごとに X-RoboShadow-Refresh-Token として渡され、環境変数からは読み込まれません。
docker build -t roboshadow-mcp .
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-p 127.0.0.1:8080:8080 \
roboshadow-mcp
Compose は、CONDUIT_S2S_SECRET が設定されていない場合は起動を拒否し、AUTH_MODE のデフォルトを gateway に設定して、127.0.0.1:8080:8080 を公開します。また、ROBOSHADOW_REFRESH_TOKEN は設定しません。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up
シングルテナント HTTP(AUTH_MODE=env)でも S2S シークレットが必要です。その後、ROBOSHADOW_REFRESH_TOKEN を使用します。
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=env \
-e ROBOSHADOW_REFRESH_TOKEN="$ROBOSHADOW_REFRESH_TOKEN" \
-p 127.0.0.1:8080:8080 \
roboshadow-mcp
シークレットなしのローカル HTTP は開発専用です。MCP_HTTP_HOST が 0.0.0.0 であっても 127.0.0.1 にバインドされ、警告がログに記録されます。
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm run start:http
ライセンス
Apache-2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。