RAD Security
официальныйВзаимодействуйте с платформой RAD Security, которая предоставляет аналитику
Что можно делать с RAD Security MCP?
- Список результатов безопасности — Попросите вашего ассистента составить список и проанализировать результаты безопасности в ваших средах Kubernetes и облачных средах.
- Исследование поведения во время выполнения — Получайте деревья процессов, базовые показатели времени выполнения и анализ поведения процессов для запущенных контейнеров.
- Запросы по образам и уязвимостям — Получайте SBOM, списки наиболее уязвимых образов и управляйте статусами CVE, такими как игнорирование или снятие игнорирования CVE.
- Управление автоматизациями — Составляйте списки, создавайте, обновляйте и запускайте автоматизации (рабочие процессы) с расписаниями cron прямо из чата.
- Поиск по базе знаний — Ищите коллекции и документы, а также выполняйте структурированные запросы к конкретным документам.
- Выполнение RadQL-запросов — Запускайте расширенные запросы с фильтрацией, поиском и агрегацией по типам данных, таким как контейнеры и результаты.
Документация
RAD Security MCP-сервер
Сервер Model Context Protocol (MCP) для RAD Security, предоставляющий AI-аналитику безопасности для сред 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).
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 bundle. См. 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.
-
Инвентаризация аккаунтов
- Список кластеров и их деталей
-
Инвентаризация контейнеров
- Список контейнеров и их деталей
-
Находки безопасности
- Список и анализ находок безопасности
- Обновление статуса находки безопасности
-
Безопасность выполнения
- Получение деревьев процессов запущенных контейнеров
- Получение базовых линий выполнения запущенных контейнеров
- Анализ поведения процессов запущенных контейнеров
-
Аудит
- Список тех, кто заходил в оболочку пода
-
Образы и уязвимости
- Получение SBOM
- Список образов и их уязвимостей
- Получение самых уязвимых образов
- Игнорировать / снять игнорирование CVE и список активных решений по CVE
-
Объекты Kubernetes
- Получение деталей конкретного ресурса Kubernetes
- Список ресурсов Kubernetes
-
Входящие
- Список элементов входящих и их деталей
- Отметить элемент входящих как ложное срабатывание
-
Автоматизации (
workflows)- Список автоматизаций, запусков и расписаний
- Получение деталей автоматизации и запуска
- Запуск автоматизации
- Создание и обновление автоматизаций, добавление cron-расписаний
«Автоматизация» — это название продукта, которое видят пользователи; «workflow» — это базовый объект Windmill, который используют API и имена инструментов. Это одно и то же.
-
База знаний
- Поиск по базе знаний
- Список коллекций и документов
- Выполнение структурированных запросов к документу
-
Дашборды
- Список дашбордов и получение их деталей
- Список и получение шаблонов дашбордов и виджетов
- Создание дашборда и обновление на месте (опущенные поля остаются без изменений, поэтому небольшое редактирование не требует повторной отправки всего дашборда)
-
Интеграции
- Список внешних интеграций
-
RadQL (расширенные запросы)
- Список доступных типов данных для запросов (контейнеры, находки, 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.
Доступные наборы: 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 для подробностей