MCP — الواجهة البرمجية

إلى جانب REST، يوفر GetMyBot واجهة MCP (Model Context Protocol) — مصمّمة لوكلاء الذكاء الاصطناعي والمساعدين الذين يستدعون الأدوات بدلاً من استدعاء نقاط النهاية يدوياً. يبقى REST الواجهة الأساسية؛ وMCP بديل مريح لسيناريوهات الوكلاء. أسماء الأدوات والموارد والموجّهات أدناه تطابق ما ينشره الخادم.

العنوان والمصادقة

MCP متاح عند نقطة النهاية /mcp (وسيط Streamable HTTP، الطريقة POST). المصادقة — الرمز الشخصي ذاته المستخدم في REST: ترويسة Authorization: Bearer mbp_…. لا داعي لإنشاء رموز منفصلة — رمز PAT واحد يعمل لكلٍّ من REST وMCP. كل أداة تتطلب نطاق الصلاحيات ذاته المقابل لنقطة النهاية REST؛ الرمز بنطاق * يمنح وصولاً كاملاً. عند نقص الصلاحيات يُرفض الاستدعاء (fail-closed) كما في REST.

التوصيل بـClaude Code / Cursor

أضف GetMyBot كخادم MCP بعيد. مثال الإعداد (mcpServers) — استبدل نطاقك ورمزك:

{
  "mcpServers": {
    "mybot": {
      "url": "https://your-domain/mcp",
      "headers": {
        "Authorization": "Bearer mbp_YOUR_TOKEN"
      }
    }
  }
}

Claude Code: ضع هذه الكتلة في .mcp.json المشروع أو أضف الخادم بالأمر claude mcp add. Cursor: أضف الكتلة ذاتها في إعدادات MCP (Settings → MCP → Add server). بعد التوصيل يتلقى العميل قائمة الأدوات والموارد والموجّهات تلقائياً.

الأدوات حسب النطاق

ينشر الخادم 100 أداة — تغطية كاملة لـREST المتاح عبر PAT. فيما يلي الأداة ونطاق الصلاحيات المطلوب. الأسماء بصيغة فعل_اسم (snake_case).

البوتات (bots)

  • list_botsbots:read
  • get_botbots:read
  • validate_bot_tokenbots:write
  • connect_botbots:write
  • update_botbots:write
  • delete_botbots:write
  • sync_botbots:write
  • change_bot_tokenbots:write
  • transfer_botbots:write
  • get_bot_settingssettings:read
  • update_bot_settingssettings:write

القنوات وقوالب WhatsApp (bots)

تعدد القنوات (Telegram + WhatsApp + VK) متاح عبر MCP أيضاً. القنوات والقوالب محكومة بـالنطاقات المشتركة bots:read / bots:write — لا يوجد نطاق منفصل للقنوات.

  • list_channelsbots:read — سرد قنوات البوت (المنصة tg/wa/vk، وexternal_id، والاسم، وenabled، وcallback_url).
  • connect_channelbots:write — توصيل قناة WhatsApp أو VK (platform + بيانات الاعتماد).
  • delete_channelbots:write — فصل قناة.
  • list_wa_templatesbots:read — كتالوج قوالب WhatsApp للقناة (الاسم، واللغة، والحالة، والفئة، والجسم).
  • sync_wa_templatesbots:write — إعادة مزامنة كتالوج القوالب من Meta.
  • create_wa_templatebots:write — إنشاء قالب WhatsApp وإرساله إلى Meta للمراجعة.
  • update_wa_templatebots:write — تعديل قالب (في حالة APPROVED/REJECTED/PAUSED).
  • delete_wa_templatebots:write — حذف قالب.

تُوصَّل قنوات Telegram عبر connect_bot وليس connect_channel — إذ يتعامل الأخير مع wa وvk فقط. فئات القوالب: MARKETING / UTILITY / AUTHENTICATION. يرسل create_wa_template المسودة فوراً إلى Meta للمراجعة؛ تتغير الحالة بشكل غير متزامن — اقرأها عبر list_wa_templates (مع تحديث الكتالوج بـsync_wa_templates عند الحاجة).

رفع رأس وسائط للقالب (صورة/فيديو/مستند) عبر MCP غير مدعوم بعد — استخدم واجهة الويب أو REST عبر POST /api/bots/{botID}/channels/{channelID}/templates/media.

التفاعلات (reactions)

  • list_reactionsreactions:read
  • get_reactionreactions:read
  • create_reactionreactions:write
  • update_reactionreactions:write
  • delete_reactionreactions:write
  • import_reactionsreactions:write
  • test_formulareactions:write
  • reorder_reactionreactions:write
  • get_reaction_linksreactions:read
  • list_reaction_foldersreactions:read
  • create_reaction_folderreactions:write
  • update_reaction_folderreactions:write
  • delete_reaction_folderreactions:write
  • add_reaction_to_folderreactions:write
  • remove_reaction_from_folderreactions:write
  • add_reactions_to_folderreactions:write

الاستيراد عبر import_reactions يُنشئ التفاعلات لكنه يتجاوز الوسائط: في سياق MCP لا يوجد تحقق premium ولا مستقبل Telegram للملفات. إذا احتوت حزمة sambot على صور/فيديوهات/مستندات — استخدم استيراد REST الكامل (POST /api/bots/{botID}/reactions/import) الذي ينقل الوسائط أيضاً.

