RocketCyber について
RocketCyber Managed SOCのデータを読み取り専用で利用するMCPサーバーです。インシデントや監視対象エンドポイントなどを確認するクライアント向けで、stdioとHTTP Streamableに対応しています。
主な機能
- 01RocketCyberデータ用の読み取り専用ツール10種
- 02アカウント、インシデント、Agentのリソース
- 03イベント、デバイス、状態の照会
- 04stdioとHTTP Streamableに対応
- 05接続確認ツール
活用シーン
- 01セキュリティインシデントとイベントの確認
- 02監視対象Agentとファイアウォールの確認
- 03DefenderとOffice 365の状態確認
MCP 対応
10個の読み取り専用MCPツールと3個のリソースでRocketCyber APIのデータを公開します。stdioとHTTP Streamableに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e ROCKETCYBER_API_KEY -e ROCKETCYBER_CUSTOMER_ID -e ROCKETCYBER_API_URL -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/rocketcyber-mcp:v1.6.3ROCKETCYBER_API_KEYシークレットRocketCyber API key for authenticating to the Managed SOC APIROCKETCYBER_CUSTOMER_IDRocketCyber customer (tenant) identifierROCKETCYBER_API_URLRocketCyber API base URL — override only if using a non-default regionMCP_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/rocketcyber-mcp:v1.6.3stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
rocketcyber-mcp
RocketCyber マネージド SOC プラットフォーム向けの MCP(Model Context Protocol)サーバーです。10 個のツールと 3 個のリソースを通じて、RocketCyber のセキュリティデータに読み取り専用でアクセスできます。
機能
- RocketCyber API のすべてのリソースをカバーする 10 個の読み取り専用ツール。それぞれに
readOnlyHint: trueの注釈が付いているため、MCP クライアント(Microsoft 365 Copilot など)は呼び出しごとの確認プロンプトを省略できます - データにすばやくアクセスできる 3 個の MCP リソース
- 2 種類のトランスポートに対応:stdio(デフォルト)と HTTP Streamable
- 最初のツール呼び出し時に SDK を遅延初期化
- すべての出力を stderr に送る Winston ロガー
- 認証情報を検証する接続テストツール
ワンクリックデプロイ
重要
クリックする前に: このサーバーは
@wyre-ai/node-rocketcyberに依存しており、 GitHub Packages npm レジストリでホストされています。GitHub Packages には匿名アクセスがなく、 パッケージが公開されていても、npm installのたびにトークンが必要です。クラウドビルダーはnpm installを実行するため、トークンを渡す必要があります。渡さないと、ビルドはnpm error 401 Unauthorized ... npm.pkg.github.comで失敗します。
read:packagesスコープを持つ GitHub Personal Access Token を作成します (クラシックトークン)。 どの GitHub アカウントでも利用でき、公開パッケージの読み取りにWYRE-AI組織のメンバーである必要はありません。- デプロイの手順で求められたら、ビルド変数として追加します:
- Cloudflare Workers →
NODE_AUTH_TOKENという名前のビルド変数に PAT を設定します (Workers → Settings → Build → Variables and Secrets)。- DigitalOcean App Platform → Build Time スコープの暗号化環境変数
GITHUB_TOKENに PAT を設定します(Dockerfile はインストール時にこれを読み込みます)。
インストール
このプロジェクトは、GitHub Packages npm レジストリで公開されている
@wyre-ai/node-rocketcyber に依存しています。このパッケージは公開されていますが、インストールにはトークンが必要です。
一度認証してから、インストールしてください:
# Authenticate npm to GitHub Packages (token needs the read:packages scope)
export NODE_AUTH_TOKEN=$(gh auth token) # or a PAT with read:packages
npm install
npm run build
リポジトリの .npmrc は、すでに @wyre-ai スコープを GitHub Packages に向け、
トークンを NODE_AUTH_TOKEN から読み込むように設定されているため、追加の設定は不要です。
設定
.env.example をコピーし、以下の変数を設定します。
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
ROCKETCYBER_API_KEY | stdio および AUTH_MODE=env で必須 | - | RocketCyber API キー |
ROCKETCYBER_REGION | いいえ | us | API リージョン:us または eu |
MCP_TRANSPORT | いいえ | stdio | トランスポートの種類:stdio または http |
AUTH_MODE | いいえ | env(イメージと Compose では gateway に設定) | gateway では、各 /mcp リクエストに X-RocketCyber-API-Key が必要で、ROCKETCYBER_* へのフォールバックは行いません。env では、S2S 認証に成功した後にのみこれらの変数を使用します。 |
CONDUIT_S2S_SECRET | HTTP では必須 | - | サービス間シークレット。この値が空、または既知のプレースホルダー(changeme、secret、replace-me、your-s2s-secret およびその他のサンプル値)の場合、HTTP サーバーはエラーを記録してゼロ以外の終了コードで終了します。openssl rand -hex 32 で生成してください。設定されていない場合、Compose は起動しません。この値がログに記録されることはありません。 |
MCP_ALLOW_INSECURE_DEV | いいえ | - | CONDUIT_S2S_SECRET なしで HTTP を起動する場合に限り、ローカル開発用として 1 に設定します。プロセスは警告を記録し、X-Gateway-S2S を必須とせず、127.0.0.1 のみでバインドします。MCP_HTTP_HOST にループバック以外のアドレスを設定しても上書きされます。既知のプレースホルダーシークレットが設定されている場合は、引き続き起動を拒否します。 |
MCP_HTTP_PORT | いいえ | 8080 | HTTP ポート(http トランスポート使用時) |
MCP_HTTP_HOST | いいえ | 実際のシークレットが設定されている場合は 0.0.0.0 | CONDUIT_S2S_SECRET が設定されている場合のバインドアドレス。未設定の場合は 0.0.0.0 のままです。シークレットがない場合、開発用のバイパスではこの値を無視して 127.0.0.1 にバインドします。コンテナイメージでは 0.0.0.0 に設定されています。 |
LOG_LEVEL | いいえ | info | ログレベル:error、warn、info、debug |
LOG_FORMAT | いいえ | simple | ログ形式:json または simple |
/health は認証なしで利用でき、認証情報を読み取りません。stdio トランスポートでは CONDUIT_S2S_SECRET を使用しません。
HTTP 認証
MCP_TRANSPORT=http かつ実際の CONDUIT_S2S_SECRET が設定されている場合、すべての /mcp リクエストに X-Gateway-S2S を含める必要があります。チェックは src/mcp/s2s-verify.ts の verifyS2sHeader で行います。ヘッダー値は t=<unix seconds>,v1=<hex> の形式で、hex は CONDUIT_S2S_SECRET をキーとして、リテラル文字列 t=<unix seconds> に対して計算した HMAC-SHA256(小文字の 16 進数 64 文字)です。タイムスタンプはサーバー時刻との差が 300 秒以内でなければなりません。ヘッダーがない場合、または無効な場合は、ベンダーの認証情報を読み取る前に HTTP 401 を返します。
TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}')
curl -sS http://127.0.0.1:8080/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H "X-Gateway-S2S: t=${TS},v1=${SIG}" \
-H "X-RocketCyber-API-Key: $ROCKETCYBER_API_KEY" \
-H "X-RocketCyber-Region: us" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
AUTH_MODE=gateway では、/mcp に X-RocketCyber-API-Key も必要です(X-RocketCyber-Region は任意です)。このヘッダーのみがリクエストの認証情報ソースとなります。API キーがない場合、または空白の場合は HTTP 401 を返し、ROCKETCYBER_API_KEY へのフォールバックは行いません。AUTH_MODE=env でも署名済みの X-Gateway-S2S ヘッダーが必要で、その後、環境変数の ROCKETCYBER_API_KEY を使用します。
使い方
Claude Desktop(stdio)
Claude Desktop の設定(claude_desktop_config.json)に追加します。
{
"mcpServers": {
"rocketcyber": {
"command": "node",
"args": ["/path/to/rocketcyber-mcp/dist/entry.js"],
"env": {
"ROCKETCYBER_API_KEY": "your-api-key"
}
}
}
}
HTTP トランスポート
CONDUIT_S2S_SECRET が実際のシークレット(既知のプレースホルダーではない値)になるまで、HTTP は起動しません。ポートはループバックで公開してください。
# Single-tenant HTTP. Uses ROCKETCYBER_API_KEY after X-Gateway-S2S verifies.
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
ROCKETCYBER_API_KEY=your-api-key \
MCP_TRANSPORT=http \
npm start
# Local HTTP only, without a service-to-service secret. Always binds 127.0.0.1.
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
Docker
イメージはコンテナ内で 0.0.0.0(MCP_HTTP_HOST)をリッスンし、デフォルトで AUTH_MODE=gateway に設定されています。ポートはループバックで公開し、実際の S2S シークレットを渡してください。ゲートウェイモードでは、RocketCyber の認証情報は各リクエストのヘッダーで渡され、環境変数からは読み込まれません。
docker build -t rocketcyber-mcp --build-arg GITHUB_TOKEN="$GITHUB_TOKEN" .
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-p 127.0.0.1:8080:8080 \
rocketcyber-mcp
CONDUIT_S2S_SECRET が設定されていない場合、Compose は起動を拒否します。ゲートウェイサービスでは AUTH_MODE=gateway を設定し、ROCKETCYBER_API_KEY を注入せず、127.0.0.1:8080:8080 でポートを公開します。
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" GITHUB_TOKEN="$GITHUB_TOKEN" docker compose up
シングルテナント HTTP(AUTH_MODE=env)でも S2S シークレットが必要で、その後 ROCKETCYBER_API_KEY を使用します。これは、上記のゲートウェイ Compose サービスとは別の構成です。
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=env \
-e ROCKETCYBER_API_KEY=your-api-key \
-e ROCKETCYBER_REGION=us \
-p 127.0.0.1:8080:8080 \
rocketcyber-mcp
ツール
以下のすべてのツールはデータの読み取りのみを行います(RocketCyber API への書き込みを行うツールはありません)。そのため、tools/list のレスポンスではそれぞれに annotations: { readOnlyHint: true } が設定されています。readOnlyHint を尊重する MCP クライアント(Microsoft 365 Copilot / Copilot Studio など)は、各ツール呼び出しの前に通常表示される確認プロンプトを省略するためにこれを使用します。
| ツール | 説明 | readOnlyHint |
|---|---|---|
rocketcyber_test_connection | RocketCyber API への接続をテストします | true |
rocketcyber_get_account | アカウント情報を取得します | true |
rocketcyber_list_agents | 監視対象のエージェント/エンドポイントを一覧表示します | true |
rocketcyber_list_incidents | セキュリティインシデントを一覧表示します | true |
rocketcyber_list_events | セキュリティイベントを一覧表示します | true |
rocketcyber_get_event_summary | イベントの概要/統計情報を取得します | true |
rocketcyber_list_firewalls | ファイアウォールデバイスを一覧表示します | true |
rocketcyber_list_apps | 管理対象アプリを一覧表示します | true |
rocketcyber_get_defender | Windows Defender のステータスを取得します | true |
rocketcyber_get_office | Office 365 のステータスを取得します | true |
リソース
| URI | 説明 |
|---|---|
rocketcyber://account | アカウント情報 |
rocketcyber://incidents | セキュリティインシデント |
rocketcyber://agents | 監視対象のエージェント/エンドポイント |
開発
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build
npm run build
# Start production server
npm start
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。