العودة إلى المدونة
BananaBanana Teamtutorialmcpapi

Grok MCP: صور وفيديو عبر واجهة xAI

كيف تربط خادم MCP بعيدًا بـ Grok عبر واجهة xAI أو موصّل مخصص في grok.com ليولّد الصور والفيديو والصوت. إعدادات حقيقية وأسعار تبدأ من $0.03.

Grok MCP: صور وفيديو عبر واجهة xAI

أدوات MCP البعيدة في Grok ميزة تعمل على جانب الخادم في واجهة xAI: تذكر عنوان خادم MCP داخل مصفوفة tools في الطلب، ثم يتولى وقت التشغيل الخاص بـ xAI فتح الاتصال وقراءة قائمة الأدوات واستدعاءها بينما يكتب Grok إجابته. لا شيء يعمل على جهازك. هذا هو الفرق كله عن Cursor أو Claude Code، حيث يسكن عميل MCP في المحرر أمامك ويكون جهازك هو من يتحدث عبر الشبكة.

الجواب المختصر: أضف كائنًا واحدًا إلى tools{"type": "mcp", "server_url": "https://bananabanana.pro/api/mcp", "server_label": "bananabanana", "authorization": "Bearer bb_live_…"} — فيحصل Grok على عشر أدوات توليد: الصور بعائلة Nano Banana، والفيديو بـ Veo 3.1 و Gemini Omni Flash، والصوت بـ Gemini TTS. الصور تبدأ من $0.03 والفيديو من $0.10، وفي الحساب الجديد رصيد $0.20 للتجربة. وفي grok.com يوضع العنوان نفسه في Connectors ← New Connector ← Custom، وإن كان شق تسجيل الدخول أقل وضوحًا (له قسم مستقل أدناه).

رسم تحريري: فقاعة حوار تمدّ فرشاة نحو خزانة خوادم بعيدة

كل ما يُقال هنا عن طرفنا من السلك جرى قياسه بطلبات حقيقية في الأول من سبتمبر 2026. وكل ما يخص طرف xAI مأخوذ من توثيقهم كما كان يُقرأ في اليوم نفسه، وأقتبسه حرفيًا بدل إعادة صياغته، لأن هذا الجزء من واجهتهم يتغيّر.

واجهتان وخادم واحد

سؤال «هل يدعم Grok بروتوكول MCP؟» هو في الحقيقة سؤالان، ولكل منهما جواب مختلف.

الواجهةما يوثّقه xAIأين يعمل عميل MCP
واجهة xAIأدوات MCP البعيدة تعمل في "the xAI native SDK, the OpenAI compatible Responses API, and the Speech to Speech API"على خوادم xAI
grok.comConnectors ← New Connector ← Custom: "Enter the MCP server URL and complete any required authentication"على خوادم xAI
Grok داخل بيئة تطويرغير مذكور في أي من الصفحتينغير معروف

قيدان في الصفحة نفسها يستحقان قراءة ثانية. أولًا وسائط النقل: "Only Streaming HTTP and SSE transports are supported". وثانيًا، المسار المتوافق مع OpenAI يفقد معاملين، require_approval وconnector_id، أي أن طلب شاشة تأكيد من xAI قبل استدعاء مدفوع غير متاح هناك. إما أن تبنيها بنفسك، وإما أن تنتقي الأدوات بعناية.

نقطة النهاية عندنا هي Streamable HTTP بلا حالة، وهي تحديدًا وسيلة النقل التي تتجاوز هذا الشرط. لا ترويسة جلسة يجب إبقاؤها حيّة، ولا تدفق SSE يجب مراقبته: استجابة JSON واحدة لكل طلب JSON-RPC.

توصيل BananaBanana بواجهة xAI

أصغر صورة عاملة، عبر cURL مباشرة إلى Responses API:

curl https://api.x.ai/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -d '{
    "model": "grok-4.6",
    "input": [
      { "role": "user",
        "content": "Generate a 16:9 product photo of a ceramic cup on linen, soft morning light. Use nano-banana-pro, then give me the URL." }
    ],
    "tools": [
      {
        "type": "mcp",
        "server_url": "https://bananabanana.pro/api/mcp",
        "server_label": "bananabanana",
        "server_description": "Image, video and speech generation on Google models",
        "authorization": "Bearer bb_live_your_key_here",
        "allowed_tools": ["list_models", "generate_image", "get_result"]
      }
    ]
  }'

الشيء نفسه في حزمة Python الخاصة بـ xAI، حيث يتغيّر اسم معاملين:

from xai_sdk import Client
from xai_sdk.chat import user
from xai_sdk.tools import mcp
 
client = Client(api_key=os.environ["XAI_API_KEY"])
 