البث الجماعي (broadcasts)

  • start_broadcastbroadcasts:write (اختياري paid، اختياري تقسيم بالتسميات)
  • get_broadcastbroadcasts:write
  • pause_broadcastbroadcasts:write
  • resume_broadcastbroadcasts:write
  • cancel_broadcastbroadcasts:write

التسميات (labels)

  • list_labelslabels:read
  • create_labellabels:write
  • delete_labellabels:write
  • set_label_favoritelabels:write

المجموعات والسجلات (collections)

  • list_collectionscollections:read
  • create_collectioncollections:write
  • update_collectioncollections:write
  • delete_collectioncollections:write
  • list_recordscollections:read
  • create_recordcollections:write
  • update_recordcollections:write
  • delete_recordcollections:write

السيناريوهات (flows)

  • list_flowsflows:read
  • get_flowflows:read
  • create_flowflows:write
  • update_flowflows:write
  • delete_flowflows:write

التكاملات والاتصالات والاعتمادات (integrations)

  • list_integrationsintegrations:read
  • get_integration_sheetsintegrations:read
  • get_integration_statusintegrations:read
  • create_integrationintegrations:write
  • update_integrationintegrations:write
  • delete_integrationintegrations:write
  • rotate_integration_tokenintegrations:write
  • list_connectionsintegrations:read
  • create_connectionintegrations:write
  • test_connectionintegrations:write
  • update_connectionintegrations:write
  • delete_connectionintegrations:write
  • list_credentialsintegrations:read
  • create_credentialintegrations:write
  • update_credentialintegrations:write
  • delete_credentialintegrations:write

الوسائط (media)

  • upload_mediamedia:write
  • get_mediamedia:write

القوالب (templates)

  • list_templatestemplates:read
  • delete_templatetemplates:write
  • create_template_from_bottemplates:write
  • apply_templatetemplates:write

المشتركون والمحادثات والحوارات — قراءة (subscribers)

  • list_subscriberssubscribers:read (تصفح offset/limit، تصفية بالتسميات)
  • list_chatssubscribers:read
  • list_dialogssubscribers:read
  • read_dialogsubscribers:read
  • send_dialog_messagesubscribers:write
  • send_dialog_reactionsubscribers:write
  • transcribe_dialog_messagesubscribers:write

الإحصائيات والتحليلات (stats)

  • get_statsstats:read
  • get_stats_summarystats:read
  • get_stats_recentstats:read
  • get_stats_logstats:read
  • get_reaction_healthstats:read
  • get_analyticsstats:read
  • get_analytics_chatsstats:read
  • get_funnelstats:read

الفوترة — قراءة (billing)

  • get_balancebilling:read
  • list_tariffsbilling:read
  • get_transactionsbilling:read

إرسال الرسائل

  • send_messagebroadcasts:write — إرسال رسالة باسم البوت؛ يُحتسب استهلاك الرصيد تلقائياً من مالك الرمز.

الموارد

إلى جانب الأدوات، يُعيد الخادم موارد يمكن قراءتها لفهم البنية دون تخمين:

  • mybot://openapi.yaml — مواصفة OpenAPI الكاملة (نفس ما يُعاد على /openapi.yaml).
  • mybot://reference — مرجع مختصر: قائمة الأدوات بنطاقاتها والاصطلاحات (العنوان الأساسي، التصفح، تنسيق الأخطاء، الحدود).
  • mybot://schemas/reaction وmybot://schemas/trigger وmybot://schemas/action وmybot://schemas/flow وmybot://schemas/collection — مخططات JSON للإعدادات. الأكثر قيمةً للتوليد الصحيح للتفاعلات (المُشغّل والشروط والمحادثات والإجراءات) والسيناريوهات والمجموعات.
  • mybot://bots — قائمة ديناميكية ببوتاتك (سياق سريع دون استدعاء أداة).

الموجّهات

سيناريوهات جاهزة (أوامر slash في عميل MCP):

  • setup_autoresponder — بناء بوت ردود تلقائية (المعاملات: البوت والموضوع/مجموعة الأسئلة).
  • segment_broadcast — إرسال جماعي لشريحة تسميات (المعاملات: البوت والتسميات والتفاعل/النص).
  • diagnose_reaction — تشخيص سبب عدم تشغيل تفاعل (يقرأ التفاعل وصحة التفاعل والترتيب).
  • import_from_sambot — إجراء استيراد حزمة sambot والتحقق من النتيجة.
  • weekly_report — ملخص إحصائيات/تحليلات البوت خلال فترة.

متى تختار MCP ومتى تختار REST

  • إذا كنت تكتب تكاملاً أو مزامنة أو سكريبتاً أو لوحة تحكم خاصة — استخدم REST.
  • إذا كنت توصّل GetMyBot بمساعد ذكاء اصطناعي أو وكيل يدعم MCP — استخدم /mcp.

كلتا الواجهتين تعملان برمز واحد وتخضعان لصلاحيات المالك ذاتها. إذا لم تجد أداة لمهمتك — نقطة النهاية REST المقابلة موجودة دائماً في المرجع التفاعلي.

الخطوات التالية