RAD Security

公式

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

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

  • セキュリティ検出結果を確認 — セキュリティ検出結果を一覧表示して分析し、そのステータスを更新します。
  • イメージとCVEを調査 — SBOMを取得し、脆弱性のあるイメージを一覧表示して、脆弱性が最も多いイメージを特定し、CVEを無視または無視解除します。
  • ランタイムの動作を追跡 — 実行中のコンテナのプロセスツリーとランタイムベースラインを取得し、プロセスの動作を分析します。
  • Podへのアクセスを監査 — Podにシェルで接続したユーザーを一覧表示します。
  • RadQLクエリを実行 — データ型を一覧表示し、スキーマを取得して、フィルターまたは集計を適用したクエリを実行します。複数のクエリを並列実行することもできます。
  • 自動化を管理 — 自動化、実行履歴、スケジュールを一覧表示し、実行の詳細を取得して、自動化を実行、作成、更新します。

ドキュメント

RAD Security MCP Server

npm version

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

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 など)は、アクセスキーを推奨します。

テナント全体で使う単一の接続

1 つの MCP 設定からすべてのアカウントを操作するには、テナントにアクセスキーを作成し、アカウント ID の代わりに tenant=<tenant_id> を使用します。

Authorization: Bearer <access_key_id>:<secret_key>:tenant=<tenant_id>

テナントスコープのセッションでは、次のようになります。

  • list_accounts ツールはテナントのアカウントを返します。
  • アカウントスコープのツールには account_id 引数が必要です。この引数にはテナントの子アカウントを指定する必要があります。各呼び出しで対象となるのは 1 つのアカウントです。複数のアカウントにまたがって結果が統合されることはありません。
  • テナント認証情報はすべてのアカウントにアクセスできるため、デフォルトで使用できるのは読み取り専用ツールのみです。書き込みツールを有効にするには、X-Rad-Readonly: false を送信します。

npx/stdio サーバーでは、RAD_SECURITY_ACCOUNT_ID を設定せずに RAD_SECURITY_TENANT_ID を設定し、書き込みツールを有効にするには RAD_SECURITY_READONLY=false を使用します。

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 — ラッパーキーは mcpServers ではなく servers であることに注意してください。

{
  "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 フィールドは url ではなく httpUrl であることに注意してください。

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

Cline

cline_mcp_settings.json — type は正確に 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読み取り専用ツールのみ(書き込みツールを除外)

ツールキット: containers、clusters、audit、images、kubeobject、runtime、findings、inbox、workflows、knowledge_base、radql、dashboards、integrations。デフォルトではすべて有効です。上記のヘッダーで範囲を絞り、すべての書き込みツールを除外する場合は 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 ですべての書き込みツールを除外してください。

  • アカウントインベントリ

    • クラスターとその詳細を一覧表示
  • コンテナインベントリ

    • コンテナとその詳細を一覧表示
  • セキュリティ検出結果

    • セキュリティ検出結果を一覧表示して分析
    • セキュリティ検出結果のステータスを更新
  • ランタイムセキュリティ

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

    • Pod にシェル接続したユーザーを一覧表示
  • イメージと脆弱性

    • SBOM を取得
    • イメージとその脆弱性を一覧表示
    • 脆弱性のあるイメージの上位項目を取得
    • CVE を無視/無視解除し、有効な CVE の処理状況を一覧表示
  • Kubernetes オブジェクト

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

    • Inbox 項目とその詳細を一覧表示
    • Inbox 項目を誤検知としてマーク
  • 自動化 (workflows)

    • 自動化、実行、スケジュールを一覧表示
    • 自動化と実行の詳細を取得
    • 自動化を実行
    • 自動化を作成・更新し、cron スケジュールを追加

    「Automation」はユーザーに表示される製品名です。「workflow」は API とツール名で使用される基盤の Windmill オブジェクトです。 どちらも同じものを指します。

  • ナレッジベース

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

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

    • 外部インテグレーションを一覧表示
  • RadQL(高度なクエリ)

    • クエリ可能なデータ型(containers、findings、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.
# Set this without RAD_SECURITY_ACCOUNT_ID for a session across all the tenant's accounts.
RAD_SECURITY_TENANT_ID="your_tenant_id"

# Optional: true exposes only read-only tools. Tenant-scoped sessions are read-only unless this is false.
RAD_SECURITY_READONLY="true"

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 が設定されている場合は無視されます。

利用可能なツールキット: containers、clusters、audit、images、kubeobject、runtime、findings、inbox、workflows、knowledge_base、radql、dashboards、integrations。デフォルトではすべて有効です。

# 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 が推奨されています。SSE は環境認証情報のみを使用します。

開発

# Install dependencies
npm install

# Run type checking
npm run type-check

# Run linter
npm run lint

# Build
npm run build

ライセンス

MIT License — 詳細は LICENSE ファイルを参照してください