RAD Security
ทางการโต้ตอบกับแพลตฟอร์ม RAD Security ที่ให้ข้อมูลเชิงลึกด้านความปลอดภัยที่ขับเคลื่อนด้วย AI สำหรับสภาพแวดล้อม Kubernetes และคลาวด์
คุณทำอะไรได้บ้างด้วย RAD Security MCP?
- แสดงรายการข้อค้นพบด้านความปลอดภัย — ขอให้ผู้ช่วยของคุณแสดงรายการและวิเคราะห์ข้อค้นพบด้านความปลอดภัยทั่วทั้งสภาพแวดล้อม Kubernetes และคลาวด์ของคุณ
- ตรวจสอบพฤติกรรมรันไทม์ — รับแผนผังกระบวนการ, ค่าพื้นฐานรันไทม์ และการวิเคราะห์พฤติกรรมกระบวนการสำหรับคอนเทนเนอร์ที่กำลังทำงาน
- สอบถามอิมเมจและช่องโหว่ — ดึงข้อมูล SBOM, แสดงรายการอิมเมจที่มีช่องโหว่สูงสุด และจัดการสถานะ CVE เช่น การละเว้นหรือยกเลิกการละเว้น CVE
- จัดการระบบอัตโนมัติ — แสดงรายการ, สร้าง, อัปเดต และรันระบบอัตโนมัติ (เวิร์กโฟลว์) พร้อมกำหนดการ cron ได้โดยตรงจากแชท
- ค้นหาฐานความรู้ — ค้นหาคอลเลกชันและเอกสาร และรันคำสั่งค้นหาแบบมีโครงสร้างกับเอกสารเฉพาะ
- ดำเนินการคิวรี RadQL — รันคิวรีขั้นสูงพร้อมการกรอง, การค้นหา และการรวมกลุ่มข้ามประเภทข้อมูล เช่น คอนเทนเนอร์และข้อค้นพบ
เอกสาร
RAD Security MCP Server
เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับ RAD Security ที่ให้ข้อมูลเชิงลึกด้านความปลอดภัยที่ขับเคลื่อนด้วย AI สำหรับสภาพแวดล้อม Kubernetes และคลาวด์
เชื่อมต่อ (โฮสต์ — แนะนำ)
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 Code | claude mcp add | positional arg | --transport http | --header |
| OpenAI Codex CLI | ~/.codex/config.toml | url | inferred | 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 | inferred | headers |
| Cline | cline_mcp_settings.json | url | type: "streamableHttp" | headers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | serverUrl | inferred | headers |
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— ทุกคำขอต้องมีข้อมูลรับรองของตัวเองใน headerAuthorization(รูปแบบ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