RAD Security
oficialInteractúa con la plataforma RAD Security que proporciona información de seguridad impulsada por IA para entornos Kubernetes y en la nube.
¿Qué puedes hacer con RAD Security MCP?
- Listar hallazgos de seguridad — Pide a tu asistente que liste y analice hallazgos de seguridad en tus entornos de Kubernetes y en la nube.
- Investigar el comportamiento en tiempo de ejecución — Obtén árboles de procesos, líneas base de tiempo de ejecución y análisis de comportamiento de procesos para contenedores en ejecución.
- Consultar imágenes y vulnerabilidades — Recupera SBOM, lista las imágenes más vulnerables y gestiona disposiciones de CVE, como ignorar o dejar de ignorar CVEs.
- Gestionar automatizaciones — Lista, crea, actualiza y ejecuta automatizaciones (flujos de trabajo) con horarios cron directamente desde el chat.
- Buscar en la base de conocimiento — Busca colecciones y documentos, y ejecuta consultas estructuradas contra documentos específicos.
- Ejecutar consultas RadQL — Ejecuta consultas avanzadas con filtros, búsquedas y agregaciones en tipos de datos como contenedores y hallazgos.
Documentación
RAD Security MCP Server
Un servidor de Protocolo de Contexto de Modelo (MCP) para RAD Security, que proporciona información de seguridad impulsada por IA para entornos Kubernetes y en la nube.
Conectar (alojado — recomendado)
RAD Security ejecuta el servidor MCP por ti, por lo que la mayoría de los usuarios no necesitan instalar ni alojar nada. Apunta tu cliente MCP al punto de conexión alojado y autentícate con tus credenciales de RAD Security.
-
Punto de conexión:
https://api.rad.security/mcp/— ten en cuenta la barra final. -
Transporte: HTTP transmisible.
-
Autenticación: envía tu credencial en la cabecera
Authorization:Authorization: Bearer <access_key_id>:<secret_key>:<account_id><access_key_id>y<secret_key>son una clave de acceso a la API de RAD Security (créala en la consola de RAD Security);<account_id>es tu ID de cuenta. El servidor autentica cada solicitud contra la API de RAD Security — no se almacenan credenciales en el servidor.
Una forma de corta duración
Bearer ory_st_<session_token>:<account_id>también funciona, pero los tokens de sesión expiran; prefiere una clave de acceso para cualquier cosa de larga duración (p. ej., 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>" }
O mediante la CLI, manteniendo el secreto en una variable de entorno (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 — ten en cuenta que la clave envolvente es servers, no 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 — ten en cuenta que el campo de URL es httpUrl (no 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 — ten en cuenta que type debe ser exactamente 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 — ten en cuenta que el campo de URL es serverUrl:
{
"mcpServers": {
"rad-security": {
"serverUrl": "https://api.rad.security/mcp/",
"headers": {
"Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
}
}
}
}
Otros clientes
La mayoría de los clientes MCP aceptan un servidor HTTP transmisible remoto con una URL y una cabecera Authorization — solo difieren los nombres de los campos. Mantén la barra final en la URL en todos los casos.
| Cliente | Ubicación de configuración | Campo de URL | Marcador de transporte | Campo de cabecera |
|---|---|---|---|---|
| Claude Code | claude mcp add | argumento posicional | --transport http | --header |
| OpenAI Codex CLI | ~/.codex/config.toml | url | inferido | 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 | inferido | headers |
| Cline | cline_mcp_settings.json | url | type: "streamableHttp" | headers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | serverUrl | inferido | headers |
Claude.ai / Claude Desktop / Claude Tag (Slack)
Estas superficies añaden servidores MCP remotos como conectores, que utilizan sus propios ajustes de credenciales en lugar de una cabecera de solicitud sin procesar. Añade https://api.rad.security/mcp/ como conector personalizado y luego proporciona la credencial de portador a través de los ajustes del conector:
- Claude Tag (Slack): adjunta el servidor como un plugin cuyo
.mcp.jsonapunta al punto de conexión, y añade la credencial de portador en la pestaña Credenciales del paquete de Acceso. Ver Claude Tag — conectar un servidor MCP personalizado. - Claude.ai / Desktop: añádelo en Configuración → Conectores; ver conectores personalizados.
Probarlo (Inspector MCP o 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"}}}'
Delimitación de las herramientas que ve un agente
Por defecto, una conexión obtiene todos los conjuntos de herramientas. Para darle a un agente un conjunto más pequeño — menos sobrecarga de contexto/tokens y menor privilegio — añade una cabecera de delimitación a esa conexión junto con Authorization. El subconjunto se aplica: una herramienta fuera de alcance se oculta de tools/list y se rechaza si se llama.
| Cabecera | Efecto |
|---|---|
X-Rad-Toolkits: findings, images | solo estos conjuntos de herramientas |
X-Rad-Exclude-Toolkits: workflows | todos los conjuntos de herramientas excepto estos |
X-Rad-Readonly: true | solo herramientas de solo lectura (elimina las herramientas de escritura) |
Conjuntos de herramientas: containers, clusters, audit, images, kubeobject, runtime, findings, inbox, workflows, knowledge_base, radql, dashboards, integrations. Todos están habilitados por defecto — reduce con las cabeceras anteriores y usa X-Rad-Readonly cuando quieras excluir todas las herramientas de escritura.
Ejemplo — un agente de solo lectura de hallazgos/imágenes (cualquier cliente que soporte cabeceras; se muestra 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"
}
}
}
}
En Claude Code, pasa un --header adicional:
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"
Características
Todas las herramientas requieren autenticación y una cuenta en RAD Security. El punto de conexión alojado expone todos los conjuntos de herramientas a continuación por defecto; delimita un cliente con X-Rad-Toolkits / X-Rad-Exclude-Toolkits, o elimina todas las herramientas de escritura con X-Rad-Readonly: true.
-
Inventario de cuentas
- Lista de clústeres y sus detalles
-
Inventario de contenedores
- Lista de contenedores y sus detalles
-
Hallazgos de seguridad
- Listar y analizar hallazgos de seguridad
- Actualizar el estado de un hallazgo de seguridad
-
Seguridad en tiempo de ejecución
- Obtener árboles de procesos de contenedores en ejecución
- Obtener líneas base de tiempo de ejecución de contenedores en ejecución
- Analizar el comportamiento de procesos de contenedores en ejecución
-
Auditoría
- Listar quién se conectó a un pod
-
Imágenes y vulnerabilidades
- Obtener SBOM
- Listar imágenes y sus vulnerabilidades
- Obtener las imágenes más vulnerables
- Ignorar / dejar de ignorar CVEs y listar disposiciones de CVE activas
-
Objetos de Kubernetes
- Obtener detalles de un recurso específico de Kubernetes
- Listar recursos de Kubernetes
-
Bandeja de entrada
- Listar elementos de la bandeja de entrada y sus detalles
- Marcar un elemento de la bandeja de entrada como falso positivo
-
Automatizaciones (
workflows)- Listar automatizaciones, ejecuciones y horarios
- Obtener detalles de automatizaciones y ejecuciones
- Ejecutar una automatización
- Crear y actualizar automatizaciones, y añadir horarios cron
"Automatización" es el nombre de producto que ven los usuarios; "flujo de trabajo" es el objeto Windmill subyacente que usan la API y los nombres de herramientas. Son lo mismo.
-
Base de conocimiento
- Buscar en la base de conocimiento
- Listar colecciones y documentos
- Ejecutar consultas estructuradas contra un documento
-
Paneles
- Listar paneles y obtener sus detalles
- Listar y obtener plantillas de paneles y widgets
- Crear un panel y actualizar uno en el lugar (los campos omitidos se dejan sin cambios, por lo que una pequeña edición no requiere reenviar todo el panel)
-
Integraciones
- Listar integraciones externas
-
RadQL (Consultas avanzadas)
- Listar los tipos de datos disponibles para consultas (contenedores, hallazgos, kubernetes_resources, etc.)
- Obtener esquema/metadatos para tipos de datos específicos
- Listar valores posibles para campos de filtro
- Ejecutar consultas RadQL con filtrado, búsqueda y agregaciones
- Construir consultas programáticamente a partir de condiciones estructuradas
- Ejecutar múltiples consultas en paralelo
Autoalojamiento
¿Prefieres ejecutar el servidor tú mismo — por ejemplo, un entorno aislado, requisitos de residencia de datos, o si no quieres enrutar a través de la puerta de enlace alojada? Está publicado en npm y como imagen de contenedor.
Requisitos previos
- Node.js 20.x o superior
Credenciales
Proporciona tus credenciales de RAD Security mediante variables de entorno:
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) — por ejemplo, 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 (HTTP transmisible)
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
Filtrado de conjuntos de herramientas
Controla qué conjuntos de herramientas expone un servidor autoalojado:
INCLUDE_TOOLKITS: lista separada por comas de conjuntos de herramientas a incluir (solo estos están habilitados).EXCLUDE_TOOLKITS: lista separada por comas de conjuntos de herramientas a excluir (todos los demás están habilitados). Se ignora siINCLUDE_TOOLKITSestá establecido.
Conjuntos de herramientas disponibles: containers, clusters, audit, images, kubeobject, runtime, findings, inbox, workflows, knowledge_base, radql, dashboards, integrations. Todos están habilitados por defecto.
# Only the workflows toolkit
INCLUDE_TOOLKITS="workflows"
# Everything except runtime
EXCLUDE_TOOLKITS="runtime"
Multiinquilino (autenticación por solicitud)
MCP_AUTH_MODE controla cómo un despliegue HTTP transmisible autentica las solicitudes entrantes — esto es lo que usa el punto de conexión alojado:
MCP_AUTH_MODE=env(predeterminado) — cada sesión usa las credenciales de entornoRAD_SECURITY_*. De un solo inquilino, y sin autenticación en la capa HTTP, por lo que no debe ser accesible desde redes no confiables.MCP_AUTH_MODE=header— cada solicitud debe llevar su propia credencial en la cabeceraAuthorization(la formaBearer <access_key_id>:<secret_key>:<account_id>anterior); una cabecera faltante o malformada se rechaza con401. Solo se admite conTRANSPORT_TYPE=streamable.RAD_SECURITY_API_URLse toma de la configuración del servidor, no del llamante.
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
El transporte SSE (
TRANSPORT_TYPE=sse) está obsoleto en favor de HTTP transmisible y solo usa credenciales de entorno.
Desarrollo
# Install dependencies
npm install
# Run type checking
npm run type-check
# Run linter
npm run lint
# Build
npm run build
Licencia
Licencia MIT: consulta el archivo LICENCIA para más detalles