RAD Security

официальный

Взаимодействуйте с платформой RAD Security, которая предоставляет аналитику

Что можно делать с RAD Security MCP?

  • Проверка результатов анализа безопасности — Просматривайте и анализируйте результаты анализа безопасности, а затем обновляйте статус результата.
  • Проверка образов и CVE — Получайте SBOM, просматривайте образы с уязвимостями, находите наиболее уязвимые образы, а также игнорируйте CVE или отменяйте их игнорирование.
  • Отслеживание поведения во время выполнения — Получайте деревья процессов и базовые профили среды выполнения для работающих контейнеров и анализируйте поведение их процессов.
  • Аудит доступа к подам — Просматривайте список пользователей, подключавшихся к поду через оболочку.
  • Выполнение запросов RadQL — Просматривайте типы данных, получайте схемы и выполняйте запросы с фильтрацией или агрегацией, в том числе несколько запросов параллельно.
  • Управление автоматизациями — Просматривайте автоматизации, запуски и расписания; получайте сведения о запусках; запускайте автоматизацию или создавайте и обновляйте её.

Документация

MCP-сервер RAD Security

npm version

Сервер Model Context Protocol (MCP) для RAD Security, предоставляющий аналитические данные о безопасности Kubernetes и облачных сред с помощью ИИ.

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> — это ключ доступа к API RAD Security (создайте его в консоли RAD Security); <account_id> — идентификатор вашей учётной записи. Сервер аутентифицирует каждый запрос через API RAD Security — учётные данные не хранятся на стороне сервера.

Также подходит краткосрочная форма Bearer ory_st_<session_token>:<account_id>, но срок действия токенов сеанса истекает — для длительного использования (например, Slack / Claude Tag) предпочтительнее ключ доступа.

Одно подключение для всего тенанта

Чтобы работать со всеми учётными записями из одной конфигурации MCP, создайте ключ доступа для тенанта и укажите tenant=<tenant_id> вместо идентификатора учётной записи:

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

В сеансе с областью действия тенанта:

  • Инструмент list_accounts возвращает учётные записи тенанта.
  • Для инструментов, работающих с учётными записями, требуется аргумент account_id, который должен указывать на дочернюю учётную запись тенанта. Каждый вызов охватывает одну учётную запись; результаты по разным учётным записям не объединяются.
  • По умолчанию доступны только инструменты для чтения, поскольку учётные данные тенанта дают доступ ко всем учётным записям. Чтобы включить инструменты записи, передайте X-Rad-Readonly: false.

Для сервера npx/stdio задайте RAD_SECURITY_TENANT_ID без RAD_SECURITY_ACCOUNT_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 — обратите внимание: ключ-обёртка — это 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 — это httpUrl (не url):

{
  "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-клиентов поддерживают удалённый сервер Streamable HTTP с URL и заголовком Authorization — различаются только имена полей. Во всех случаях сохраняйте завершающий слеш в 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/ как пользовательский коннектор, затем укажите учётные данные bearer в настройках коннектора:

Проверка (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, если нужно исключить все инструменты записи.

Пример — агент для работы с находками и образами только для чтения (любой клиент с поддержкой заголовков; показан 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.

  • Инвентаризация учётных записей

    • Список кластеров и сведения о них
  • Инвентаризация контейнеров

    • Список контейнеров и сведения о них
  • Находки безопасности

    • Список и анализ находок безопасности
    • Обновление статуса находки безопасности
  • Безопасность во время выполнения

    • Получение деревьев процессов работающих контейнеров
    • Получение базовых профилей работающих контейнеров
    • Анализ поведения процессов работающих контейнеров
  • Аудит

    • Список пользователей, открывавших оболочку в поде
  • Образы и уязвимости

    • Получение SBOM
    • Список образов и их уязвимостей
    • Получение списка наиболее уязвимых образов
    • Игнорирование / отмена игнорирования CVE и список активных решений по CVE
  • Объекты Kubernetes

    • Получение сведений о конкретном ресурсе Kubernetes
    • Список ресурсов Kubernetes
  • Входящие

    • Список элементов входящих и сведения о них
    • Пометка элемента входящих как ложного срабатывания
  • Автоматизации (workflows)

    • Список автоматизаций, запусков и расписаний
    • Получение сведений об автоматизации и запуске
    • Запуск автоматизации
    • Создание и обновление автоматизаций, добавление расписаний cron

    «Автоматизация» — название продукта, которое видят пользователи; «workflow» — базовый объект Windmill, используемый в названиях API и инструментов. Это одно и то же.

  • База знаний

    • Поиск по базе знаний
    • Список коллекций и документов
    • Выполнение структурированных запросов к документу
  • Панели мониторинга

    • Список панелей мониторинга и получение сведений о них
    • Список шаблонов панелей мониторинга и виджетов и получение сведений о них
    • Создание панели мониторинга и обновление существующей (неуказанные поля остаются без изменений, поэтому для небольшого изменения не нужно повторно отправлять всю панель)
  • Интеграции

    • Список внешних интеграций
  • 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; он использует только учётные данные среды.

Разработка

# Install dependencies
npm install

# Run type checking
npm run type-check

# Run linter
npm run lint

# Build
npm run build

Лицензия

Лицензия MIT — подробности см. в файле LICENSE.