توصيل عميل ذكاء اصطناعي (MCP)
أين تجد ذلك في لوحة المشرف: System › Settings › API & AI agents (
/agent/keys)، ويُظهر تبويب Connect an AI عنوان URL لنقطة النهاية وقصاصة جاهزة للنسخ لكل عميل، معبأة بمفتاح أنشأته للتو.
الوظيفة
يتيح بروتوكول Model Context Protocol (MCP) لعميل الذكاء الاصطناعي استدعاء الأدوات. تخدم لوحتك خادم MCP للمشرف على https://cloud.example.com/mcp/admin. قم بتوصيل أداة الذكاء الاصطناعي الخاصة بك به واسأل بلغة واضحة: "ما الذي تبقى لإعداده؟"، "أضف مجموعة Proxmox الخاصة بي"، "أنشئ خططاً بهامش 40%". يستدعي العميل أدوات المشرف أدناه؛ وتتحقق اللوحة من النطاقات، وتسألك قبل أي إجراء محفوف بالمخاطر، وتسجل كل عملية استدعاء.
نقطتا نهاية MCP
/mcp هي نقطة نهاية العميل (مفاتيح API الخاصة بالعملاء، vk_؛ راجع خادم MCP). /mcp/admin هي نقطة نهاية المسؤول الموضحة هنا (مفاتيح المسؤول ak_ أو OAuth). لا تختلط الجهتان أبداً: أدوات المسؤول غير مرئية على /mcp، وتقبل /mcp/admin مفاتيح المسؤول فقط.
المتطلبات
| العنصر | المتطلب |
|---|---|
| نقطة النهاية | https://cloud.example.com/mcp/admin على نطاق لوحتك الخاص. انسخ عنوان URL الدقيق من تبويب Connect an AI. تعرض نفس الصفحة عنوان URL محلي (http://127.0.0.1:<port>/mcp/admin) للأدوات التي تعمل على الخادم نفسه. |
| بيانات الاعتماد | مفتاح مسؤول API (ak_...) مع النطاقات التي تريدها، أو تسجيل الدخول عبر OAuth لموصلات الويب (موصلات OAuth). |
| العميل | أي عميل MCP يدعم نقل Streamable HTTP وترويسة Authorization مخصصة. إصدارات البروتوكول 2025-11-25 و 2025-06-18 و 2025-03-26. |
| الشبكة | إذا وضعت وكيل عكسي (reverse proxy) خاص بك أمام اللوحة، فيجب عليه إعادة توجيه /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. بينما لا يزال مربع حوار "تم إنشاء المفتاح" حديثاً، تحتوي كل قصاصة أدناه بالفعل على مفتاحك الحقيقي. وإلا فستعرض العنصر النائب
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 افتح إعدادات الموصلات، وأضف موصلاً مخصصاً، والصق https://cloud.example.com/mcp/admin، ثم سجل الدخول بحساب مسؤول NexCMP الخاص بك واختر الأذونات على شاشة الموافقة. التفاصيل: موصلات OAuth.
ChatGPT (developer mode)
لا حاجة لمفتاح. في ChatGPT قم بتشغيل وضع المطور، وأضف موصل MCP مع عنوان URL https://cloud.example.com/mcp/admin، واختر OAuth وسجل الدخول بحساب مسؤول NexCMP الخاص بك. التفاصيل: موصلات OAuth.
Codex CLI
Add to ~/.codex/config.toml:
toml
[mcp_servers.nexcmp]
url = "https://cloud.example.com/mcp/admin"
bearer_token_env_var = "NEXCMP_KEY"ثم قم بتصدير المفتاح في الصدفة (shell) التي تبدأ تشغيل Codex:
bash
export NEXCMP_KEY=ak_XXXX
codex
codex mcp list # shows nexcmp with "Bearer token" authNon-interactive codex exec
في codex exec (البرامج النصية، وCI) لا يسأل Codex قبل استدعاء الأدوات، ويتخطى الأدوات التي تغير البيانات. أضف default_tools_approval_mode = "approve" تحت [mcp_servers.nexcmp] للسماح له باستدعائها؛ لا تزال لوحة التحكم تُعيد معاينة وتطلب التأكيد لعمليات الأموال والأمان والحذف. تم التحقق من ذلك باستخدام Codex CLI 0.166 بتاريخ 30/10/2026.
Gemini CLI
Add to ~/.gemini/settings.json:
json
{
"mcpServers": {
"nexcmp": {
"httpUrl": "https://cloud.example.com/mcp/admin",
"headers": { "Authorization": "Bearer ak_XXXX" }
}
}
}يقوم Gemini CLI بإيقاف تشغيل خوادم MCP في المجلدات التي لا يثق بها. ابدأ تشغيله في مجلد تثق به (أو ثق بالمجلد عندما يطلب ذلك)، ثم تحقق باستخدام gemini mcp list — فهو يعرض nexcmp … Connected. يمكنك إبقاء المفتاح خارج الملف باستخدام "Authorization": "Bearer $NEXCMP_KEY". تم التحقق باستخدام Gemini CLI 0.66 بتاريخ 30/10/2026.
Cursor
Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
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 مع الأدوات التي تسمح بها نطاقاتك.
اطلب من عميلك "run system_health". فهو يُعيد التنبيهات، وحالة البنية التحتية المتصلة، والمدفوعات، والبريد الإلكتروني، والذكاء الاصطناعي، وحالة الترخيص.
افتح API & AI agents › Activity: يتم سرد الاستدعاءات مع اسم العميل و
mcp.على الخادم، يطبع
sudo nexcmp statusسطر "MCP admin" الذي يوضحreadyعندما تستجيب نقطة النهاية (HTTP 401 بدون مفتاح هو الحالة السليمة).
الأدوات
يوفر الخادم 58 أداة. لا يرى العميل سوى الأدوات التي تسمح بها نطاقات مفتاحه: تحتاج أدوات القراءة إلى admin:read، وتحتاج أدوات الكتابة إلى نطاقها الخاص. تحصل أدوات الكتابة أيضاً على وسيطة اختياريّة confirm_token (راجع Confirmation). يتم التحقق من الوسيطات مقابل مخطط كل أداة: تُرفض الوسيطات غير المعروفة أو التي بها خطأ إملائي مع رسالة تذكر أسماءها.
الأسعار بالدولار الأمريكي: أسعار الخطط بالدولار في الساعة (hourly_usd)، والأرصدة بالسنتات. يمكن تعيين الأسرار ولكن لا يتم إرجاعها مطلقاً.
Overview and logs
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
system_health | التنبيهات التي تحتاج إلى اهتمام، وحالة البنية التحتية، والمدفوعات، والبريد الإلكتروني، والذكاء الاصطناعي، والترخيص، وحالة التحديث. | admin:read | No | No |
setup_checklist | ما تم تكوينه وما تبقى: الترخيص، البنية التحتية، المنطقة، قوالب نظام التشغيل، الخطط، المدفوعات، البريد الإلكتروني، العلامة التجارية، الجوانب القانونية، الطلب التجريبي. | admin:read | No | No |
license_status | حالة الترخيص وما إذا كان هناك إصدار أحدث من NexCMP متوفر. | admin:read | No | No |
audit_search | البحث في سجل التدقيق الخاص بالمشرف وسجل مفاتيح API. | admin:read | No | No |
الإعدادات، العلامة التجارية، النواحي القانونية، والوحدات النمطية
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
settings_get | قراءة الإعدادات العامة (keys عوامل التصفح؛ اللاحقة * تطابق بادئة). | admin:read | No | No |
settings_update | تغيير الإعدادات العامة من كائن values مسطح. يتم قبول المفاتيح المذكورة بواسطة settings_get فقط. | settings:write | نعم | عندما يمس مفتاح المدفوعات، أمان تسجيل الدخول، مفاتيح التحكم على مستوى الموقع أو الأسعار |
branding_get | اسم العلامة التجارية، اللون، عملة العرض، اسم البائع، وشعارات الموقع ورمز المفضلة (Favicon). | admin:read | No | No |
branding_update | تعيين اسم العلامة التجارية (حتى 60 حرفاً)، اللون (#rrggbb)، عملة العرض (usd أو vnd) واسم البائع. | settings:write | نعم | No |
branding_logo_set | تحميل شعار فاتح أو داكن أو رمز مفضلة من رابط https أو base64 (بصيغة PNG أو JPEG أو WEBP أو ICO أو SVG، بحجم يصل إلى 512 كيلوبايت). | settings:write | نعم | No |
legal_get | شروط الخدمة وسياسة الخصوصية (باللغتين الإنجليزية والvietnamية) والإعدادات الافتراضية المحايدة. | admin:read | No | No |
legal_update | تعيين نص الشروط والخصوصية (markdown بسيط، بدون HTML، بحد أقصى 50 كيلوبايت لكل منهما). السلسلة الفارغة تعيد القيمة الافتراضية. | settings:write | نعم | No |
modules_get | الوحدات النمطية الاختيارية المفعّلة وتلك التي يمكن تبديلها. | admin:read | No | No |
module_set | تبديل وحدة نمطية اختيارية بين التشغيل والإيقاف (يجب أن يكون key واحداً من settable). | settings:write | نعم | No |
البريد الإلكتروني والتنبيهات
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
smtp_get | إعدادات البريد الإلكتروني الصادر (مع إخفاء كلمة المرور) وحالة قائمة الانتظار. | admin:read | No | No |
smtp_configure | تعيين خادم SMTP. يتطلب تغيير المضيف أو المنفذ أو الأمان إعادة إدخال كلمة المرور. | settings:write (+ secrets:write لكلمة المرور) | نعم | No |
smtp_test | إرسال بريد إلكتروني تجريبي حقيقي باستخدام الإعدادات المحفوظة. | settings:write | يرسل بريداً إلكترونياً | No |
telegram_get | قنوات إشعارات المشرفين (معرفات المحادثات؛ رموز البوت لا تُعاد أبداً). | admin:read | No | No |
telegram_configure | إضافة أو تحديث قناة تنبيهات Telegram (رمز البوت ومعرف المحادثة) وتبديل تنبيهات المشرفين بين التشغيل والإيقاف. | settings:write (+ secrets:write للرمز) | نعم | No |
telegram_test | إرسال رسالة تجريبية إلى قناة Telegram. | settings:write | يرسل رسالة | No |
المدفوعات والعملة
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
payments_get | حالة Stripe وPayPal والعملات المشفرة (USDT) والتحويل البنكي، بالإضافة إلى القنوات المفعّلة والرسوم. | admin:read | No | No |
payment_configure | تعيين بيانات اعتماد إحدى بوابات الدفع (stripe أو paypal أو crypto أو bank). | billing:write (+ secrets:write) | نعم | دائماً |
payment_test | التحقق من بيانات اعتماد بوابة الدفع المحفوظة لدى المزود. | billing:write | No | No |
currency_get | عملة العرض وسعر صرف USD إلى VND (تلقائي أو يدوي). | admin:read | No | No |
currency_set | تعيين عملة العرض و/أو سعر الصرف اليدوي (0 يعني تلقائي، وإلا من 15000 إلى 50000). | billing:write | نعم | عندما تغير سعر الصرف اليدوي |
البنية التحتية والمناطق
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
cloudstack_get | نقطة نهاية CloudStack المحفوظة ومعرفات المناطق والشبكات (مع إخفاء المفاتيح). | admin:read | No | No |
cloudstack_test | اختبار نقطة نهاية باستخدام مفتاح API وسر دون حفظ؛ يعرض قائمة المناطق. | infra:write (+ secrets:write، لأنك تمرر المفاتيح) | No | No |
cloudstack_connect | حفظ اتصال CloudStack. | infra:write (+ secrets:write) | نعم | دائماً |
proxmox_list | مجموعات Proxmox VE المضافة كمصادر، مع حالتها الصحية. | admin:read | No | No |
proxmox_add | إضافة مجموعة Proxmox VE باستخدام رمز API (user@realm!tokenid) وسره. | infra:write (+ secrets:write) | نعم | No |
proxmox_test | الاتصال بمجموعة عن طريق المعرف؛ أول عملية ناجحة تثبت شهادة TLS الخاصة بها. | infra:write | نعم | No |
proxmox_attach_zone | بيع مجموعة Proxmox في منطقة موجودة، اختيارياً مع عقدة كنطاق. | infra:write | نعم | No |
zones_list | المناطق (المواقع) التي يمكن للعملاء اختيارها. | admin:read | No | No |
zone_create | إنشاء منطقة. | infra:write | نعم | No |
الكتالوج والخطط
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
templates_list | قوالب نظام التشغيل التي يمكن للعملاء تثبيتها. | admin:read | No | No |
templates_sync | استيراد قوالب نظام التشغيل من CloudStack. | catalog:write | نعم | No |
template_update | تفعيل أو إخفاء قالب، أو إعادة تسميته، أو تعيين مستخدم تسجيل الدخول أو الترتيب. | catalog:write | نعم | No |
offerings_list | عروض خدمات CloudStack (وحدة المعالجة المركزية، والذاكرة، القرص الجذر) لبناء الخطط منها. | admin:read | No | No |
plans_list | خطط بسعر لكل ساعة وكل شهر، الحجم، والمنطقة، وعدد الخوادم التي تستخدمها. | admin:read | No | No |
plan_create | إنشاء خطة. السعر كـ hourly_usd. تحتاج خطط CloudStack إلى cs_offering_id؛ بينما تحتاج خطط Proxmox إلى backend_id. | catalog:write | نعم | No |
plan_update | إعادة تسمية، أو إظهار أو إخفاء، أو تفعيل أو تعطيل، أو إعادة تسعير خططة. تغييرات الحجم على خطة قيد الاستخدام تتطلب نسخة. | catalog:write | نعم | عند تغيير السعر |
plans_from_offerings | بناء جدول خطط بداية من العروض (أو أحجام Proxmox) باستخدام تكلفتك ونسبة هامش الربح. يعيد معاينة؛ اطلب مرة أخرى مع apply=true لإنشاء الخطط. | catalog:write | مع apply=true | دائم التشغيل عند التطبيق |
quota_defaults_get | حدود العملاء الافتراضية. | admin:read | No | No |
quota_defaults_set | تغيير إعدادات quota_*. | catalog:write | نعم | No |
coupons_list | دفعات أكواد الخصم والهدايا. | admin:read | No | No |
coupon_create | إنشاء دفعة من الأكواد: النوع money (القيمة الاسمية بالسنت الأمريكي) أو percent (من 1 إلى 100، مع خصم أقصى). | catalog:write | نعم | دائماً |
العملاء والشركاء
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
customers_search | البحث عن العملاء بالبريد الإلكتروني، أو الاسم، أو عنوان IP. | admin:read | No | No |
customer_get | حساب العميل، ورصيده، وخوادمه، وفواتيره الأخيرة. | admin:read | No | No |
customer_adjust_balance | إضافة رصيد (موجب) أو إزالته (سالب) بالسنت الأمريكي. السبب مطلوب. | billing:write | نعم | دائماً |
customer_block | حظر عميل، مع إيقاف خوادمه اختيارياً. السبب مطلوب. | customers:write | نعم | دائماً |
customer_unblock | إلغاء حظر عميل. | customers:write | نعم | No |
resellers_list | الشركاء مع المحفظة والحالة. | admin:read | No | No |
reseller_get | موقع الشريك، ومحفظته، ومستخدموه، وبوابات الدفع الخاصة به. | admin:read | No | No |
مزود الذكاء الاصطناعي
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
ai_provider_get | المزود المتوافق مع OpenAI المستخدم بواسطة AI Chat للعملاء و AI Agent (المفتاح مخفي). | admin:read | No | No |
ai_provider_set | تعيين المزود: عنوان URL الأساسي، النموذج، مفتاح API، النماذج البديلة، جهد الاستدلال، والتفعيل. | ai:write (+ secrets:write للمفتاح) | نعم | No |
ai_provider_test | طرح سؤال واحد على المزود المحفوظ للتحقق من عمله. | ai:write | No | No |
ملفات التكوين
| الأداة | الوظيفة | النطاق | Changes data | Asks you |
|---|---|---|---|---|
config_export | تصدير التكوين بتنسيق YAML (تصبح الأسرار مراجع secret://). | admin:read | No | No |
config_plan | مقارنة تكوين YAML مع اللوحة النشطة وسرد ما سيتم تغييره. | admin:read | No | No |
config_apply | تطبيق تكوين YAML قسمًا بقسم. يتبع كل تغيير قواعد النطاق والتأكيد العادية. | admin:read + نطاق كل تغيير | نعم | لكل تغيير |
راجع Configuration as code لمعرفة تنسيق الملف.
الموجهات
يوفر الخادم أيضاً ثلاثة موجهات جاهزة يمكن للعملاء عرضها كاختصارات:
| الموجه | الوسيط | ما يطلب من الذكاء الاصطناعي فعله |
|---|---|---|
initial-setup | لا يوجد | استدعاء setup_checklist، وشرح كل خطوة مفتوحة في جملة واحدة، وطلب المعلومات التي يحتاجها منك، وتنفيذ الخطوة باستخدام الأداة المطابقة، ومعاينة تغييرات الأموال أو الأمان، والإنهاء بـ system_health. |
add-proxmox | endpoint (اختياري، https://host:8006) | طلب رمز API، ثم proxmox_add، وproxmox_test، وأدوات المنطقة، وproxmox_attach_zone؛ ثم اقتراح الخطط باستخدام plans_from_offerings وانتظار موافقتك. |
launch-pricing | margin_pct (اختياري، الافتراضي 40) | اطلب تكلفك الشهرية لكل vCPU، ولكل غيغابايت من ذاكرة الوصول العشوائي (RAM)، ولكل غيغابايت من القرص، وأظهر جدول معاينة بالتكلفة، والسعر شهرياً، والسعر بالساعة، وأنشئ الخطط بعد موافقتك. |
التأكيد (confirm_token)
الإجراءات التي تنقل الأموال، أو تحذف البيانات، أو تغيّر بيانات اعتماد الدفع، أو أمان تسجيل الدخول تتطلب خطوتين:
- الاستدعاء الأول لا يغير شيئاً. تبدأ نتيجة الأداة بعبارة "CONFIRMATION REQUIRED" وتتضمن معاينة (ما سيتم استدعاؤه، ولماذا يعتبر حساساً، والقيم الجديدة والحالية) و
confirm_token. - يجب أن يعرض لك العميل المعاينة. وفقط بعد موافقتك، يقوم باستدعاء نفس الأداة مرة أخرى مع نفس الوسائط بالإضافة إلى
confirm_token. - الرمز صالح لمرة واحدة، ولذلك الطلب المحدد فقط، وتنتهي صلاحيته بعد 5 دقائق.
تخبر تعليمات الخادم الذكاء الاصطناعي بمعاملة نتائج الأدوات كبيانات وليس كتعليمات، وألا يكرر الاستدعاء أبداً باستخدام رمز لم تقم بالموافقة عليه. أنت خط الدفاع: اقرأ المعاينة.
لا تقم بالموافقة التلقائية
يمكن لبعض العملاء الموافقة على كل استدعاء للأداة تلقائياً. بالنسبة لأدوات الكتابة، حافظ على تفعيل الموافقة لكل استدعاء، أو استخدم مفتاحاً للقراءة فقط، حتى لا يتمكن خطأ من الذكاء الاصطناعي من الوصول إلى لوحتك دون ملاحظة.
How it works
| العنصر | التفاصيل |
|---|---|
| النقل | 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 ميجابايت؛ ويتم قطع نتيجة الأداة بعد حوالي 100 كيلوبايت. |
| المصدر | يتم رفض الطلب الذي يحمل رأس Origin من موقع آخر (origin_not_allowed). لا يرسل عملاء سطر الأوامر وتطبيقات سطح المكتب أي شيء. |
| نفس بوابة REST | يتم إعادة إرسال كل استدعاء للأداة عبر خط أنابيب الطلبات الخاص باللوحة باستخدام مفتاحك، بحيث يتم تطبيق النطاقات، ونطاقات IP، ومعدل الحدود، والتؤكيد، وسجل النشاط تماماً كما هو الحال في طلبات API المباشرة. |
الحدود والملاحظات
- الأداة التي لا يمكنك رؤيتها هي نطاق لم تقم بمنحه. أضف النطاق إلى مفتاح جديد.
- تعيين كلمة مرور أو مفتاح API من خلال عميل ذكاء اصطناعي يعني أن السر يمر عبر ذلك الذكاء الاصطناعي. إذا كنت تفضل ذلك، فاترك
secrets:writeمعطلاً وأدخل الأسرار بنفسك في لوحة المشرف، أو استخدم حقل Secret في AI Chat (انظر AI Chat in the admin) أو مراجعsecret://(انظر Configuration as code). - لا يتشارك العملاء الجلسات: تبدأ كل عملية اتصال بـ
initialize. - قم بإلغاء المفتاح في قسم API & AI agents لقطع الاتصال عن عميل الذكاء الاصطناعي فوراً.
استكشاف الأخطاء وإصلاحها
| العَرَض | السبب | الحل |
|---|---|---|
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 أثناء المكالمة | الأداة تحتاج إلى نطاق (scope) ثانٍ، على سبيل المثال secrets:write | أضف النطاق إلى مفتاح جديد. |
429 rate_limited | عدد مكالمات في الدقيقة أكبر مما يسمح به المفتاح | انتظر لمدة Retry-After أو ارفع الحد على مفتاح جديد. |
| claude.ai أو ChatGPT لا يمكنهما الاتصال | عنوان URL غير قابل للوصول من الإنترنت، أو أن وكيلًا (proxy) يحظر /mcp/admin أو /oauth-admin/ | تحقق من نظام الأسماء النطاقية (DNS) و TLS والوكيل العكسي (reverse proxy). |
لجميع رموز الأخطاء، راجع Admin API keys.