RAD Security
официальныйВзаимодействуйте с платформой RAD Security, которая предоставляет аналитику
Что можно делать с RAD Security MCP?
- Проверка результатов анализа безопасности — Просматривайте и анализируйте результаты анализа безопасности, а затем обновляйте статус результата.
- Проверка образов и CVE — Получайте SBOM, просматривайте образы с уязвимостями, находите наиболее уязвимые образы, а также игнорируйте CVE или отменяйте их игнорирование.
- Отслеживание поведения во время выполнения — Получайте деревья процессов и базовые профили среды выполнения для работающих контейнеров и анализируйте поведение их процессов.
- Аудит доступа к подам — Просматривайте список пользователей, подключавшихся к поду через оболочку.
- Выполнение запросов RadQL — Просматривайте типы данных, получайте схемы и выполняйте запросы с фильтрацией или агрегацией, в том числе несколько запросов параллельно.
- Управление автоматизациями — Просматривайте автоматизации, запуски и расписания; получайте сведения о запусках; запускайте автоматизацию или создавайте и обновляйте её.
Документация
MCP-сервер RAD Security
Сервер Model Context Protocol (MCP) для RAD Security, предоставляющий аналитические данные о безопасности Kubernetes и облачных сред с помощью ИИ.
Подключение (хостинг — рекомендуется)
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 Code | claude mcp add | позиционный аргумент | --transport http | --header |
| OpenAI Codex CLI | ~/.codex/config.toml | url | определяется автоматически | http_headers / bearer_token_env_var |
| Cursor | .cursor/mcp.json | url | type: "http" | headers |
| VS Code | .vscode/mcp.json (servers) | url | type: "http" | headers |
| Gemini CLI | ~/.gemini/settings.json | httpUrl | определяется автоматически | headers |
| Cline | cline_mcp_settings.json | url | type: "streamableHttp" | headers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | serverUrl | определяется автоматически | headers |
Claude.ai / Claude Desktop / Claude Tag (Slack)
В этих интерфейсах удалённые MCP-серверы добавляются как коннекторы, которые используют собственные настройки учётных данных, а не обычный заголовок запроса. Добавьте https://api.rad.security/mcp/ как пользовательский коннектор, затем укажите учётные данные bearer в настройках коннектора:
- Claude Tag (Slack): подключите сервер как плагин, у которого
.mcp.jsonуказывает на конечную точку, и добавьте учётные данные bearer на вкладке Credentials пакета Access. См. 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, если нужно исключить все инструменты записи.
Пример — агент для работы с находками и образами только для чтения (любой клиент с поддержкой заголовков; показан 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.