RAD Security

ทางการ

โต้ตอบกับแพลตฟอร์ม RAD Security ที่ให้ข้อมูลเชิงลึกด้านความปลอดภัยที่ขับเคลื่อนด้วย AI สำหรับสภาพแวดล้อม Kubernetes และคลาวด์

คุณทำอะไรได้บ้างด้วย RAD Security MCP?

  • แสดงรายการข้อค้นพบด้านความปลอดภัย — ขอให้ผู้ช่วยของคุณแสดงรายการและวิเคราะห์ข้อค้นพบด้านความปลอดภัยทั่วทั้งสภาพแวดล้อม Kubernetes และคลาวด์ของคุณ
  • ตรวจสอบพฤติกรรมรันไทม์ — รับแผนผังกระบวนการ, ค่าพื้นฐานรันไทม์ และการวิเคราะห์พฤติกรรมกระบวนการสำหรับคอนเทนเนอร์ที่กำลังทำงาน
  • สอบถามอิมเมจและช่องโหว่ — ดึงข้อมูล SBOM, แสดงรายการอิมเมจที่มีช่องโหว่สูงสุด และจัดการสถานะ CVE เช่น การละเว้นหรือยกเลิกการละเว้น CVE
  • จัดการระบบอัตโนมัติ — แสดงรายการ, สร้าง, อัปเดต และรันระบบอัตโนมัติ (เวิร์กโฟลว์) พร้อมกำหนดการ cron ได้โดยตรงจากแชท
  • ค้นหาฐานความรู้ — ค้นหาคอลเลกชันและเอกสาร และรันคำสั่งค้นหาแบบมีโครงสร้างกับเอกสารเฉพาะ
  • ดำเนินการคิวรี RadQL — รันคิวรีขั้นสูงพร้อมการกรอง, การค้นหา และการรวมกลุ่มข้ามประเภทข้อมูล เช่น คอนเทนเนอร์และข้อค้นพบ

เอกสาร

RAD Security MCP Server

npm version

เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับ RAD Security ที่ให้ข้อมูลเชิงลึกด้านความปลอดภัยที่ขับเคลื่อนด้วย AI สำหรับสภาพแวดล้อม Kubernetes และคลาวด์

RAD Security MCP server

เชื่อมต่อ (โฮสต์ — แนะนำ)

RAD Security รัน MCP server ให้คุณ ดังนั้นผู้ใช้ส่วนใหญ่ไม่จำเป็นต้องติดตั้งหรือโฮสต์อะไรเลย ชี้ MCP client ของคุณไปที่ hosted endpoint และตรวจสอบสิทธิ์ด้วยข้อมูลรับรอง RAD Security ของคุณ

  • Endpoint: https://api.rad.security/mcp/ — โปรดสังเกต เครื่องหมายทับท้าย (trailing slash)

  • Transport: Streamable HTTP

  • Authentication: ส่งข้อมูลรับรองของคุณใน header Authorization:

    Authorization: Bearer <access_key_id>:<secret_key>:<account_id>
    

    <access_key_id> และ <secret_key> คือ RAD Security API access key (สร้างได้ในคอนโซล RAD Security); <account_id> คือ account ID ของคุณ เซิร์ฟเวอร์ตรวจสอบสิทธิ์ทุกคำขอผ่าน RAD Security API — ไม่มีการจัดเก็บข้อมูลรับรองไว้ฝั่งเซิร์ฟเวอร์

