เชื่อมต่อ AI client (MCP)
ตำแหน่งในแอดมิน: System › Settings › API & AI agents (
/agent/keys), แท็บ Connect an AI แสดง URL เอ็นด์พอยต์และสนิปเพ็ตพร้อมคัดลอกสำหรับแต่ละไคลเอนต์ ซึ่งใส่คีย์ที่คุณเพิ่งสร้างไว้
What it does
Model Context Protocol (MCP) ช่วยให้ AI client สามารถเรียกใช้เครื่องมือต่างๆ ได้ พาเนลของคุณทำหน้าที่เป็นแอดมิน MCP เซิร์ฟเวอร์ที่ https://cloud.example.com/mcp/admin เชื่อมต่อเครื่องมือ AI ของคุณเองแล้วถามด้วยภาษาธรรมชาติ: "what is left to set up?", "add my Proxmox cluster", "create plans with a 40% margin" ไคลเอนต์จะเรียกใช้เครื่องมือแอดมินด้านล่าง พาเนลจะตรวจสอบสิทธิ์ขอบเขต สอบถามคุณก่อนดำเนินการที่มีความเสี่ยง และบันทึกทุกการเรียกใช้
MCP เอ็นด์พอยต์สองชุด
/mcp คือเอ็นด์พอยต์ฝั่ง ลูกค้า (คีย์ API ลูกค้า, vk_; ดู MCP server) ส่วน /mcp/admin คือเอ็นด์พอยต์ฝั่ง แอดมิน ที่อธิบายไว้ที่นี่ (คีย์แอดมิน ak_ หรือ OAuth) ทั้งสองส่วนนี้จะไม่ปะปนกัน: เครื่องมือแอดมินจะไม่แสดงบน /mcp และ /mcp/admin จะยอมรับเฉพาะคีย์แอดมินเท่านั้น
ข้อกำหนด
| Item | Requirement |
|---|---|
| Endpoint | https://cloud.example.com/mcp/admin บนโดเมนของพาเนลคุณเอง คัดลอก URL แบบเต็มจากแท็บ Connect an AI หน้าเดียวกันนี้จะแสดง URL ท้องถิ่น (http://127.0.0.1:<port>/mcp/admin) สำหรับเครื่องมือที่รันบนเซิร์ฟเวอร์เอง |
| ข้อมูลประจำตัว | admin API key (ak_...) ที่มีสิทธิ์ขอบเขตที่คุณต้องการ หรือ เข้าสู่ระบบผ่าน OAuth สำหรับเว็บคอนเนกเตอร์ (OAuth connectors) |
| ไคลเอนต์ | MCP client ใดๆ ที่รองรับการรับส่งข้อมูลแบบ Streamable HTTP และเฮดเดอร์ Authorization แบบกำหนดเอง รองรับโปรโตคอลเวอร์ชัน 2025-11-25, 2025-06-18 และ 2025-03-26 |
| Network | หากคุณใช้รีเวอร์สพร็อกซี่ของคุณเองหน้าพาเนล รีเวอร์สพร็อกซี่นั้นจะต้องส่งต่อ /mcp/admin เว็บคอนเนกเตอร์ (claude.ai, ChatGPT) จะเชื่อมต่อมาจากเซิร์ฟเวอร์ของผู้ให้บริการ ดังนั้น URL จึงต้องเข้าถึงได้จากอินเทอร์เน็ต |
เตรียมโครงสร้างพื้นฐาน
ไม่ต้องติดตั้งสิ่งใดบนเซิร์ฟเวอร์ หากคุณจำกัดคีย์ด้วย IP โปรดตรวจสอบว่าไอพีที่ไคลเอนต์ของคุณเชื่อมต่อมานั้นอยู่ในช่วงดังกล่าว ทดสอบการเข้าถึงก่อน:
bash
curl -i -X POST https://cloud.example.com/mcp/adminการตอบกลับด้วย 401 พร้อมเฮดเดอร์ WWW-Authenticate: Bearer ... resource_metadata=... หมายความว่าเอ็นด์พอยต์ทำงานอยู่และต้องการข้อมูลรับรอง
เชื่อมต่อใน NexCMP
- สร้างคีย์: System › Settings › API & AI agents › API keys › New key สำหรับการใช้งานครั้งแรก ให้ใช้
admin:readเท่านั้น แล้วค่อยเพิ่มสิทธิ์การเขียนเมื่อจำเป็น ดูเพิ่มเติมที่ Admin API keys - เปิดแท็บ Connect an AI ในขณะที่หน้าต่าง "key created" ยังใช้งานอยู่ สนิปเพ็ตทั้งหมดด้านล่างจะมีคีย์จริงของคุณอยู่แล้ว มิฉะนั้นจะแสดงตัวยึดตำแหน่ง
ak_YOUR_KEYแทน - คัดลอกสนิปเพ็ตสำหรับไคลเอนต์ของคุณ แล้วรันหรือวางตามขั้นตอนถัดไป

