mcpField
R
RoboShadow

RoboShadow

ローカル
github.comセキュリティ11 週間前に更新

RoboShadow について

RoboShadowはRubicon Platform Data APIをMCP経由で利用可能にし、AIアシスタントやWYRE ConduitゲートウェイにエンドポイントセキュリティとIT資産の照会機能を提供します。API仕様にある40件の読み取り専用操作を実装し、アクセストークンを内部で更新します。

主な機能

  1. 01組織とユーザーの照会
  2. 02デバイス、ハードウェア、アプリの一覧確認
  3. 03ウイルス対策、ファイアウォール、ディスク状態の確認
  4. 04更新、脆弱性、修復記録の照会
  5. 05外部脆弱性スキャン結果の確認

活用シーン

  1. 01組織のデバイスとインストール済みアプリの棚卸し
  2. 02エンドポイント保護と更新状況の確認
  3. 03脆弱性のあるアプリやデバイスの特定

MCP 対応

Rubicon Platform Data APIを通じて組織データを照会する40件の読み取り専用ツールをMCPクライアントに公開します。トークン更新は内部で行い、ツールとしては公開しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"wyre-ai-roboshadow": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ROBOSHADOW_REFRESH_TOKEN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/roboshadow-mcp:v1.0.2"
],
"env": {
"ROBOSHADOW_REFRESH_TOKEN": "<ROBOSHADOW_REFRESH_TOKEN>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
起動コマンド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.2
設定が必要な環境変数
ROBOSHADOW_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/wyre-ai/roboshadow-mcp:v1.0.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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_TOKENRoboShadow のリフレッシュトークン(ポータルの Reports -> API Token)。stdio および AUTH_MODE=env で必須です。ゲートウェイモードでは読み取られません。
MCP_TRANSPORTstdio(デフォルト)または http。
AUTH_MODEenv(デフォルト。上記の環境変数を読み取ります)または gateway(Conduit ゲートウェイによって挿入される X-RoboShadow-Refresh-Token ヘッダーを介して、リクエストごとに認証情報が渡されます)。ゲートウェイモードでは、このヘッダーがない場合に 401 を返し、ROBOSHADOW_REFRESH_TOKEN へのフォールバックは行いません。コンテナーイメージと Compose のデフォルトは gateway です。
CONDUIT_S2S_SECRETHTTP トランスポートの起動に必須です。すべての /mcp リクエストで X-Gateway-S2S と照合される HMAC シークレットです。空の場合、または既知のプレースホルダー(changeme、your-s2s-secret、その他の公開例)の場合、プロセスはエラーをログに記録してゼロ以外の終了コードで終了します。この値がログに記録されることはありません。未設定の場合、Compose は起動しません。
MCP_ALLOW_INSECURE_DEVCONDUIT_S2S_SECRET なしで HTTP を起動する場合に限り、ローカル開発用として正確に 1 を設定します。プロセスは警告をログに記録し、X-Gateway-S2S を検証せず、127.0.0.1 のみでバインドします。より広い範囲の MCP_HTTP_HOST(0.0.0.0 を含む)は無視されます。既知のプレースホルダーシークレットは引き続き拒否されます。
MCP_HTTP_HOSTMCP_TRANSPORT=http の場合のバインドアドレスです。デフォルトは 127.0.0.1 です。CONDUIT_S2S_SECRET が設定されている場合にのみ有効です。コンテナーイメージでは 0.0.0.0 が設定されます。
MCP_HTTP_PORTHTTP ポートです。デフォルトは 8080 です。
LOG_LEVELdebug | 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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。