chat = client.chat.create(
    model="grok-4.6",
    tools=[
        mcp(
            server_url="https://bananabanana.pro/api/mcp",
            server_label="bananabanana",
            authorization=os.environ["BB_KEY"],          # extra_headers=… also works
            allowed_tool_names=["list_models", "generate_image", "get_result"],
        )
    ],
)
chat.append(user("Make me a 16:9 hero image of a ceramic cup on linen."))

يُنشأ مفتاح bb_live_… من ملفك الشخصي، قسم API Keys، ويظهر مرة واحدة فقط.

تفصيلان يكلّفان كل منهما أمسية كاملة.

بادئة Bearer. يصف xAI الحقل authorization بأنه "a token that will be set in the Authorization header on requests to the MCP server"، وهو ما يترك السؤال مفتوحًا: هل يغلّفون القيمة بـ Bearer نيابة عنك؟ خادمنا لا يخمّن. أرسل الرمز عاريًا وستصلك شكوى محددة:

{"error":{"code":-32001,"message":"Unsupported Authorization scheme. Use 'Authorization: Bearer <token>'."}}

لذا اكتب المخطط بنفسك: "authorization": "Bearer bb_live_…". وإن حدث يومًا أن غُلّف مرتين من طرف xAI، فاستخدم الصيغة التي لا لبس فيها واضبط الترويسة مباشرة عبر headers: {"Authorization": "Bearer bb_live_…"}.

allowed_tools اختياري على الورق فقط. توثيق xAI صريح: من دونه تدخل كل تعريفات الأدوات إلى سياق النموذج، "if an MCP server exposes 10 different tools and you don't specify allowed_tools, all 10 tool definitions will be available". نحن نعرض عشر أدوات بالضبط، ونصفها ينفق مالًا. لروبوت صور كنت سأسمح بـ list_models وgenerate_image وget_result فقط، ثم أوسّع القائمة حين يصبح الفيديو حاجة فعلية.

رسم تحريري: بطاقة مثقوبة تنزلق في فتحة خادم وإلى جانبها مفاتيح معلّقة

ماذا يرى Grok حين يطرق الباب

هذه هي مصافحتنا، منفّذة فعليًا لأجل هذه المقالة. اكتشاف الأدوات لا يحتاج أي بيانات اعتماد:

curl -s -X POST https://bananabanana.pro/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
list_models, get_account, top_up, generate_image, edit_image,
generate_video, edit_video, generate_speech, get_result, list_generations

أما كل ما يقوم بعمل حقيقي فيردّ 401 إلى أن تقدّم رمزًا، وتحمل الاستجابة المؤشر الذي يحتاجه العميل المنضبط:

HTTP/2 401
www-authenticate: Bearer realm="bananabanana",
  error_description="Authentication required. Connect this server with OAuth,
  or create an API key at https://bananabanana.pro/profile",
  resource_metadata="https://bananabanana.pro/.well-known/oauth-protected-resource/api/mcp",
  scope="mcp"

العنوان في resource_metadata يعيد مستند protected resource metadata من مواصفة التفويض في MCP، وبه تعثر العملاء الداعمة لـ OAuth على خادم التفويض عندنا بنفسها. عبر مسار واجهة xAI لن تصادف هذا الرد أبدًا، لأن مفتاحك يسافر مع كل استدعاء. لكنه يهم في قصة الموصّل أدناه.

رسم تحريري: بواب يتفحص قسيمة ورقية أمام خزانة أدوات مفتوحة

ملاحظة توافق أخرى، لأنها تلدغ من يكتب عميله بنفسه: نحن لا نشترط ترويسة Accept: application/json, text/event-stream ونردّ بـ JSON عادي. الخوادم التي تصرّ على صيغة Accept ذات النكهة SSE هي التي تفشل بغموض خلف البوابات.

عرض السعر ثم المهمة ثم الاستطلاع: المسار الذي يربك الوكلاء

توليد صورة يعني استدعاءً واحدًا وانتظارًا. الفيديو ليس كذلك، وهنا تتعطّل حلقة الوكيل المكتوبة على منطق «استدعِ الأداة واقرأ الجواب».

طلبات الفيديو والصور المتعددة تعود بعرض سعر لا بمهمة. على النموذج أن يستدعي الأداة مرة ثانية مع confirm_cost مضبوطًا على الرقم نفسه بدقة السنت قبل أن يُخصم أي مبلغ. إنه مطبّ متعمّد: لا ينبغي أن يتمكن وكيل من إنفاق $4.40 على مقطع Veo بدقة 4K لأن أحدهم كتب «اجعله أكثر سينمائية».