Claude Code
bash
claude mcp add --transport http nexcmp https://cloud.example.com/mcp/admin \
--header "Authorization: Bearer ak_XXXX"จากนั้นเริ่ม claude และถามว่า "list the tools from nexcmp" หรือ "what is left to set up?"
ตรวจสอบเมื่อ 30/10/2026 ด้วย Claude Code 2.1: claude mcp add --transport http … เขียนเซิร์ฟเวอร์ (เพิ่ม -s project เพื่อเก็บบันทึกไว้ใน .mcp.json ของโปรเจกต์ — Claude Code จะขอให้คุณอนุมัติเซิร์ฟเวอร์โปรเจกต์ในครั้งแรก) สำหรับสคริปต์ claude -p "…" --mcp-config .mcp.json --strict-mcp-config --allowedTools "mcp__nexcmp__*" สามารถรันได้โดยไม่ต้องมีข้อความขออนุมัติและอนุญาตให้ Claude ใช้เฉพาะเครื่องมือของพาเนลเท่านั้น
Claude Desktop
ต้องใช้ Node.js 18 ขึ้นไป เพิ่มข้อมูลนี้ลงใน claude_desktop_config.json (ใช้บริดจ์ mcp-remote) แล้วรีสตาร์ท Claude Desktop:
json
{
"mcpServers": {
"nexcmp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://cloud.example.com/mcp/admin", "--header", "Authorization:Bearer ak_XXXX"]
}
}
}หากระบบของคุณจัดการช่องว่างในอาร์กิวเมนต์ของเฮดเดอร์ไม่ถูกต้อง ให้ใส่ค่าทั้งหมดลงในตัวแปรสภาพแวดล้อมแทน เช่นเดียวกับเอ็นด์พอยต์ลูกค้า: "args": [..., "--header", "Authorization:${NEXCMP_AUTH_HEADER}"] พร้อม "env": { "NEXCMP_AUTH_HEADER": "Bearer ak_XXXX" }
claude.ai (custom connector)
ไม่ต้องใช้คีย์: เข้าสู่ระบบด้วย OAuth ใน claude.ai ให้เปิดการตั้งค่าคอนเนกเตอร์ เพิ่ม custom connector วาง https://cloud.example.com/mcp/admin จากนั้นเข้าสู่ระบบด้วยบัญชีแอดมิน NexCMP ของคุณและเลือกสิทธิ์บนหน้าจอขอความยินยอม รายละเอียด: OAuth connectors
ChatGPT (developer mode)
ไม่ต้องใช้คีย์ ใน ChatGPT ให้เปิดโหมดนักพัฒนาซอฟต์แวร์ เพิ่ม MCP คอนเนกเตอร์ด้วย URL https://cloud.example.com/mcp/admin เลือก OAuth และเข้าสู่ระบบด้วยบัญชีแอดมิน NexCMP ของคุณ รายละเอียด: OAuth connectors
Codex CLI
เพิ่มลงใน ~/.codex/config.toml:
toml
[mcp_servers.nexcmp]
url = "https://cloud.example.com/mcp/admin"
bearer_token_env_var = "NEXCMP_KEY"จากนั้นส่งออกคีย์ในเชลล์ที่เริ่ม Codex:
bash
export NEXCMP_KEY=ak_XXXX
codex
codex mcp list # shows nexcmp with "Bearer token" authโหมดไม่โต้ตอบ codex exec
ใน codex exec (สคริปต์, CI) Codex จะไม่ถามก่อนเรียกใช้เครื่องมือ และจะข้ามเครื่องมือที่เปลี่ยนแปลงข้อมูล เพิ่ม default_tools_approval_mode = "approve" ใต้ [mcp_servers.nexcmp] เพื่ออนุญาตให้เรียกใช้เครื่องมือเหล่านั้น แผงควบคุมยังคงแสดงตัวอย่างและขอการยืนยันสำหรับการดำเนินการด้านเงิน ความปลอดภัย และการลบ ตรวจสอบแล้วด้วย Codex CLI 0.166 เมื่อ 30/10/2026
Gemini CLI
เพิ่มลงใน ~/.gemini/settings.json:
json
{
"mcpServers": {
"nexcmp": {
"httpUrl": "https://cloud.example.com/mcp/admin",
"headers": { "Authorization": "Bearer ak_XXXX" }
}
}
}Gemini CLI จะปิดการใช้งานเซิร์ฟเวอร์ MCP ในโฟลเดอร์ที่ไม่เชื่อถือ เริ่มต้นในโฟลเดอร์ที่คุณเชื่อถือ (หรือเชื่อถือโฟลเดอร์เมื่อมี prompt ถาม) จากนั้นตรวจสอบด้วย gemini mcp list — ระบบจะแสดง nexcmp … Connected คุณสามารถเก็บคีย์ไว้นอกไฟล์ได้โดยใช้ "Authorization": "Bearer $NEXCMP_KEY" ตรวจสอบแล้วด้วย Gemini CLI 0.66 เมื่อ 30/10/2026
Cursor
เพิ่มลงใน ~/.cursor/mcp.json (หรือ .cursor/mcp.json ในโปรเจกต์):
json
{
"mcpServers": {
"nexcmp": {
"url": "https://cloud.example.com/mcp/admin",
"headers": { "Authorization": "Bearer ak_XXXX" }
}
}
}เก็บคีย์ไว้นอกไฟล์กำหนดค่า
ในกรณีที่ไคลเอนต์รองรับ ให้่อ่านคีย์จากตัวแปรสภาพแวดล้อมแทนการเขียนลงในไฟล์โดยตรง โดย Codex รองรับวิธีนี้เป็นค่าเริ่มต้น (bearer_token_env_var) และ Cursor รองรับ "Bearer ${env:NEXCMP_KEY}" ห้ามคอมมิตไฟล์ที่มีคีย์เก็บไว้เด็ดขาด
OpenAI Agents SDK (Python)
python
from agents.mcp import MCPServerStreamableHttp
nexcmp = MCPServerStreamableHttp(
params={"url": "https://cloud.example.com/mcp/admin",
"headers": {"Authorization": "Bearer ak_XXXX"}},
name="nexcmp",
)การทำงานที่สมบูรณ์ (ตรวจสอบแล้วด้วย openai-agents 0.24 เมื่อ 30/10/2026 — เครื่องมืออ่าน จากนั้นการเปลี่ยนแปลงยอดเงินที่ส่งคืนตัวอย่างการยืนยันและถูกนำไปใช้ในการเรียกครั้งที่สองด้วย confirm_token):
python
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp
async def main():
async with MCPServerStreamableHttp(params={"url": "https://cloud.example.com/mcp/admin",
"headers": {"Authorization": "Bearer ak_XXXX"}}, name="nexcmp") as nexcmp:
agent = Agent(name="admin", model="gpt-5", mcp_servers=[nexcmp],
instructions="You operate a hosting panel through the nexcmp tools. Ask me before confirming money actions.")
result = await Runner.run(agent, "Run system_health and summarise it in one line.")
print(result.final_output)
asyncio.run(main())OpenAI Responses API
ส่งเซิร์ฟเวอร์เป็นเครื่องมือประเภท mcp คง require_approval ไว้ที่ always เพื่อให้โปรแกรมของคุณถามคุณก่อนการเรียกใช้แต่ละครั้ง:
json
{
"type": "mcp",
"server_label": "nexcmp",
"server_url": "https://cloud.example.com/mcp/admin",
"headers": { "Authorization": "Bearer ak_XXXX" },
"require_approval": "always"
}อื่นๆ (HTTP ทั่วไป)
ไคลเอนต์ที่ไม่มี MCP สามารถเรียกใช้เครื่องมือเดียวกันผ่าน HTTP ได้ โดย GET /v1/admin/agent/tools ใช้แสดงรายการเครื่องมือ, POST /v1/admin/agent/tools/<name> ใช้เรียกใช้เครื่องมือด้วยเนื้อหา JSON ของอาร์กิวเมนต์ และ GET /v1/admin/openapi.json จะส่งคืนคำอธิบาย OpenAPI 3.1 (เครื่องมือละหนึ่งการทำงาน) ทั้งหมดต้องใช้ Authorization: Bearer ak_...
ตรวจสอบ
หากไม่มีไคลเอนต์ ให้แสดงรายการเครื่องมือ:
bashcurl -s https://cloud.example.com/mcp/admin \ -H "Authorization: Bearer ak_XXXX" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'คำตอบคือผลลัพธ์ JSON-RPC พร้อมเครื่องมือที่ขอบเขต (scopes) ของคุณอนุญาต
ในไคลเอนต์ของคุณ ให้พิมพ์คำว่า "run system_health" ซึ่งจะแสดงการแจ้งเตือน, สถานะสุขภาพของโครงสร้างพื้นฐานที่เชื่อมต่อ, การชำระเงิน, อีเมล, AI และสถานะไลเซนส์
เปิด API & AI agents › Activity: การเรียกใช้จะแสดงรายการพร้อมชื่อไคลเอนต์และ
mcpบนเซิร์ฟเวอร์
sudo nexcmp statusจะพิมพ์บรรทัด "MCP admin" ซึ่งระบุว่าreadyเมื่อเอ็นด์พอยต์ตอบกลับ (HTTP 401 โดยไม่มีคีย์ถือเป็นสถานะปกติ)
เครื่องมือ
เซิร์ฟเวอร์มีเครื่องมือให้บริการ 58 รายการ ไคลเอนต์จะมองเห็นเฉพาะเครื่องมือที่ขอบเขตของคีย์อนุญาตเท่านั้น: เครื่องมืออ่านต้องใช้ admin:read ส่วนเครื่องมือเขียนต้องใช้ขอบเขตของตนเอง นอกจากนี้ เครื่องมือเขียนยังมีอาร์กิวเมนต์เสริม confirm_token (ดู Confirmation) อาร์กิวเมนต์จะถูกตรวจสอบกับสีมาของแต่ละเครื่องมือ: อาร์กิวเมนต์ที่ไม่รู้จักหรือพิมพ์ผิดจะถูกปฏิเสธพร้อมข้อความระบุชื่ออาร์กิวเมนต์นั้น
ราคาแสดงเป็น USD: ราคาแพ็กเกจเป็นดอลลาร์ต่อชั่วโมง (hourly_usd), ยอดเงินคงเหลือเป็นเซนต์ สามารถตั้งค่าข้อมูลลับได้แต่จะไม่ถูกส่งคืนกลับมา
ภาพรวมและบันทึก
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
system_health | การแจ้งเตือนที่ต้องสนใจ, สถานะสุขภาพของโครงสร้างพื้นฐาน, การชำระเงิน, อีเมล, AI, ไลเซนส์ และสถานะการอัปเดต | admin:read | ไม่ | ไม่ |
setup_checklist | สิ่งที่กำหนดค่าไว้และสิ่งที่เหลืออยู่: ไลเซนส์, โครงสร้างพื้นฐาน, โซน, เทมเพลต OS, แพ็กเกจ, การชำระเงิน, อีเมล, การสร้างแบรนด์, ข้อกำหนดทางกฎหมาย, คำสั่งซื้อทดสอบ | admin:read | ไม่ | ไม่ |
license_status | สถานะไลเซนส์และระบุว่ามี NexCMP เวอร์ชันใหม่กว่าหรือไม่ | admin:read | ไม่ | ไม่ |
audit_search | ค้นหาบันทึกการตรวจสอบของผู้ดูแลระบบและบันทึกคีย์ API | admin:read | ไม่ | ไม่ |
การตั้งค่า, การสร้างแบรนด์, ข้อกำหนดทางกฎหมาย, โมดูล
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
settings_get | อ่านการตั้งค่าทั่วไป (keys ตัวกรอง; อักขระ * ต่อท้ายจะจับคู่คำนำหน้า) | admin:read | ไม่ | ไม่ |
settings_update | เปลี่ยนการตั้งค่าทั่วไปจากออบเจ็กต์ values แบบแบน ยอมรับเฉพาะคีย์ที่ระบุโดย settings_get เท่านั้น | settings:write | ใช่ | เมื่อคีย์เกี่ยวข้องกับการชำระเงิน, ความปลอดภัยในการเข้าสู่ระบบ, สวิตช์ทั่วทั้งไซต์ หรือราคา |
branding_get | ชื่อแบรนด์, สี,สกุลเงินที่แสดง, ชื่อผู้ขาย, โลโก้ และ URL ของ favicon | admin:read | ไม่ | ไม่ |
branding_update | ตั้งค่าชื่อแบรนด์ (สูงสุด 60 ตัวอักษร), สี (#rrggbb),สกุลเงินที่แสดง (usd หรือ vnd) และชื่อผู้ขาย | settings:write | ใช่ | ไม่ |
branding_logo_set | อัปโหลดโลโก้แบบสว่างหรือมืด หรือฟาฟิคอนจาก HTTPS URL หรือ base64 (PNG, JPEG, WEBP, ICO หรือ SVG สูงสุด 512 KB) | settings:write | ใช่ | ไม่ |
legal_get | เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัว (ภาษาอังกฤษและภาษาเวียดนาม) รวมถึงค่าเริ่มต้นที่เป็นกลาง | admin:read | ไม่ | ไม่ |
legal_update | กำหนดข้อความเงื่อนไขและนโยบายความเป็นส่วนตัว (Markdown อย่างง่าย ไม่มี HTML อย่างละไม่เกิน 50 KB) ค่าว่างจะคืนค่าเริ่มต้น | settings:write | ใช่ | ไม่ |
modules_get | โมดูลเสริมใดที่เปิดใช้งานอยู่และโมดูลใดที่สามารถสลับได้ | admin:read | ไม่ | ไม่ |
module_set | เปิดหรือปิดโมดูลเสริม (key ต้องเป็นหนึ่งใน settable) | settings:write | ใช่ | ไม่ |
อีเมลและการแจ้งเตือน
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
smtp_get | การตั้งค่าอีเมลขาออก (ซ่อนรหัสผ่านไว้) และสถานะคิว | admin:read | ไม่ | ไม่ |
smtp_configure | ตั้งค่าเซิร์ฟเวอร์ SMTP การเปลี่ยนโฮสต์ พอร์ต หรือความปลอดภัยจะต้องใส่รหัสผ่านใหม่อีกครั้ง | settings:write (+ secrets:write สำหรับรหัสผ่าน) | ใช่ | ไม่ |
smtp_test | ส่งอีเมลทดสอบจริงด้วยการตั้งค่าที่บันทึกไว้ | settings:write | ส่งอีเมล | ไม่ |
telegram_get | ช่องทางการแจ้งเตือนของผู้ดูแลระบบ (รหัสแชท ส่วนโทเค็นบอทจะไม่แสดงกลับมา) | admin:read | ไม่ | ไม่ |
telegram_configure | เพิ่มหรืออัปเดตช่องทางการแจ้งเตือนผ่าน Telegram (โทเค็นบอทและรหัสแชท) และเปิดหรือปิดการแจ้งเตือนของผู้ดูแลระบบ | settings:write (+ secrets:write สำหรับโทเค็น) | ใช่ | ไม่ |
telegram_test | ส่งข้อความทดสอบไปยังช่องทาง Telegram | settings:write | ส่งข้อความ | ไม่ |
การชำระเงินและสกุลเงิน
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
payments_get | สถานะของ Stripe, PayPal, คริปโต (USDT) และการโอนเงินผ่านธนาคาร พร้อมทั้งช่องทางและค่าธรรมเนียมที่เปิดใช้งาน | admin:read | ไม่ | ไม่ |
payment_configure | ตั้งค่าข้อมูลรับรองของเกตเวย์หนึ่งรายการ (stripe, paypal, crypto หรือ bank) | billing:write (+ secrets:write) | ใช่ | เสมอ |
payment_test | ตรวจสอบข้อมูลรับรองที่บันทึกไว้ของเกตเวย์กับผู้ให้บริการ | billing:write | ไม่ | ไม่ |
currency_get | สกุลเงินที่แสดงและอัตราแลกเปลี่ยน USD เป็น VND (แบบอัตโนมัติหรือกำหนดเอง) | admin:read | ไม่ | ไม่ |
currency_set | กำหนดสกุลเงินที่แสดงและ/หรืออัตราแลกเปลี่ยนแบบกำหนดเอง (0 หมายถึงอัตโนมัติ นอกเหนือจากนั้นคือ 15000 ถึง 50000) | billing:write | ใช่ | เมื่อคุณเปลี่ยนอัตราแลกเปลี่ยนแบบกำหนดเอง |
โครงสร้างพื้นฐานและโซน
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
cloudstack_get | Endpoint ของ CloudStack รวมถึงรหัสโซนและเครือข่ายที่บันทึกไว้ (ซ่อนคีย์ไว้) | admin:read | ไม่ | ไม่ |
cloudstack_test | ทดสอบ Endpoint ด้วย API key และ secret โดยไม่ต้องบันทึก ระบบจะแสดงรายการโซน | infra:write (+ secrets:write เนื่องจากคุณส่งคีย์เข้ามา) | ไม่ | ไม่ |
cloudstack_connect | บันทึกการเชื่อมต่อ CloudStack | infra:write (+ secrets:write) | ใช่ | เสมอ |
proxmox_list | คลัสเตอร์ Proxmox VE ที่เพิ่มเป็นแหล่งข้อมูล พร้อมสถานะความพร้อมใช้งาน | admin:read | ไม่ | ไม่ |
proxmox_add | เพิ่มคลัสเตอร์ Proxmox VE ด้วย API token (user@realm!tokenid) และ secret ของมัน | infra:write (+ secrets:write) | ใช่ | ไม่ |
proxmox_test | เชื่อมต่อกับคลัสเตอร์ตามรหัส การเชื่อมต่อที่สำเร็จครั้งแรกจะตรึงใบรับรอง TLS ไว้ | infra:write | ใช่ | ไม่ |
proxmox_attach_zone | ขายคลัสเตอร์ Proxmox ในโซนที่มีอยู่ โดยเลือกโหนดเป็นภูมิภาคได้ | infra:write | ใช่ | ไม่ |
zones_list | โซน (สถานที่) ที่ลูกค้าสามารถเลือกได้ | admin:read | ไม่ | ไม่ |
zone_create | สร้างโซน | infra:write | ใช่ | ไม่ |
แคตตาล็อกและแพ็กเกจ
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
templates_list | เทมเพลต OS ที่ลูกค้าสามารถติดตั้งได้ | admin:read | ไม่ | ไม่ |
templates_sync | นำเข้าเทมเพลต OS จาก CloudStack | catalog:write | ใช่ | ไม่ |
template_update | เปิดใช้งานหรือซ่อนเทมเพลต เปลี่ยนชื่อ ตั้งค่าผู้ใช้สำหรับเข้าสู่ระบบ หรือลำดับ | catalog:write | ใช่ | ไม่ |
offerings_list | Service offering ของ CloudStack (CPU, หน่วยความจำ, ดิสก์รูท) สำหรับใช้สร้างแพ็กเกจ | admin:read | ไม่ | ไม่ |
plans_list | แพ็กเกจพร้อมราคาต่อชั่วโมงและต่อเดือน ขนาด โซน และจำนวนเซิร์ฟเวอร์ที่ใช้งานอยู่ | admin:read | ไม่ | ไม่ |
plan_create | สร้างแพ็กเกจ กำหนดราคาในรูปแบบ hourly_usd แพ็กเกจ CloudStack ต้องใช้ cs_offering_id ส่วนแพ็กเกจ Proxmox ต้องใช้ backend_id | catalog:write | ใช่ | ไม่ |
plan_update | เปลี่ยนชื่อ แสดงหรือซ่อน เปิดหรือปิดใช้งาน หรือเปลี่ยนราคาแพ็กเกจ การเปลี่ยนแปลงขนาดบนแพ็กเกจที่กำลังใช้งานอยู่จำเป็นต้องคัดลอก | catalog:write | ใช่ | เมื่อราคาเปลี่ยนแปลง |
plans_from_offerings | สร้างตารางแพ็กเกจเริ่มต้นจาก offerings (หรือขนาดของ Proxmox) โดยใช้ต้นทุนและเปอร์เซ็นต์มาร์จินของคุณ ระบบจะแสดงตัวอย่าง เรียกใช้อีกครั้งด้วย apply=true เพื่อสร้างแพ็กเกจ | catalog:write | ด้วย apply=true | เสมอเมื่อปรับใช้ |
quota_defaults_get | ขีดจำกัดเริ่มต้นสำหรับลูกค้า | admin:read | ไม่ | ไม่ |
quota_defaults_set | เปลี่ยนการตั้งค่า quota_* | catalog:write | ใช่ | ไม่ |
coupons_list | ชุดโค้ดส่วนลดและโค้ดของขวัญ | admin:read | ไม่ | ไม่ |
coupon_create | สร้างชุดโค้ด: ประเภท money (มูลค่าหน้าบัตรเป็นหน่วยเซนต์ USD) หรือ percent (1 ถึง 100 พร้อมส่วนลดสูงสุด) | catalog:write | ใช่ | เสมอ |
ลูกค้าและตัวแทนจำหน่าย
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
customers_search | ค้นหาลูกค้าตามอีเมล ชื่อ หรือ IP | admin:read | ไม่ | ไม่ |
customer_get | บัญชี ยอดคงเหลือ เซิร์ฟเวอร์ และประวัติการเรียกเก็บเงินล่าสุดของลูกค้ารายหนึ่ง | admin:read | ไม่ | ไม่ |
customer_adjust_balance | เพิ่ม (ค่าบวก) หรือลด (ค่าลบ) เครดิตในหน่วยเซนต์ USD จำเป็นต้องระบุเหตุผล | billing:write | ใช่ | เสมอ |
customer_block | บล็อกลูกค้า และสามารถเลือกหยุดการทำงานของเซิร์ฟเวอร์ได้ จำเป็นต้องระบุเหตุผล | customers:write | ใช่ | เสมอ |
customer_unblock | ปลดบล็อกลูกค้า | customers:write | ใช่ | ไม่ |
resellers_list | ตัวแทนจำหน่ายพร้อมกระเป๋าเงินและสถานะ | admin:read | ไม่ | ไม่ |
reseller_get | เว็บไซต์ กระเป๋าเงิน ผู้ใช้งาน และเกตเวย์ของตัวแทนจำหน่ายรายหนึ่ง | admin:read | ไม่ | ไม่ |
ผู้ให้บริการ AI
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
ai_provider_get | ผู้ให้บริการที่เข้ากันได้กับ OpenAI ซึ่งใช้งานโดย AI Chat และ AI Agent ของลูกค้า (มาสก์คีย์ไว้) | admin:read | ไม่ | ไม่ |
ai_provider_set | ตั้งค่าผู้ให้บริการ: base URL, model, API key, fallback models, reasoning effort, enabled | ai:write (+ secrets:write สำหรับคีย์) | ใช่ | ไม่ |
ai_provider_test | ส่งคำถามหนึ่งข้อไปยังผู้ให้บริการที่บันทึกไว้เพื่อตรวจสอบว่าใช้งานได้หรือไม่ | ai:write | ไม่ | ไม่ |
ไฟล์การกำหนดค่า
| เครื่องมือ | What it does | Scope | เปลี่ยนแปลงข้อมูล | ถามคุณ |
|---|---|---|---|---|
config_export | ส่งออกการกำหนดค่าเป็น YAML (ข้อมูลลับจะกลายเป็นการอ้างอิง secret://) | admin:read | ไม่ | ไม่ |
config_plan | เปรียบเทียบการกำหนดค่า YAML กับพาเนลที่ใช้งานจริงและแสดงรายการสิ่งที่จะเปลี่ยนแปลง | admin:read | ไม่ | ไม่ |
config_apply | ใช้งานการกำหนดค่า YAML ทีละส่วน โดยแต่ละการเปลี่ยนแปลงจะเป็นไปตามกฎขอบเขตและการยืนยันตามปกติ | admin:read + ขอบเขตของทุกการเปลี่ยนแปลง | ใช่ | ต่อการเปลี่ยนแปลง |
ดูรูปแบบไฟล์ได้ที่ Configuration as code
Prompts
เซิร์ฟเวอร์ยังมีพรอมต์สำเร็จรูป 3 รายการที่ไคลเอนต์สามารถแสดงเป็นทางลัดได้:
| พรอมต์ | อาร์กิวเมนต์ | สิ่งที่สั่งให้ AI ดำเนินการ |
|---|---|---|
initial-setup | ไม่มี | เรียกใช้ setup_checklist, อธิบายแต่ละขั้นตอนที่ค้างอยู่ในหนึ่งประโยค, ขอข้อมูลที่จำเป็นจากคุณ, ดำเนินการตามขั้นตอนด้วยเครื่องมือที่ตรงกัน, แสดงตัวอย่างการเปลี่ยนแปลงทางการเงินหรือความปลอดภัย และสิ้นสุดด้วย system_health |
add-proxmox | endpoint (ทางเลือก, https://host:8006) | ขอ API token จากนั้นเรียกใช้ proxmox_add, proxmox_test, เครื่องมือโซน และ proxmox_attach_zone จากนั้นเสนอแพ็กเกจด้วย plans_from_offerings และรอการอนุมัติจากคุณ |
launch-pricing | margin_pct (ทางเลือก, ค่าเริ่มต้น 40) | สอบถามต้นทุนรายเดือนของคุณต่อ vCPU, ต่อ GB ของ RAM และต่อ GB ของดิสก์ แสดงตารางตัวอย่างพร้อมต้นทุน ราคาต่อเดือน และราคาต่อชั่วโมง แล้วจึงสร้างแพ็กเกจหลังจากที่คุณอนุมัติ |
การยืนยัน (confirm_token)
การดำเนินการที่มีการย้ายเงิน ลบข้อมูล เปลี่ยนข้อมูลการชำระเงิน หรือความปลอดภัยในการเข้าสู่ระบบ จะเป็นแบบ 2 ขั้นตอน:
- การเรียกใช้ครั้งแรกจะไม่มีการเปลี่ยนแปลงใดๆ ผลลัพธ์ของเครื่องมือจะขึ้นต้นด้วย "CONFIRMATION REQUIRED" และมี ตัวอย่าง (สิ่งที่จะถูกเรียกใช้, เหตุผลที่ละเอียดอ่อน, ค่าใหม่และค่าปัจจุบัน) รวมถึง
confirm_token - ไคลเอนต์จะต้องแสดงตัวอย่างให้คุณดู และหลังจากที่คุณอนุมัติแล้วเท่านั้น จึงจะเรียกใช้เครื่องมือเดิมอีกครั้งด้วยอาร์กิวเมนต์เดิมพร้อมกับ
confirm_token - โทเค็นสามารถใช้ได้ครั้งเดียว สำหรับคำขอดังกล่าวโดยเฉพาะเท่านั้น และจะหมดอายุหลังจาก 5 นาที
คำสั่งของเซิร์ฟเวอร์จะบอก AI ให้ปฏิบัติกับผลลัพธ์ของเครื่องมือเสมือนเป็นข้อมูล ไม่ใช่คำสั่ง และห้ามทำซ้ำการเรียกด้วยโทเค็นที่คุณยังไม่ได้อนุมัติ คุณคือผู้คอยตรวจสอบ: โปรดอ่านตัวอย่างก่อน
ไม่อนุมัติอัตโนมัติ
ไคลเอนต์บางตัวสามารถอนุมัติการเรียกเครื่องมือทุกรายการได้โดยอัตโนมัติ สำหรับเครื่องมือที่มีการเขียน ให้เปิดการอนุมัติรายครั้งไว้ หรือใช้คีย์แบบอ่านอย่างเดียว เพื่อไม่ให้แผนการที่ผิดพลาดจาก AI เข้าถึงแผงควบคุมของคุณได้โดยไม่ผ่านการตรวจสอบ
วิธีการทำงาน
| Item | Detail |
|---|---|
| การรับส่งข้อมูล | POST /mcp/admin ด้วยข้อความ JSON-RPC 2.0; คำตอบคือ application/json สูงสุด 20 ข้อความต่อหนึ่งแบทช์ GET /mcp/admin ตอบกลับ 405 (ไม่มีสตรีมเซิร์ฟเวอร์); DELETE /mcp/admin สิ้นสุดเซสชัน |
| การยืนยันตัวตน | Authorization: Bearer ak_... (คีย์แบบกำหนดเองหรือโทเค็นการเข้าถึง OAuth) ข้อมูลประจำตัวที่ขาดหายไปหรือไม่ถูกต้องจะส่งคืน 401 พร้อมกับ WWW-Authenticate: Bearer ... resource_metadata=... ซึ่งช่วยให้ไคลเอนต์ OAuth สามารถเริ่มเข้าสู่ระบบได้ด้วยตนเอง |
| เซสชัน | Mcp-Session-Id ออกโดย initialize ซึ่งผูกอยู่กับคีย์นั้นและมีอายุใช้งาน 24 ชั่วโมง |
| ความสามารถ | เครื่องมือและพรอมต์ ไม่มีทรัพยากร |
| ขนาด | เนื้อหาคำขอสูงสุด 1 MB; ผลลัพธ์ของเครื่องมือจะถูกตัดทอนหลังจากประมาณ 100 KB |
| ต้นทาง | คำขอที่มีส่วนหัว Origin จากเว็บไซต์อื่นจะถูกปฏิเสธ (origin_not_allowed) ไคลเอนต์บรรทัดคำสั่งและเดสก์ท็อปจะไม่ส่งข้อมูลนี้ |
| เกตเวย์เดียวกับ REST | การเรียกเครื่องมือแต่ละรายการจะถูกส่งผ่านท่อส่งคำขอของแผงควบคุมเองด้วยคีย์ของคุณ เพื่อให้ขอบเขต ช่วง IP ขีดจำกัดอัตรา การยืนยัน และบันทึกกิจกรรมทำงานตรงกันทุกประการเช่นเดียวกับการเรียก API โดยตรง |
ขีดจำกัดและหมายเหตุ
- เครื่องมือที่คุณมองไม่เห็นคือขอบเขตที่คุณไม่ได้ให้สิทธิ์ โปรดเพิ่มขอบเขตดังกล่าวลงในคีย์ใหม่
- การตั้งรหัสผ่านหรือ API key ผ่านทาง AI client หมายความว่าข้อมูลลับจะผ่านระบบ AI นั้น หากต้องการ คุณสามารถปิด
secrets:writeไว้และป้อนข้อมูลลับด้วยตนเองในหน้าผู้ดูแลระบบ หรือใช้ฟิลด์ Secret ของ AI Chat (AI Chat ในระบบผู้ดูแลระบบ) หรือการอ้างอิงsecret://(การกำหนดค่าเป็นโค้ด) - ไคลเอนต์ไม่ได้ใช้เซสชันร่วมกัน: แต่ละการเชื่อมต่อเริ่มต้นด้วย
initialize - เพิกถอนคีย์ใน API & AI agents เพื่อตัดการเชื่อมต่อไคลเอนต์ AI ทันที
การแก้ Problme
| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
401 invalid_key | คีย์ที่ไม่ถูกต้อง ถูกตัดทอน หรือไม่ใช่คีย์ผู้ดูแลระบบ (เช่น คีย์ vk_) | ใช้คีย์ ak_ |
401 key_expired หรือ key_revoked | คีย์หมดอายุหรือถูกเพิกถอน | สร้างคีย์ใหม่. |
403 ip_not_allowed | IP ของคุณอยู่นอกช่วง IP ของคีย์ | เชื่อมต่อจาก IP ที่ได้รับอนุญาต |
403 origin_not_allowed | หน้าเว็บเบราว์เซอร์จากต้นทางอื่นเรียกใช้เอนด์จุดนี้ | ใช้ไคลเอนต์เดสก์ท็อปหรือ CLI |
404 ในคำขอที่มี Mcp-Session-Id | เซสชันเป็นของคีย์อื่นหรือหมดอายุแล้ว | ส่ง initialize อีกครั้ง |
400 ไม่รองรับ MCP-Protocol-Version | ไคลเอนต์ใช้เวอร์ชันที่เซิร์ฟเวอร์ไม่รู้จัก | อัปเดตไคลเอนต์; เวอร์ชันที่รองรับ: 2025-11-25, 2025-06-18, 2025-03-26 |
| รายการเครื่องมือสั้นเกินไป | ขอบเขตของคีย์ | สร้างคีย์ที่มีขอบเขตเพิ่มเติม |
insufficient_scope ในการเรียกใช้งาน | เครื่องมือต้องการขอบเขตที่สอง เช่น secrets:write | เพิ่มขอบเขตดังกล่าวลงในคีย์ใหม่ |
429 rate_limited | จำนวนการเรียกต่อนาทีเกินกว่าที่คีย์อนุญาต | รอ Retry-After หรือเพิ่มขีดจำกัดบนคีย์ใหม่ |
| claude.ai หรือ ChatGPT ไม่สามารถเชื่อมต่อได้ | ไม่สามารถเข้าถึง URL ได้จากอินเทอร์เน็ต หรือพร็อกซีบล็อก /mcp/admin หรือ /oauth-admin/ | ตรวจสอบ DNS, TLS และรีเวอร์สพร็อกซี |
สำหรับรหัสข้อผิดพลาดทั้งหมด โปรดดูที่ Admin API keys