RAD Security

公式

RAD Securityプラットフォームと連携し、Kubernetesおよびクラウド環境向けのAI駆動型セキュリティインサイトを提供します。

RAD Security MCPで何ができますか?

  • セキュリティ調査結果の一覧表示 — アシスタントに、Kubernetesおよびクラウド環境全体のセキュリティ調査結果を一覧表示および分析するよう依頼します。
  • ランタイム動作の調査 — 実行中のコンテナについて、プロセスツリー、ランタイムベースライン、プロセス動作分析を取得します。
  • イメージと脆弱性の照会 — SBOMを取得し、脆弱性の多い上位イメージを一覧表示し、CVEの無視や無視解除などのCVE対応を管理します。
  • 自動化の管理 — チャットから直接、cronスケジュールを使用して自動化(ワークフロー)を一覧表示、作成、更新、実行します。
  • ナレッジベースの検索 — コレクションとドキュメントを検索し、特定のドキュメントに対して構造化クエリを実行します。
  • RadQLクエリの実行 — コンテナや調査結果などのデータタイプにわたって、フィルタリング、検索、集計を使用した高度なクエリを実行します。

ドキュメント

RAD Security MCP Server

npm version

RAD Security 用の Model Context Protocol(MCP)サーバー。Kubernetes およびクラウド環境向けに、AI を活用したセキュリティインサイトを提供します。

RAD Security MCP server

接続(ホスト型 — 推奨)

RAD Security が MCP サーバーを代行運用するため、ほとんどのユーザーはインストールやホスティングの必要はありません。MCP クライアントをホスト型エンドポイントに接続し、RAD Security の認証情報で認証します。

  • エンドポイント: https://api.rad.security/mcp/末尾のスラッシュに注意してください。

  • トランスポート: Streamable HTTP。

  • 認証: Authorization ヘッダーで認証情報を送信します:

    Authorization: Bearer <access_key_id>:<secret_key>:<account_id>
    

    <access_key_id><secret_key> は RAD Security の API アクセスキーです(RAD Security コンソールで作成できます)。<account_id> はアカウント ID です。サーバーはすべてのリクエストを RAD Security API に対して認証します。認証情報がサーバー側に保存されることはありません。

短時間有効な Bearer ory_st_<session_token>:<account_id> も使用できますが、セッショントークンは期限切れになります。長期間使用するもの(Slack / Claude Tag など)にはアクセスキーを推奨します。

Claude Code

claude mcp add --transport http rad-security https://api.rad.security/mcp/ \
  --header "Authorization: Bearer <access_key_id>:<secret_key>:<account_id>"

OpenAI Codex CLI

~/.codex/config.toml:

[mcp_servers.rad-security]
url = "https://api.rad.security/mcp/"
http_headers = { "Authorization" = "Bearer <access_key_id>:<secret_key>:<account_id>" }

または CLI 経由で、シークレットを環境変数(export RAD_MCP_TOKEN=<access_key_id>:<secret_key>:<account_id>)に保持します:

codex mcp add rad-security --url https://api.rad.security/mcp/ --bearer-token-env-var RAD_MCP_TOKEN

Cursor

.cursor/mcp.json:

