RAD Security
ทางการโต้ตอบกับแพลตฟอร์ม RAD Security ที่ให้ข้อมูลเชิงลึกด้านความปลอดภัยที่ขับเคลื่อนด้วย AI สำหรับสภาพแวดล้อม Kubernetes และคลาวด์
คุณทำอะไรได้บ้างด้วย RAD Security MCP?
- ตรวจสอบข้อค้นพบด้านความปลอดภัย — แสดงรายการและวิเคราะห์ข้อค้นพบด้านความปลอดภัย จากนั้นอัปเดตสถานะของข้อค้นพบ
- ตรวจสอบอิมเมจและ CVE — รับ SBOM แสดงรายการอิมเมจที่มีช่องโหว่ ค้นหาอิมเมจที่มีช่องโหว่มากที่สุด และละเว้นหรือยกเลิกการละเว้น CVE
- ติดตามพฤติกรรมขณะรัน — รับแผนผังกระบวนการและข้อมูลพื้นฐานขณะรันของคอนเทนเนอร์ที่กำลังทำงาน และวิเคราะห์พฤติกรรมของกระบวนการ
- ตรวจสอบการเข้าถึงพ็อด — แสดงรายการผู้ที่เชลล์เข้าไปในพ็อด
- เรียกใช้คิวรี RadQL — แสดงรายการชนิดข้อมูล รับสคีมา และเรียกใช้คิวรีแบบกรองหรือแบบรวมข้อมูล รวมถึงเรียกใช้หลายคิวรีพร้อมกัน
- จัดการระบบอัตโนมัติ — แสดงรายการระบบอัตโนมัติ การเรียกใช้ และกำหนดเวลา ดูรายละเอียดการเรียกใช้ เรียกใช้ระบบอัตโนมัติ หรือสร้างและอัปเดตระบบอัตโนมัติ
เอกสาร
RAD Security MCP Server
เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับ RAD Security ที่ให้ข้อมูลเชิงลึกด้านความปลอดภัยด้วย AI สำหรับสภาพแวดล้อม Kubernetes และคลาวด์
เชื่อมต่อ (โฮสต์ให้ — แนะนำ)
RAD Security เรียกใช้เซิร์ฟเวอร์ MCP ให้คุณ ดังนั้นผู้ใช้ส่วนใหญ่จึงไม่จำเป็นต้องติดตั้งหรือโฮสต์อะไร เพียงกำหนดค่า MCP client ให้ชี้ไปยัง endpoint ที่โฮสต์ไว้ แล้วตรวจสอบสิทธิ์ด้วยข้อมูลรับรอง RAD Security ของคุณ
-
Endpoint:
https://api.rad.security/mcp/— โปรดสังเกต เครื่องหมายทับปิดท้าย -
Transport: Streamable HTTP
-
Authentication: ส่งข้อมูลรับรองของคุณในส่วนหัว
Authorization:Authorization: Bearer <access_key_id>:<secret_key>:<account_id><access_key_id>และ<secret_key>คือคีย์การเข้าถึง API ของ RAD Security (สร้างได้ในคอนโซล RAD Security);<account_id>คือ ID บัญชีของคุณ เซิร์ฟเวอร์จะตรวจสอบสิทธิ์ทุกคำขอกับ RAD Security API โดยไม่มีการจัดเก็บข้อมูลรับรองไว้บนเซิร์ฟเวอร์
รูปแบบ
Bearer ory_st_<session_token>:<account_id>ที่มีอายุสั้นก็ใช้ได้เช่นกัน แต่โทเค็นเซสชันจะหมดอายุ — สำหรับการใช้งานระยะยาว (เช่น Slack / Claude Tag) ควรใช้คีย์การเข้าถึง
การเชื่อมต่อเดียวสำหรับทั้ง tenant
หากต้องการทำงานกับทุกบัญชีจากการกำหนดค่า MCP เพียงชุดเดียว ให้สร้างคีย์การเข้าถึงบน tenant แล้วใช้ tenant=<tenant_id> แทน ID บัญชี:
Authorization: Bearer <access_key_id>:<secret_key>:tenant=<tenant_id>
ในเซสชันที่กำหนดขอบเขตระดับ tenant:
- เครื่องมือ
list_accountsจะแสดงบัญชีของ tenant - เครื่องมือที่กำหนดขอบเขตระดับบัญชีต้องใช้ argument
account_idซึ่งต้องเป็นบัญชีย่อยของ tenant แต่ละการเรียกใช้จะครอบคลุมหนึ่งบัญชี และจะไม่มีการรวมผลลัพธ์จากหลายบัญชี - โดยค่าเริ่มต้นจะใช้ได้เฉพาะเครื่องมือแบบอ่านอย่างเดียว เนื่องจากข้อมูลรับรองระดับ tenant เข้าถึงได้ทุกบัญชี หากต้องการเปิดใช้เครื่องมือเขียน ให้ส่ง
X-Rad-Readonly: false
สำหรับเซิร์ฟเวอร์ npx/stdio ให้ตั้งค่า RAD_SECURITY_TENANT_ID โดยไม่ตั้งค่า RAD_SECURITY_ACCOUNT_ID และใช้ RAD_SECURITY_READONLY=false เพื่อเปิดใช้เครื่องมือเขียน
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 คือ 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>"
}
}
}
}
Client อื่น ๆ
MCP client ส่วนใหญ่รองรับเซิร์ฟเวอร์ Streamable HTTP ระยะไกลที่ใช้ URL และส่วนหัว Authorization — ชื่อฟิลด์เท่านั้นที่แตกต่างกัน ไม่ว่าจะใช้กรณีใด ให้คง เครื่องหมายทับปิดท้าย URL ไว้
| Client | ตำแหน่งการกำหนดค่า | ฟิลด์ URL | ตัวระบุ transport | ฟิลด์ส่วนหัว |
|---|---|---|---|---|
| Claude Code | claude mcp add | positional arg | --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 ระยะไกลเป็น connector ซึ่งใช้การตั้งค่าข้อมูลรับรองของตัวเองแทนส่วนหัวคำขอแบบดิบ เพิ่ม https://api.rad.security/mcp/ เป็น connector แบบกำหนดเอง จากนั้นระบุข้อมูลรับรอง bearer ผ่านการตั้งค่าของ connector:
- Claude Tag (Slack): เพิ่มเซิร์ฟเวอร์เป็นปลั๊กอินที่มี
.mcp.jsonชี้ไปยัง endpoint แล้วเพิ่มข้อมูลรับรอง bearer ในแท็บ Credentials ของ Access bundle ดู Claude Tag — เชื่อมต่อเซิร์ฟเวอร์ MCP แบบกำหนดเอง - 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 ใช้ชุดเครื่องมือที่เล็กลง — ลดบริบท/โทเค็นที่ใช้ และยึดหลักสิทธิ์เท่าที่จำเป็น — ให้เพิ่มส่วนหัวกำหนดขอบเขตในการเชื่อมต่อนั้นควบคู่กับ Authorization ระบบจะบังคับใช้ชุดย่อยนี้: เครื่องมือที่อยู่นอกขอบเขตจะถูกซ่อนจาก tools/list และ ปฏิเสธหากมีการเรียกใช้
| ส่วนหัว | ผลลัพธ์ |
|---|---|
X-Rad-Toolkits: findings, images | เฉพาะ toolkit เหล่านี้ |
X-Rad-Exclude-Toolkits: workflows | toolkit ทั้งหมด ยกเว้นรายการเหล่านี้ |
X-Rad-Readonly: true | เฉพาะเครื่องมือแบบอ่านอย่างเดียว (ตัดเครื่องมือเขียนออก) |
Toolkit: containers, clusters, audit, images, kubeobject, runtime, findings, inbox, workflows, knowledge_base, radql, dashboards, integrations โดยค่าเริ่มต้นจะเปิดใช้ทั้งหมด — จำกัดขอบเขตด้วยส่วนหัวด้านบน และใช้ X-Rad-Readonly เมื่อต้องการยกเว้นเครื่องมือเขียนทั้งหมด
ตัวอย่าง — agent แบบอ่านอย่างเดียวสำหรับ findings/images (ใช้ได้กับ client ที่รองรับส่วนหัว; ตัวอย่างใช้ 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 โดยค่าเริ่มต้น endpoint ที่โฮสต์ไว้จะแสดง toolkit ทั้งหมดด้านล่าง จำกัดขอบเขตของ client ด้วย X-Rad-Toolkits / X-Rad-Exclude-Toolkits หรือปิดใช้เครื่องมือเขียนทั้งหมดด้วย X-Rad-Readonly: true
-
รายการบัญชี
- แสดงคลัสเตอร์และรายละเอียด
-
รายการคอนเทนเนอร์
- แสดงคอนเทนเนอร์และรายละเอียด
-
Security Findings
- แสดงและวิเคราะห์ security findings
- อัปเดตสถานะของ security finding
-
ความปลอดภัยขณะรันไทม์
- ดู process tree ของคอนเทนเนอร์ที่กำลังทำงาน
- ดู runtime baseline ของคอนเทนเนอร์ที่กำลังทำงาน
- วิเคราะห์พฤติกรรมของ process ในคอนเทนเนอร์ที่กำลังทำงาน
-
Audit
- แสดงรายชื่อผู้ที่เปิด shell เข้าไปใน pod
-
Images and Vulnerabilities
- ดู SBOM
- แสดง images และช่องโหว่ของ images
- ดู images ที่มีช่องโหว่สูงสุด
- เพิกเฉย / ยกเลิกการเพิกเฉย CVE และแสดงสถานะการจัดการ CVE ที่ใช้งานอยู่
-
Kubernetes Objects
- ดูรายละเอียดของทรัพยากร Kubernetes ที่ระบุ
- แสดงทรัพยากร Kubernetes
-
Inbox
- แสดงรายการใน inbox และรายละเอียด
- ทำเครื่องหมายรายการใน inbox ว่าเป็นผลบวกลวง
-
Automations (
workflows)- แสดง automations, runs และ schedules
- ดูรายละเอียด automation และ run
- เรียกใช้ automation
- สร้างและอัปเดต automations รวมถึงเพิ่ม cron schedules
"Automation" คือชื่อผลิตภัณฑ์ที่ผู้ใช้เห็น ส่วน "workflow" คือออบเจ็กต์ Windmill ที่ API และชื่อเครื่องมือใช้ ทั้งสองคำหมายถึงสิ่งเดียวกัน
-
Knowledge Base
- ค้นหา knowledge base
- แสดง collections และ documents
- เรียกใช้ structured query กับ document
-
Dashboards
- แสดง dashboards และดูรายละเอียด
- แสดงและดูรายละเอียดของ dashboard และ widget templates
- สร้าง dashboard และอัปเดต dashboard เดิม (ฟิลด์ที่ไม่ระบุจะคงเดิม จึงไม่จำเป็นต้องส่ง dashboard ทั้งหมดซ้ำเมื่อแก้ไขเพียงเล็กน้อย)
-
Integrations
- แสดง external integrations
-
RadQL (การค้นหาขั้นสูง)
- แสดงประเภทข้อมูลที่ใช้ค้นหาได้ (containers, findings, kubernetes_resources ฯลฯ)
- ดู schema/metadata ของประเภทข้อมูลที่ระบุ
- แสดงค่าที่เป็นไปได้สำหรับฟิลด์ตัวกรอง
- เรียกใช้ RadQL query พร้อมการกรอง การค้นหา และการรวมข้อมูล
- สร้าง query ด้วยโปรแกรมจากเงื่อนไขแบบมีโครงสร้าง
- เรียกใช้หลาย query พร้อมกัน
โฮสต์ด้วยตนเอง
ต้องการเรียกใช้เซิร์ฟเวอร์ด้วยตนเองหรือไม่ — เช่น ในสภาพแวดล้อม air-gapped เมื่อต้องปฏิบัติตามข้อกำหนดด้านการจัดเก็บข้อมูล หรือหากไม่ต้องการส่งข้อมูลผ่าน 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.
# Set this without RAD_SECURITY_ACCOUNT_ID for a session across all the tenant's accounts.
RAD_SECURITY_TENANT_ID="your_tenant_id"
# Optional: true exposes only read-only tools. Tenant-scoped sessions are read-only unless this is false.
RAD_SECURITY_READONLY="true"
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
ควบคุมว่าเซิร์ฟเวอร์ที่โฮสต์ด้วยตนเองจะแสดง toolkit ใดบ้าง:
INCLUDE_TOOLKITS: รายการ toolkit ที่คั่นด้วยจุลภาคเพื่อรวมไว้ (เปิดใช้เฉพาะรายการเหล่านี้)EXCLUDE_TOOLKITS: รายการ toolkit ที่คั่นด้วยจุลภาคเพื่อยกเว้น (เปิดใช้รายการอื่นทั้งหมด) จะไม่มีผลหากตั้งค่าINCLUDE_TOOLKITS
Toolkit ที่ใช้ได้: 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"
หลาย tenant (การตรวจสอบสิทธิ์ต่อคำขอ)
MCP_AUTH_MODE ควบคุมวิธีที่การติดตั้งใช้งาน Streamable HTTP ตรวจสอบสิทธิ์คำขอขาเข้า ซึ่งเป็นวิธีที่ endpoint ที่โฮสต์ไว้ใช้:
MCP_AUTH_MODE=env(ค่าเริ่มต้น) — ทุกเซสชันใช้ข้อมูลรับรองจาก environment ของRAD_SECURITY_*เป็นแบบ tenant เดียว และ ไม่มีการตรวจสอบสิทธิ์ที่ชั้น 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
transport แบบ SSE (
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