بعد ذلك يجري التوليد بشكل غير متزامن. يعيد generate_image وgenerate_video قيمة job_id فورًا، ويقوم get_result باستطلاع طويل حتى 30 ثانية لكل استدعاء، وتكرّر النداء حتى تستقر الحالة. تصل الصور عادة خلال 10 إلى 60 ثانية. أما الفيديو فيستغرق من دقيقة إلى عشر دقائق حسب النموذج والمدة.

النتيجة العملية بالنسبة إلى Responses API: قد تحتاج دورة واحدة من المستخدم إلى أربعة أو خمسة استدعاءات أدوات على الخادم، وإذا حدّد تكاملك عدد الخطوات باثنتين فسيعلن Grok عن job_id ثم يتوقف، كنادلٍ أخذ الطلب وعاد إلى بيته. اترك له مجالًا. ومرّر idempotency_key في استدعاءات التوليد كي لا تتحول إعادة المحاولة إلى خصم ثانٍ.

الإخفاقات تعيد المال من تلقاء نفسها. إذا رفض مرشّح المحتوى لدى Google الطلب أو مات الاستدعاء عند المزوّد، يعود الرصيد تلقائيًا ويوضّح get_result أي مرحلة رفضت. لن تدفع أبدًا مقابل فيديو لم تستلمه.

رسم تحريري: قسيمة ورقية تُستبدل بصورة جاهزة فوق طاولة خدمة

وهل يستطيع grok.com ذلك أيضًا؟

جزئيًا، وفي الجواب الصادق ثغرة.

يوثّق xAI المسار بوضوح: ادخل grok.com/connectors، اضغط New Connector، اختر Custom، ثم "Enter the MCP server URL and complete any required authentication". ويجب أن يكون الخادم متاحًا من الإنترنت العام، وخادمنا كذلك بداهةً. أما الموصّلات المدمجة، بحسب الصفحة نفسها، فتستوثق عبر OAuth.

رسم تحريري: قابس يُمدّ نحو مقبس مختبئ نصفه خلف ستارة

ما لا تقوله الصفحة هو أي طرق استيثاق يقبلها الموصّل المخصص. جملة واحدة، "complete any required authentication"، هي المواصفة كلها، وآخر تحديث للصفحة كان في 17 يوليو 2026.

أما موقفنا فهو التالي. نشغّل خادم تفويض OAuth 2.1 كاملًا: تسجيل عملاء ديناميكي، وPKCE بخوارزمية S256، وprotected resource metadata، وresource indicators، أي مواصفة التفويض في MCP بتمامها. أي عميل يتبع تلك المواصفة يتصل بنا دون سطر عمل واحد من جانبنا، وهكذا يعمل موصّلا Claude و ChatGPT تمامًا. فإن سلك موصّل Grok المخصص المسار نفسه، فسيعمل مباشرة وسترى صفحة تسجيل دخول عادية باسم حسابك.

وإن اكتفى بتخزين عنوان دون إرسال أي بيانات اعتماد، فسترى الأدوات العشر كلها في قائمة الموصّل بينما يعود كل استدعاء بالرمز 401. اكتشاف الأدوات عندنا مجهول الهوية، لذا قد يبدو الموصّل سليمًا وهو عاجز عن توليد أي شيء.

كنت أودّ لو أستطيع الجزم أكثر هنا. إن كنت قد جرّبت، فالنتيجة تستحق رسالة إلى [email protected]، وجدول التوافق في صفحة MCP لدينا يُحدَّث في اليوم نفسه.

كم تبلغ التكلفة

الأسعار لكل عملية توليد، تُخصم من رصيد مدفوع مسبقًا، وبلا اشتراك.

ماذاالنموذجالسعر
صورة، 1KNano Banana 2 Lite$0.03
صورة، 512–4KNano Banana 2$0.03–$0.13
صورة، 1K–4KNano Banana Pro$0.11–$0.20
فيديو، 4 ثوانٍ 720p بلا صوتVeo 3.1 Lite$0.10
فيديو، ابتداءً منVeo 3.1 Fast$0.35
فيديو، ابتداءً منVeo 3.1$0.70
فيديو بصوت، للثانيةGemini Omni Flash$0.10 ($0.30 للحد الأدنى 3 ثوانٍ)
صوتGemini 3.1 Flash TTS$0.01 لكل 200 حرف

صورة منتج لكوب سيراميك مطفأ اللمعة على كتان مجعّد في ضوء نافذة هادئ، وُلّدت بواسطة Nano Banana Pro

هذا الكوب هو تحديدًا نص الطلب في مثال cURL أعلاه، مُنفَّذًا فعليًا أثناء كتابة المقالة: Nano Banana Pro بدقة 2K، خُصم $0.11، واكتمل بعد 32 ثانية من استدعاء الأداة.

