RAD Security

공식

RAD Security 플랫폼과 상호작용하여 Kubernetes 및 클라우드 환경에 대한 AI 기반 보안 인사이트를 제공합니다.

RAD Security MCP(으)로 무엇을 할 수 있나요?

  • 보안 결과 나열 — 어시스턴트에게 Kubernetes 및 클라우드 환경 전반의 보안 결과를 나열하고 분석하도록 요청하세요.
  • 런타임 동작 조사 — 실행 중인 컨테이너에 대한 프로세스 트리, 런타임 기준선, 프로세스 동작 분석을 얻으세요.
  • 이미지 및 취약점 조회 — SBOM을 검색하고, 상위 취약 이미지를 나열하며, CVE 무시 또는 무시 해제와 같은 CVE 처리 상태를 관리하세요.
  • 자동화 관리 — 채팅에서 직접 cron 일정으로 자동화(워크플로)를 나열, 생성, 업데이트, 실행하세요.
  • 지식 베이스 검색 — 컬렉션과 문서를 검색하고, 특정 문서에 대해 구조화된 쿼리를 실행하세요.
  • RadQL 쿼리 실행 — 컨테이너 및 결과와 같은 데이터 유형에 대해 필터링, 검색, 집계를 포함한 고급 쿼리를 실행하세요.

문서

RAD Security MCP Server

npm version

RAD Security용 Model Context Protocol(MCP) 서버로, Kubernetes 및 클라우드 환경에 대한 AI 기반 보안 인사이트를 제공합니다.

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)에는 액세스 키를 사용하는 것이 좋습니다.

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.jsontype는 정확히 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/을 사용자 지정 커넥터로 추가한 다음 커넥터 설정을 통해 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을 사용하세요.

예시 — 읽기 전용 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로 모든 쓰기 도구를 제외하세요.

  • 계정 인벤토리

    • 클러스터 및 세부 정보 나열
  • 컨테이너 인벤토리

    • 컨테이너 및 세부 정보 나열
  • 보안 Findings

    • 보안 findings 나열 및 분석
    • 보안 finding의 상태 업데이트
  • 런타임 보안

    • 실행 중인 컨테이너의 프로세스 트리 가져오기
    • 실행 중인 컨테이너의 런타임 베이스라인 가져오기
    • 실행 중인 컨테이너의 프로세스 동작 분석
  • 감사

    • Pod에 셸로 접속한 사용자 나열
  • 이미지 및 취약점

    • SBOM 가져오기
    • 이미지 및 취약점 나열
    • 취약점이 가장 많은 이미지 가져오기
    • CVE 무시/무시 해제 및 활성 CVE 처리 상태 나열
  • Kubernetes 오브젝트

    • 특정 Kubernetes 리소스의 세부 정보 가져오기
    • Kubernetes 리소스 나열
  • 받은 편지함

    • 받은 편지함 항목 및 세부 정보 나열
    • 받은 편지함 항목을 오탐(false positive)으로 표시
  • 자동화(workflows)

    • 자동화, 실행 및 일정 나열
    • 자동화 및 실행 세부 정보 가져오기
    • 자동화 실행
    • 자동화 생성 및 업데이트, cron 일정 추가

    "Automation"은 사용자에게 표시되는 제품 이름이고, "workflow"는 API 및 도구 이름이 사용하는 기본 Windmill 오브젝트입니다. 둘은 같은 것입니다.

  • 지식 베이스

    • 지식 베이스 검색
    • 컬렉션 및 문서 나열
    • 문서에 대한 구조화된 쿼리 실행
  • 대시보드

    • 대시보드 나열 및 세부 정보 가져오기
    • 대시보드 및 위젯 템플릿 나열 및 가져오기
    • 대시보드 생성 및 제자리 업데이트(생략된 필드는 변경되지 않으므로 작은 편집에 전체 대시보드를 다시 보낼 필요 없음)
  • 통합

    • 외부 통합 나열
  • RadQL(고급 쿼리)

    • 쿼리 가능한 데이터 유형 나열(컨테이너, 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
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 파일 참조