{
  "mcpServers": {
    "rad-security": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

VS Code (GitHub Copilot)

.vscode/mcp.json — ラッパーキーは servers であり、mcpServers ではないことに注意してください:

{
  "servers": {
    "rad-security": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Gemini CLI

~/.gemini/settings.json — URL フィールドは httpUrlurl ではない)ことに注意してください:

{
  "mcpServers": {
    "rad-security": {
      "httpUrl": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Cline

cline_mcp_settings.jsontype は正確に streamableHttp(camelCase)でなければならないことに注意してください:

{
  "mcpServers": {
    "rad-security": {
      "type": "streamableHttp",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json — URL フィールドは serverUrl であることに注意してください:

{
  "mcpServers": {
    "rad-security": {
      "serverUrl": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

その他のクライアント

ほとんどの MCP クライアントは、URL と Authorization ヘッダーを持つリモート Streamable HTTP サーバーを受け入れます。フィールド名が異なるだけです。すべてのケースで URL の末尾のスラッシュを維持してください。

クライアント設定場所URL フィールドトランスポート識別子ヘッダーフィールド
Claude Codeclaude mcp add位置引数--transport http--header
OpenAI Codex CLI~/.codex/config.tomlurl推測http_headers / bearer_token_env_var
Cursor.cursor/mcp.jsonurltype: "http"headers
VS Code.vscode/mcp.json (servers)urltype: "http"headers
Gemini CLI~/.gemini/settings.jsonhttpUrl推測headers
Clinecline_mcp_settings.jsonurltype: "streamableHttp"headers
Windsurf~/.codeium/windsurf/mcp_config.jsonserverUrl推測headers

Claude.ai / Claude Desktop / Claude Tag (Slack)

これらのサーフェスでは、リモート MCP サーバーをコネクタとして追加します。コネクタは独自の認証設定を使用し、生のリクエストヘッダーは使用しません。https://api.rad.security/mcp/ をカスタムコネクタとして追加し、コネクタの設定でベアラー認証情報を指定します:

  • Claude Tag (Slack): サーバーをプラグインとしてアタッチし、プラグインの .mcp.json がエンドポイントを指すように設定し、Access バンドルの Credentials タブでベアラー認証情報を追加します。Claude Tag — カスタム MCP サーバーを接続 を参照してください。
  • Claude.ai / Desktop: Settings → Connectors で追加します。カスタムコネクタ を参照してください。

テスト(MCP Inspector または curl)

npx @modelcontextprotocol/inspector
# Transport:      Streamable HTTP
# URL:            https://api.rad.security/mcp/   (trailing slash)
# Custom headers: { "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>" }
curl -H "authorization: Bearer <access_key_id>:<secret_key>:<account_id>" \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -X POST https://api.rad.security/mcp/ \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

エージェントが参照するツールのスコープ設定

デフォルトでは、接続はすべてのツールキットを取得します。エージェントに小さなセットを提供する場合(コンテキスト/トークンのオーバーヘッド削減、最小権限の原則)は、その接続に Authorization とともにスコープ設定ヘッダーを追加します。サブセットは強制されます。スコープ外のツールは tools/list から隠され、呼び出された場合も拒否されます。

ヘッダー効果
X-Rad-Toolkits: findings, imagesこれらのツールキットのみ
X-Rad-Exclude-Toolkits: workflowsこれら以外のすべてのツールキット
X-Rad-Readonly: true読み取り専用ツールのみ(書き込みツールを除外)

ツールキット: containersclustersauditimageskubeobjectruntimefindingsinboxworkflowsknowledge_baseradqldashboardsintegrations。すべてデフォルトで有効です。上記のヘッダーで絞り込み、すべての書き込みツールを除外する場合は X-Rad-Readonly を使用します。

例 — 読み取り専用の findings/images エージェント(ヘッダーをサポートする任意のクライアント。Cursor での例):

{
  "mcpServers": {
    "rad-security-findings": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>",
        "X-Rad-Toolkits": "findings, images",
        "X-Rad-Readonly": "true"
      }
    }
  }
}

Claude Code では、追加の --header を渡します:

claude mcp add --transport http rad-security https://api.rad.security/mcp/ \
  --header "Authorization: Bearer <access_key_id>:<secret_key>:<account_id>" \
  --header "X-Rad-Toolkits: findings, images"

機能

すべてのツールは認証と RAD Security のアカウントを必要とします。ホスト型エンドポイントはデフォルトで以下のすべてのツールキットを公開します。X-Rad-Toolkits / X-Rad-Exclude-Toolkits でクライアントを絞り込むか、X-Rad-Readonly: true ですべての書き込みツールを除外できます。

  • Account Inventory

    • クラスターとその詳細を一覧表示
  • Containers Inventory

    • コンテナとその詳細を一覧表示
  • Security Findings

    • セキュリティ finding を一覧表示・分析
    • セキュリティ finding のステータスを更新
  • Runtime Security

    • 実行中コンテナのプロセスのツリーを取得
    • 実行中コンテナのランタイムベースラインを取得
    • 実行中コンテナのプロセス動作を分析
  • Audit

    • ポッドにシェルインしたユーザーを一覧表示
  • Images and Vulnerabilities

    • SBOM を取得
    • イメージとその脆弱性を一覧表示
    • 脆弱性の高いイメージのトップを取得
    • CVE を無視 / 無視解除し、アクティブな CVE 処置を一覧表示
  • Kubernetes Objects

    • 特定の Kubernetes リソースの詳細を取得
    • Kubernetes リソースを一覧表示
  • Inbox

    • インボックス項目とその詳細を一覧表示
    • インボックス項目を誤検知としてマーク
  • Automations (workflows)

    • オートメーション、実行、スケジュールを一覧表示
    • オートメーションと実行の詳細を取得
    • オートメーションを実行
    • オートメーションを作成・更新し、cron スケジュールを追加

    「Automation」はユーザーに表示される製品名です。「workflow」は、API およびツール名が使用する基盤となる Windmill オブジェクトです。両者は同じものです。

  • Knowledge Base

    • ナレッジベースを検索
    • コレクションとドキュメントを一覧表示
    • ドキュメントに対して構造化クエリを実行
  • Dashboards

    • ダッシュボードを一覧表示し、その詳細を取得
    • ダッシュボードおよびウィジェットテンプレートを一覧表示・取得
    • ダッシュボードを作成し、その場で更新(省略したフィールドは変更されないため、小さな編集でダッシュボード全体を再送信する必要はありません)
  • Integrations

    • 外部統合を一覧表示
  • RadQL (高度なクエリ)

    • クエリ可能なデータ型を一覧表示(コンテナ、finding、kubernetes_resources など)
    • 特定のデータ型のスキーマ/メタデータを取得
    • フィルターフィールドの可能な値を一覧表示
    • フィルタリング、検索、集計を備えた RadQL クエリを実行
    • 構造化条件からプログラム的にクエリを構築
    • 複数のクエリを並列実行

セルフホスティング

サーバーを自分で実行したい場合(例: エアギャップ環境、データ保管場所の要件、またはホスト型ゲートウェイを経由したくない場合)は、npm およびコンテナイメージとして公開されています。

前提条件

  • Node.js 20.x 以上

認証情報

環境変数で RAD Security の認証情報を指定します:

RAD_SECURITY_ACCESS_KEY_ID="your_access_key"
RAD_SECURITY_SECRET_KEY="your_secret_key"
RAD_SECURITY_ACCOUNT_ID="your_account_id"

# Optional: fetched automatically from the account if not set
RAD_SECURITY_TENANT_ID="your_tenant_id"

npx (stdio) — 例: Claude Desktop

{
  "mcpServers": {
    "rad-security": {
      "command": "npx",
      "args": ["-y", "@rad-security/mcp-server"],
      "env": {
        "RAD_SECURITY_ACCESS_KEY_ID": "<your-access-key-id>",
        "RAD_SECURITY_SECRET_KEY": "<your-secret-key>",
        "RAD_SECURITY_ACCOUNT_ID": "<your-account-id>"
      }
    }
  }
}

Docker (Streamable HTTP)

docker build -t rad-security/mcp-server .
docker run \
  -e TRANSPORT_TYPE=streamable \
  -e RAD_SECURITY_ACCESS_KEY_ID=your_access_key \
  -e RAD_SECURITY_SECRET_KEY=your_secret_key \
  -e RAD_SECURITY_ACCOUNT_ID=your_account_id \
  -p 3000:3000 \
  rad-security/mcp-server

ツールキットのフィルタリング

セルフホスト型サーバーが公開するツールキットを制御します:

  • INCLUDE_TOOLKITS: 含めるツールキットのカンマ区切りリスト(これらだけが有効になります)。
  • EXCLUDE_TOOLKITS: 除外するツールキットのカンマ区切りリスト(それ以外はすべて有効になります)。INCLUDE_TOOLKITS が設定されている場合は無視されます。

利用可能なツールキット: containersclustersauditimageskubeobjectruntimefindingsinboxworkflowsknowledge_baseradqldashboardsintegrations。すべてデフォルトで有効です。

# Only the workflows toolkit
INCLUDE_TOOLKITS="workflows"

# Everything except runtime
EXCLUDE_TOOLKITS="runtime"

マルチテナント(リクエストごとの認証)

MCP_AUTH_MODE は、streamable HTTP デプロイメントがインバウンドリクエストを認証する方法を制御します。これはホスト型エンドポイントが使用するものです:

  • MCP_AUTH_MODE=env(デフォルト)— すべてのセッションで RAD_SECURITY_* 環境認証情報を使用します。シングルテナントであり、HTTP レイヤーでは認証されません。信頼できないネットワークから到達可能であってはなりません。
  • MCP_AUTH_MODE=header — すべてのリクエストは Authorization ヘッダーに独自の認証情報を含める必要があります(上記の Bearer <access_key_id>:<secret_key>:<account_id> 形式)。ヘッダーがない場合や不正な形式の場合は 401 で拒否されます。TRANSPORT_TYPE=streamable でのみサポートされます。RAD_SECURITY_API_URL は呼び出し元ではなくサーバー設定から取得されます。
docker run \
  -e TRANSPORT_TYPE=streamable \
  -e MCP_AUTH_MODE=header \
  -e RAD_SECURITY_API_URL=https://api.rad.security \
  -p 3000:3000 \
  rad-security/mcp-server

SSE トランスポート(TRANSPORT_TYPE=sse)は Streamable HTTP に置き換えられ非推奨です。環境認証情報のみを使用します。

開発

# Install dependencies
npm install

# Run type checking
npm run type-check

# Run linter
npm run lint

# Build
npm run build

ライセンス

MIT ライセンス — 詳細は LICENSE ファイルを参照してください