รูปแบบ Bearer ory_st_<session_token>:<account_id> ที่มีอายุสั้นก็ใช้งานได้เช่นกัน แต่ session token จะหมดอายุ — แนะนำให้ใช้ access key สำหรับงานที่ต้องใช้งานยาวนาน (เช่น 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 โดยเก็บ secret ไว้ใน env var (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 — โปรดสังเกตว่า wrapper key คือ 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 client ส่วนใหญ่ยอมรับ remote Streamable HTTP server ที่มี URL และ header Authorization — เฉพาะชื่อฟิลด์เท่านั้นที่ต่างกัน โปรดรักษา เครื่องหมายทับท้าย บน URL ในทุกกรณี

ไคลเอนต์ตำแหน่งการกำหนดค่าฟิลด์ URLเครื่องหมายการขนส่งฟิลด์ส่วนหัว
Claude Codeclaude mcp addpositional arg--transport http--header
OpenAI Codex CLI~/.codex/config.tomlurlinferredhttp_headers / bearer_token_env_var
Cursor.cursor/mcp.jsonurltype: "http"headers
VS Code.vscode/mcp.json (servers)urltype: "http"headers
Gemini CLI~/.gemini/settings.jsonhttpUrlinferredheaders
Clinecline_mcp_settings.jsonurltype: "streamableHttp"headers
Windsurf~/.codeium/windsurf/mcp_config.jsonserverUrlinferredheaders

Claude.ai / Claude Desktop / Claude Tag (Slack)

พื้นผิวเหล่านี้เพิ่ม remote MCP server เป็น connectors ซึ่งใช้การตั้งค่าข้อมูลรับรองของตัวเองแทนที่จะเป็น raw request header เพิ่ม https://api.rad.security/mcp/ เป็น custom connector จากนั้นระบุ bearer credential ผ่านการตั้งค่าของ connector:

  • Claude Tag (Slack): แนบเซิร์ฟเวอร์เป็น plugin ที่ .mcp.json ชี้ไปที่ endpoint และเพิ่ม bearer credential ในแท็บ Credentials ของ Access bundle ดู Claude Tag — เชื่อมต่อ custom MCP server
  • Claude.ai / Desktop: เพิ่มภายใต้ Settings → Connectors; ดู custom 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"}}}'

การจำกัดขอบเขตเครื่องมือที่ agent เห็น

โดยค่าเริ่มต้น การเชื่อมต่อจะได้รับทุก toolkit เพื่อให้ agent ได้ชุดที่เล็กลง — ลด context/token overhead และใช้สิทธิ์น้อยที่สุด — เพิ่ม scoping header ในการเชื่อมต่อนั้นควบคู่กับ Authorization ชุดย่อยนี้ถูกบังคับใช้: เครื่องมือที่อยู่นอกขอบเขตจะถูกซ่อนจาก tools/list และ ถูกปฏิเสธหากถูกเรียก

Headerผลลัพธ์
X-Rad-Toolkits: findings, imagesเฉพาะ toolkit เหล่านี้
X-Rad-Exclude-Toolkits: workflowsทุก toolkit ยกเว้นเหล่านี้
X-Rad-Readonly: trueเฉพาะเครื่องมือแบบอ่านอย่างเดียว (ตัดเครื่องมือเขียนออก)

Toolkits: containers, clusters, audit, images, kubeobject, runtime, findings, inbox, workflows, knowledge_base, radql, dashboards, integrations ทั้งหมดเปิดใช้งานโดยค่าเริ่มต้น — ปรับให้แคบลงด้วย header ข้างต้น และใช้ X-Rad-Readonly เมื่อคุณต้องการแยกเครื่องมือเขียนทั้งหมด

ตัวอย่าง — agent แบบอ่านอย่างเดียวสำหรับ findings/images (client ใดก็ได้ที่รองรับ headers; แสดง 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 hosted endpoint เปิดเผยทุก toolkit ด้านล่างโดยค่าเริ่มต้น; ปรับขอบเขต client ลงด้วย X-Rad-Toolkits / X-Rad-Exclude-Toolkits หรือตัดเครื่องมือเขียนทั้งหมดด้วย X-Rad-Readonly: true

  • Account Inventory

    • แสดงรายการคลัสเตอร์และรายละเอียด
  • Containers Inventory

    • แสดงรายการคอนเทนเนอร์และรายละเอียด
  • Security Findings

    • แสดงรายการและวิเคราะห์ security findings
    • อัปเดตสถานะของ security finding
  • Runtime Security

    • รับ process trees ของคอนเทนเนอร์ที่กำลังทำงาน
    • รับ runtime baselines ของคอนเทนเนอร์ที่กำลังทำงาน
    • วิเคราะห์พฤติกรรมกระบวนการของคอนเทนเนอร์ที่กำลังทำงาน
  • Audit

    • แสดงรายการผู้ที่ shell เข้าไปใน pod
  • Images and Vulnerabilities

    • รับ SBOMs
    • แสดงรายการ images และช่องโหว่
    • รับ images ที่มีช่องโหว่สูงสุด
    • ละเว้น / ยกเลิกการละเว้น CVEs และแสดงรายการ CVE dispositions ที่ใช้งานอยู่
  • Kubernetes Objects

    • รับรายละเอียดของ Kubernetes resource ที่ระบุ
    • แสดงรายการ Kubernetes resources
  • Inbox

    • แสดงรายการ inbox items และรายละเอียด
    • ทำเครื่องหมาย inbox item เป็น false positive
  • Automations (workflows)

    • แสดงรายการ automations, runs และ schedules
    • รับรายละเอียด automation และ run
    • รัน automation
    • สร้างและอัปเดต automations และเพิ่ม cron schedules

    "Automation" คือชื่อผลิตภัณฑ์ที่ผู้ใช้เห็น; "workflow" คือ Windmill object พื้นฐานที่ API และชื่อเครื่องมือใช้ พวกมันคือสิ่งเดียวกัน

  • Knowledge Base

    • ค้นหาฐานความรู้
    • แสดงรายการ collections และ documents
    • รัน structured queries กับ document
  • Dashboards

    • แสดงรายการ dashboards และรับรายละเอียด
    • แสดงรายการและรับ dashboard และ widget templates
    • สร้าง dashboard และอัปเดตในตำแหน่งเดิม (ฟิลด์ที่ละไว้จะไม่ถูกเปลี่ยนแปลง ดังนั้นการแก้ไขเล็กน้อย ไม่จำเป็นต้องส่ง dashboard ทั้งหมดใหม่)
  • Integrations

    • แสดงรายการ external integrations
  • RadQL (Advanced Querying)

    • แสดงรายการ data types ที่มีให้สอบถาม (containers, findings, kubernetes_resources, ฯลฯ)
    • รับ schema/metadata สำหรับ data types ที่ระบุ
    • แสดงรายการค่าที่เป็นไปได้สำหรับ filter fields
    • รัน RadQL queries พร้อมการกรอง การค้นหา และการรวมกลุ่ม
    • สร้าง queries โดยโปรแกรมจาก structured conditions
    • รันหลาย queries พร้อมกัน

การโฮสต์ด้วยตนเอง

ต้องการรันเซิร์ฟเวอร์ด้วยตัวเองหรือไม่ — เช่น สภาพแวดล้อม air-gapped ข้อกำหนดด้าน data-residency หรือไม่ต้องการส่งผ่าน hosted gateway? เผยแพร่บน npm และเป็น container image

ข้อกำหนดเบื้องต้น

  • Node.js 20.x หรือสูงกว่า

ข้อมูลรับรอง

ระบุข้อมูลรับรอง RAD Security ของคุณผ่าน environment variables:

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

การกรอง Toolkit

ควบคุมว่า self-hosted server เปิดเผย toolkit ใด:

  • INCLUDE_TOOLKITS: รายการ toolkits ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อรวม (เฉพาะเหล่านี้ที่เปิดใช้งาน)
  • EXCLUDE_TOOLKITS: รายการ toolkits ที่คั่นด้วยเครื่องหมายจุลภาคเพื่อแยก (อื่น ๆ ทั้งหมดเปิดใช้งาน) จะถูกละเว้นหากตั้งค่า INCLUDE_TOOLKITS

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"

Multi-tenant (per-request auth)

MCP_AUTH_MODE ควบคุมวิธีที่ streamable HTTP deployment ตรวจสอบสิทธิ์คำขอขาเข้า — นี่คือสิ่งที่ hosted endpoint ใช้:

  • MCP_AUTH_MODE=env (ค่าเริ่มต้น) — ทุกเซสชันใช้ข้อมูลรับรองสภาพแวดล้อม RAD_SECURITY_* แบบ single-tenant และ ไม่มีการตรวจสอบสิทธิ์ที่ชั้น HTTP ดังนั้นจึงต้องไม่สามารถเข้าถึงได้จากเครือข่ายที่ไม่น่าเชื่อถือ
  • MCP_AUTH_MODE=header — ทุกคำขอต้องมีข้อมูลรับรองของตัวเองใน header Authorization (รูปแบบ Bearer <access_key_id>:<secret_key>:<account_id> ข้างต้น); คำขอที่ขาดหรือ header ไม่ถูกต้องจะถูกปฏิเสธด้วย 401 รองรับเฉพาะกับ TRANSPORT_TYPE=streamable เท่านั้น RAD_SECURITY_API_URL นำมาจาก server config ไม่ใช่จากผู้เรียก
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 (TRANSPORT_TYPE=sse) เลิกใช้งานแล้ว แนะนำให้ใช้ Streamable HTTP และใช้ข้อมูลรับรองจาก env เท่านั้น

การพัฒนา

# Install dependencies
npm install

# Run type checking
npm run type-check

# Run linter
npm run lint

# Build
npm run build

สัญญาอนุญาต

MIT License — ดูรายละเอียดในไฟล์ LICENSE