يبدأ الحساب الجديد برصيد $0.20، أي ست صور بنموذج Lite أو مقطع قصير واحد بـ Veo Lite. يكفي للتأكد من صحة التوصيلات ولا يكفي للحكم على النماذج الجيدة، وأفضّل قول ذلك صراحة.

للشحن مكافأة حجم: 5% ابتداءً من $50، و10% ابتداءً من $100. ويضيف رمز ترويجي فعّال 10% أخرى من قيمة الإيداع، محسوبة من الأساس نفسه، فتُقيَّد $100 مع الرمز بواقع $120. الأرقام السارية موجودة دائمًا في قسم الأسعار.

Grok يولّد الصور أصلًا، فلماذا الالتفاف؟

سؤال منصف، وقائمة نماذج xAI نفسها تجيب نصفه: لديهم grok-imagine-image-2.0 وgrok-imagine-video-1.5. إن أردت صورة سريعة داخل المحادثة فاستخدمها؛ لا أحد يحتاج خادم MCP لذلك.

رسم تحريري: بابان، أحدهما يفتح على كاميرا فورية والآخر على ورشة سينما بعيدة

أسباب إخراج التوليد إلينا أضيق، ومعظمها يتعلق بأي النماذج تستخدم وكيف تُقرأ الفاتورة:

  • نماذج جوجل بعينها. Nano Banana Pro للنص داخل الصورة وتصوير المنتجات، وVeo 3.1 للفيديو بصوت أصلي، وOmni Flash حين تريد صوتًا وتعديلًا حواريًا على المقطع نفسه.
  • سعر قبل الخصم. يعيد list_models أسعار الوحدة لحظيًا، والفيديو يعرض السعر قبل الإنفاق. يمكن إعطاء الوكيل سقفًا للميزانية والالتزام به فعلًا.
  • رصيد واحد لكل العملاء. المفتاح نفسه يعمل من Grok ومن Gemini CLI ومن Codex ومن استوديو الويب، وكل النتائج تسقط في سجل واحد.
  • استرداد المال عند الإخفاق، وهو أهم مما يبدو ما دام هناك مرشّح محتوى في المسار.

التكلفة الصادقة لهذا الطريق: قفزة شبكة إضافية وحلقة استطلاع، وفيديو يحتاج خطوة تأكيد، وسقف 720p في Omni Flash، ومخططات أدوات يخزّنها العملاء عند الاتصال، أي أن أي معامل جديد لدينا يستوجب إعادة الاتصال قبل أن يتمكن Grok من تمريره. لا شيء من ذلك قاتل. وكل ذلك حقيقي.

FAQ

هل يدعم Grok خوادم MCP؟

نعم، من جهة الواجهة البرمجية. تعمل Remote MCP Tools لدى xAI في الحزمة الأصلية وفي Responses API المتوافقة مع OpenAI وفي Speech to Speech API، مع server_url وserver_label إلزاميين وauthorization وheaders وallowed_tools اختيارية. أما في grok.com فالموصّلات المخصصة موجودة في Connectors ← New Connector ← Custom.

هل أحتاج OAuth أم يكفي مفتاح API؟

لواجهة xAI يكفي مفتاح bb_live_… وهو أبسط: مرّره في authorization مع بادئة Bearer. أما OAuth فيهم العملاء من نوع الموصّلات التي تسجّل دخول المستخدم بنفسها. وخادمنا يدعم الطريقتين على نقطة النهاية نفسها.

أي نموذج من Grok أختار؟

تستخدم أمثلة MCP لدى xAI النموذج grok-4.6، وهو توصيتهم الافتراضية حاليًا. أي نموذج يدعم أدوات جانب الخادم يفي بالغرض؛ عقد الأدوات نفسه لا يتغيّر بتغيّر النموذج.

هل يمكن توليد فيديو بصوت عبر هذا الطريق؟

نعم، عبر Veo 3.1 مع الصوت أو عبر Gemini Omni Flash الذي ينتج صوتًا دائمًا. توقّع خطوة التأكيد المزدوجة واستطلاعًا يمتد دقيقة أو أكثر. وينتهي Omni عند 720p، فهو ليس الخيار لمقطع رئيسي بملء الشاشة.

ماذا يحدث حين يفشل التوليد؟

يُلغى الخصم تلقائيًا ويعيد get_result سبب الرفض من جهة المزوّد مع خطوة تالية مقترحة. ويستحق رفض مرشّح المحتوى محاولة ثانية بصياغة مختلفة: قد يمرّ الطلب نفسه في المرة الثانية، لأن المرشّح يحكم على البكسلات المنتَجة لا على الطلب وحده.

tutorialmcpapi