Skip to main content
comfyui-mcp خادم MCP قياسي عبر stdio، لذا يستطيع أي وكيل قادر على MCP قيادته — لا Claude Code فقط. تغطّي هذه الصفحة البيئات التي ندعمها من الدرجة الأولى (Hermes Agent وOpenClaw وCopilot CLI)، وما يحتاج نموذجك إلى إحضاره، ووضع الأدوات المضغوط الذي يجعل النماذج الصغيرة/المحلية قابلة للعمل.

متطلبات النموذج

كن صريحًا مع نفسك بشأن النموذج الذي تحضره. الحد الأدنى للمواصفات لتجربة كاملة هو نموذج بـ استدعاء أدوات + تفكير + رؤية: تتغيّر النماذج المستضافة التي تناسب المواصفات الكاملة شهريًا — راجع بطاقة نموذج مزوّدك للقدرات الثلاث بدل الوثوق بقائمة. اعتبارًا من منتصف 2026: Xiaomi MiMo-V2.5 (رؤية + أدوات + سياق طويل) يناسب المواصفات الكاملة بثمن رخيص؛ ونماذج فئة DeepSeek-V3.x / GLM / MiniMax لديها استدعاء أدوات + تفكير قويان لكن المتغيرات النصية فقط تفقد حلقة الرؤية؛ وتحتفظ النماذج المحلية الصغيرة (أدناه) عادة باستدعاء الأدوات وتسقط الباقي.

وضع الأدوات المضغوط

السطح الكامل 37 أداة بمخططات JSON غنية (نحو 200 كيلوبايت، تقريبًا 50 ألف رمز، لكل tools/list). تحقن معظم البيئات غير Claude كل مخطط مسجَّل مباشرة في سياق النموذج — مقبول للنماذج الطليعية، قاتل لنموذج محلي 4B. ووضع الأدوات المضغوط يسجّل بالضبط ثلاث أدوات وصفية ويبقي الكتالوج الحقيقي خلفها: حلقة النموذج: list_tools → اختر → describe_toolcall_tool. تدخل المخططات السياق أداة واحدة في كل مرة. والأدوات الوصفية متسامحة عمدًا مع غرائب النماذج الصغيرة: يجوز أن يكون args كائنًا أو سلسلة مرمَّزة بـ JSON، وتُقبل أسماء حقول شائعة (tool_name، arguments)، وتعود أخطاء التحقّق بالمخطط المتوقع حتى يستطيع النموذج تصحيح نفسه بدل الموت على خطأ بروتوكول مبهم. الوضع المضغوط اختياري — السطح المباشر هو الافتراضي، لذا يحتاج نموذج صغير إلى واحد من هذه (تتفوّق الراية على متغيّر البيئة):
يناسب الافتراضي بيئات النماذج الطليعية (Claude Code / Cursor / Claude Desktop)، التي يتعامل عملاؤها مع قوائم أدوات كبيرة جيدًا. وما يزال --full مقبولًا وهو الآن بلا أثر.

الاختيار التلقائي: حسب النموذج، لا المزوّد

في خلفيات النماذج المحلية في اللوحة (Ollama / LM Studio / llama.cpp / المتوافق مع OpenAI)، حين لم تختر وضعًا، يختار النموذج واحدًا:
  • نموذج يحمل معرّفه عدد معاملات عند 70B أو أعلى (llama3.3:70b، gpt-oss:120b، mixtral:8x22b) يحصل على السطح الكامل؛
  • أي شيء أصغر يبقى مضغوطًا؛
  • معرّف نموذج بلا عدد معاملات مقروء (moonshotai/kimi-k2.5) يُعامَل مجهولًا، لا صغيرًا، ويحصل على التراجع المضغوط الموثَّق.
«Ollama ⇒ مضغوط» سيكون خاطئًا في الاتجاهين — يتحمّل نموذج محلي 70B السطح الكامل وسيُعوَّق بلا داعٍ، وتريد بعض النماذج المستضافة الصغيرة الوضع المضغوط. لذا فالإشارة هي النموذج. اختيارك يتفوّق دائمًا، في الاتجاهين. يفرض COMFYUI_MCP_TOOL_MODE=full السطح الكامل على نموذج 4B؛ ويفرض COMFYUI_MCP_TOOL_MODE=compact الموجّه على نموذج 405B. ولا يملأ الاختيار التلقائي إلا الفجوة حيث لم يُختَر شيء. وعتبة 70B محافظة عمدًا: إنها الرقم الوحيد الذي أكّده أحد فعلًا عن هذا المحور، فلا يُرقَّى شيء على تخمين. يخفضها COMFYUI_MCP_FULL_SURFACE_MIN_PARAMS_B=30 إن أردت إيجاد أين سقف عتادك فعلًا. يتبع موجّه النظام الوضع. يقول الموجّه المضغوط للنموذج إن لديه ست أدوات ويوجّه ComfyUI عبر call_tool؛ وحين يُختار السطح الكامل يكون ذلك ببساطة غير صحيح، لذا يقول موجّه الوضع الكامل إن أدوات ComfyUI معلَنة مباشرة ويبقي وصف الموجّه لـ panel_* فقط. والاختيار التلقائي للكامل مع إنكار وجود الأدوات أسوأ من الافتراضي الذي استبدله. يُطبَع الوضع النشط وسببه على سطر جاهزية الخلفية، مثل Tool mode: compact — chosen for this MODEL: "qwen3:4b" is ~4B parameters, below the 70B full-surface threshold…، فلا يبقى الذراع خفيًا مجددًا.
يغطّي هذا الاختيار التلقائي مسار النماذج المحلية في اللوحة. ويبقى مسار HTTP لـ Codex / Gemini / Grok / Copilot مثبَّتًا على المضغوط لسبب مختلف — فميزانيات أدواتها تزاحم أدوات panel_* وإلا — وافتراضي خادم MCP المستقل دون تغيير.

إدخال الصوت

على خلفية ollama (/api/chat الأصلي)، يصل الصوت إلى النموذج فقط حيث يبلّغ النموذج فعلًا أنه يستطيع السماع. قبل الإرسال، تسأل الخلفية POST /api/show عن قدرات ذلك النموذج:
إن لم تكن للنموذج المختار قدرة audio، يُرفَض المرفق بصوت عالٍ — بقائمة القدرات التي بلّغ عنها الخادم وأمر سحب لنموذج يستطيع السماع — بدل إسقاطه في الطلب حيث يجيب النموذج من نصك وحده. وينطبق الأمر نفسه على ملف ليس بصيغة صوت، أو حاضر لكنه صفر بايت. تسليم البايتات ليس المهمة كلها تمامًا. قيس حيًّا ضد gemma4:e2b: مع وجود WAV بوضوح في السياق (555 رمز موجّه، و/api/show يبلّغ عن audio)، أجاب النموذج مع ذلك «ليست لدي القدرة على تفريغ الصوت — وظائفي محدودة بتشغيل ComfyUI». يصوّره موجّه نظام اللوحة كمشغّل مخطط ويستدل نموذج صغير نفسه خارج حسّ يملكه فعلًا. لذا يحمل دور صُودق على صوته وأُرفق أيضًا ملاحظة قصيرة تخبر النموذج أن الصوت هناك وأنه ينبغي أن يجيب مما يسمع. وبتلك الملاحظة فرّغ النموذج نفسه بشكل صحيح في أربع تشغيلات من أربع. على الخلفيات المتوافقة مع OpenAI (LM Studio وllama.cpp وOpenRouter والمخصّصة) لا توجد نقطة نهاية قدرة للسؤال. يُرسل الصوت كجزء محتوى input_audio ويحمل الدور سطرًا صريحًا «لا أستطيع تأكيد أن النموذج يستقبلها فعلًا». والرفض سيحرم الصوت عن كل نقطة نهاية ليس لديها واجهة قدرة فحسب؛ وحارس لا يستطيع العمل ليس حكمًا — لكنه أيضًا ليس تأكيدًا، والصياغة تقول ذلك. راجع الخلفيات ← إدخال الصوت لما يفعله كل مزوّد آخر.

إعداد بأمر واحد

يكتب comfyui-mcp setup <agent> مدخل الخادم في ملف إعدادات البيئة نفسها (دامجًا مع ما هو هناك أصلًا — الخوادم الموجودة، والتعليقات في YAML، كلها محفوظة):
الرايات: يتجاوز --compact / --full الافتراضي لكل وكيل، ويضمّن --comfyui-url <url> هدف ComfyUI لديك (محلي أو شبكة محلية أو رابط وكيل RunPod)، ويطبع --dry-run الإعداد المدمج بدل كتابته.

Hermes Agent

الذي ينتج هذا في ~/.hermes/config.yaml (أضِفه يدويًا إن فضّلت):
أعد التحميل بـ /reload-mcp (أو أعد تشغيل Hermes). ويسبق Hermes الأدوات، فيرى النموذج mcp_comfyui_list_tools وmcp_comfyui_describe_tool و mcp_comfyui_call_tool — ثلاثة تعريفات في السياق بدل مئتين.
على نموذج طليعي (عبر Nous Portal / OpenRouter) تستطيع إعادة تشغيل الإعداد مع --full واستخدام قائمة السماح tools.include الخاصة بـ Hermes اختياريًا. والمضغوط هو الافتراضي الصحيح لأي شيء أصغر.
يشحن Hermes أيضًا مهارة comfyui مضمَّنة تقود ComfyUI عبر REST خام من سكربتات Python. تعمل، لكنها أقدم من هذا الخادم — يحصل مسار MCP على تأليف/تحقّق مسارات سير العمل، وإدارة النماذج والعقد المخصّصة، وحزم التثبيت، والتحكّم في قائمة الانتظار، والتشخيص الذاتي. عطّل المهارة إن ظل الوكيل يمدّ يده إليها بدل أدوات MCP.

OpenClaw

الذي ينتج هذا في ~/.openclaw/openclaw.json:
أعد تشغيل بوابة OpenClaw لتلتقط الخادم. وتوصي وثائق OpenClaw بإبقاء عدد أدوات MCP منخفضًا — وهذا بالضبط ما وُجد الوضع المضغوط من أجله، ولماذا هو الافتراضي هنا.

Copilot CLI

الذي ينتج هذا في ~/.copilot/mcp-config.json:
يشغّل Copilot CLI نماذج طليعية، لذا يفترض الإعداد سطح الأدوات الكامل (مرّر --compact إن كنت توجّه Copilot إلى نموذج أصغر). تحقّق منه بـ /mcp show داخل copilot.

نماذجنا المحلية المضبوطة (مجانية، موصى بها)

إن أردت تشغيل الوكيل محليًا مجانًا، ابدأ من هنا. ضبطنا عائلة Gemma 4 خصيصًا لـ comfyui-mcp: درِّبت بـ QLoRA على 1,055 مسار استخدام أدوات متحقَّقًا من الخادم وُلِّدت ضد ComfyUI حيّ — تغطّي سطح الأدوات الكامل البالغ 178 (113 MCP + 65 أداة لوحة) — فيعرف النموذج مجموعة الأدوات هذه أصلًا بدل لقائها باردة.
مقيس، لا موعود — درجات حلبة النماذج اللغوية على سلّم السيناريوهات العشرة الحقيقي (أفضل من 3، كل نتيجة متحقَّق منها مقابل خادم ComfyUI حيّ، RTX 4090): كل درجة تتفوّق الآن على أساسها الأصلي. أعاد تدريب :e2b v2 (تدريب بمنظرين: استدعاءات أدوات مباشرة و غلاف الموجّه المنشور) إصلاح تراجع تنسيق call_tool في v1 — صفر أغلفة مشوَّهة عبر تشغيلات الحكم. وتقف إرشادات الحجم: :e4b هي النقطة المثلى (نحو 1.5 غيغابايت فقط أكثر من e2b و+4 على الحلبة)؛ و:e2b صار اختيارًا شرعيًا لذاكرة VRAM الضيقة؛ ويشتري :12b ثباتًا على المهام الطويلة متعدّدة الخطوات، لا درجة خامًا. تفترض خلفية Ollama في اللوحة :e4b — اختر Ollama (محلي) في أداة اختيار الخلفية ويعمل فور سحب النموذج. بلا حساب، بلا مفتاح API، بلا تكلفة لكل رمز. نافذة السياق: تشحن الوسوم نافذة 65,536 رمزًا مخبوزة، ويذعن المنسّق لها (تحصل النماذج الأصلية على 16 ألفًا). وتدعم المعمارية حتى 128 ألفًا (:e2b/:e4b) و256 ألفًا (:12b) — ارفعها بـ COMFYUI_MCP_OLLAMA_NUM_CTX=131072 إن كانت لديك ذاكرة VRAM (تنمو ذاكرة KV مع النافذة). إن بدأ الوكيل «ينسى» أثناء المحادثة، راقب سجل المنسّق: يحذّر حين يملأ دور ≥85% من النافذة. الأوزان ومحوّلات LoRA وأنبوب التدريب مفتوحة: artokun/gemma4-comfyui-mcp (مجموعة البيانات: artokun/comfyui-mcp-trajectories).

LM Studio

تتحدث اللوحة LM Studio أصليًا: اختر LM Studio في أداة اختيار الخلفية ويقود المنسّق خادمه المحلي (http://127.0.0.1:1234/v1، تجاوز بـ COMFYUI_MCP_LMSTUDIO_HOST). الإعداد نقرتان: ثبّت من lmstudio.ai، ثم Developer ← Start Server مع نموذج يدعم استدعاء الأدوات محمَّل. وتعكس أداة اختيار النموذج ما يقدّمه الخادم؛ وبلا افتراضي مضبوط، يُعتمَد أول نموذج يُخدم تلقائيًا. ويدير المنسّق دورة الحياة الكاملة بلا يد: يبدأ الخادم تلقائيًا عند الحاجة، ويحمّل نموذجك عند الطلب، ويحرّر ذاكرة VRAM الخاصة به أثناء معالجة ComfyUI (تُحبَس المحادثة ويُجاب عنها عند انتهاء المعالجة)، ويفرغ النموذج المغادر عند تبديل نموذج، ويحرّر كل شيء حين تنتقل إلى مزوّد مختلف. تعمل ملفات GGUF المضبوطة لدينا هنا أيضًا — ابحث عن artokun/gemma4-comfyui-mcp في منزّل نماذج LM Studio وخذ model-q4_k_m.gguf. توقّع وقفة التحميل البارد عند الطلب نفسها التي لدى Ollama في الرسالة الأولى (30 ثانية+ أمر طبيعي).

llama.cpp (llama-server)

تشغّل llama.cpp خامًا؟ اختر llama.cpp في أداة اختيار الخلفية — يقود المنسّق نقطة نهاية llama-server المتوافقة مع OpenAI (http://127.0.0.1:8080/v1، تجاوز بـ COMFYUI_MCP_LLAMACPP_HOST):
ملاحظات من الميدان: السياق راية إطلاق (-c) — يحذّر الوكيل إن عمل الخادم تحت 16 ألفًا (تحتاجها حمولة الأدوات). واستدعاء الأدوات مفعَّل افتراضيًا في البناءات الحالية؛ تحتاج البناءات الأقدم إلى --jinja (تكتشف اللوحة خادمًا عاجزًا عن الأدوات عند الاتصال وتقول ذلك بالضبط). ويُعتمَد النموذج المحمَّل الواحد تلقائيًا — بلا حاجة إلى اختيار. على جهاز بوحدة GPU واحدة ينضم llama-server محلي (أو llama-swap أمامه) إلى تسليم ذاكرة VRAM نفسه الذي لدى Ollama وLM Studio: أثناء معالجة ComfyUI، تُحبَس محادثتك ويُجاب عنها لحظة انتهاء المعالجة. ولأن llama-server لا واجهة تفريغ لديه (ويبدّل llama-swap النماذج أعلى الطلب)، فالتسليم حبس فقط — لا شيء يُفرَّغ أو يُدفَّأ صراحة. وCOMFYUI_MCP_LLAMACPP_HOST بعيد وحدة GPU لشخص آخر ولا يُبوَّب أبدًا. والتسليم مفعَّل افتراضيًا للخلفيات المحلية الثلاث؛ انسحب بـ COMFYUI_MCP_PAUSE_LOCAL_ON_GEN=0 (ما يزال COMFYUI_MCP_OLLAMA_PAUSE_ON_GEN=0 القديم محترمًا).

نقطة النهاية المخصّصة (أي خادم متوافق مع OpenAI)

أي شيء يتحدّث /v1/chat/completions — vLLM أو DeepSeek أو Together أو Azure OpenAI أو llama-server على جهاز آخر أو بوابة شركتك — يُوصَل كمزوّد نقطة النهاية المخصّصة:
  1. إعدادات ComfyUI ← Comfy MCP Agent ← نقطة النهاية المخصّصة ← اضبط الرابط الأساسي لنقطة النهاية (ضمِّن /v1، مثل http://192.168.1.20:8000/v1).
  2. إن كان الخادم يحتاج مفتاحًا: تعيين مفتاح API… — إدخال مخفي؛ يُخزَّن المفتاح 0600 لدى المنسّق في ~/.comfyui-mcp، لا في إعدادات ComfyUI ولا في المحادثة.
  3. اختر نقطة النهاية المخصّصة في أداة اختيار الخلفية واتصل.
تأتي قائمة النماذج من /v1/models لدى الخادم؛ وتُعتمَد خوادم النموذج الواحد تلقائيًا، أو اضبط معرّف نموذج افتراضي صراحة لنقاط النهاية التي لا تسرد نماذج. مخارج البيئة: COMFYUI_MCP_CUSTOM_BASE_URL، COMFYUI_MCP_CUSTOM_MODEL، COMFYUI_MCP_CUSTOM_API_KEY. ويجب أن يدعم النموذج استدعاء الأدوات.

Ollama والنماذج المحلية — حلبة النماذج اللغوية

أي بيئة MCP تتحدّث إلى Ollama (أو نقطة نهاية متوافقة مع OpenAI) تستطيع قيادة الوضع المضغوط بنموذج محلي. وتعيش بيئتان قابلتان للتكرار في المستودع: npm run test:local-llm (فحص سريع لنموذج واحد) و node scripts/llm-arena.mjsحلبة النماذج اللغوية لـ ComfyUI، التي تشغّل حقل نماذج عبر مجموعة مهام متطابقة ضد ComfyUI حيّ وتتحقّق من كل نتيجة مقابل الخادم، لا ادّعاءات النموذج. درجات الفئة المحلية على سلّم السيناريوهات العشرة الكامل (RTX 4090، ComfyUI 0.27، درجة حرارة 0 — راجع صفحة الحلبة لسلّم المهام ولوحة المتصدّرين لكل الفئات بما فيها الطليعة والمستضافة): الخلاصات: تتجاوز فئة qwen3/gemma4 مهام الأداة الواحدة بثبات (الصحة، والنماذج المثبَّتة، والبحث في السجل، وقائمة الانتظار) وتلتقط نقاطًا على النطاقات الأصعب، لكن تركيب المخطط متعدّد المراحل (مخطط واحد بمخرجين متسلسلين، وأنبوب img2img على مرحلتين متدرّج) ما يزال إقليم الطليعة/فئة B. وتنهار انضباطية تنسيق أدوات llama3.1:8b على هذا الكتالوج (يخترع أسماء أدوات ويطبع JSON استدعاء الأدوات كنص). وشحنت Gemma 4 استدعاء دوال أصليًا عبر العائلة (Ollama ≥ v0.20)؛ وe4b أو أكبر هي النقطة المثلى. تذكّر سلّم القدرات أعلاه: تحتفظ هذه النماذج الصغيرة باستدعاء الأدوات لكن لديها رؤية وتفكير محدودان/معدومان، فتقدر على التوليد وإدارة مسارات سير العمل لكنها لا تستطيع نقد النتائج بصريًا.

اللوحة الجانبية على نموذج محلي

يكتسب وكيل اللوحة خلفية Ollama إلى جانب Claude / ChatGPT / Gemini: اختر Ollama (محلي) في أداة اختيار الخلفية ويقود المنسّق مخططك الحيّ بنموذج محلي — بلا حساب، بلا مفتاح API، دون اتصال بالكامل. يرى النموذج موجّه الأدوات الستة (الأدوات الوصفية الثلاث المضغوطة لـ comfyui إضافةً إلى panel_list_tools / panel_describe_tool / panel_call_tool للوحة الرسم الحيّة)، فلا يغرق حتى نموذج 4B في المخططات. النموذج الافتراضي: artokun/gemma4-comfyui-mcp:e4bضبط gemma4 لدينا، مدرَّب على مجموعة الأدوات هذه بالضبط (يحل محل gemma4:e4b الأصلي، أفضل الحلبة السابق)؛ تجاوز بـ COMFYUI_MCP_OLLAMA_MODEL أو أداة اختيار النموذج في اللوحة، التي تسرد ما سحبته محليًا. توقّع مقايضات صادقة مقابل خلفيات الطليعة: أدوار أبطأ (خاصة الأولى، أثناء تحميل النموذج)، بلا رؤية، بلا استرجاع محادثة.

ما الذي تحصل عليه (وما الذي لا تحصل عليه)

يحصل أي عميل MCP على سطح الأدوات الكامل — التوليد، وتأليف مسارات سير العمل، والنماذج، والعقد المخصّصة، وقائمة الانتظار، والتشخيص — في أي وضع أدوات. أمّا إضافات إضافة Claude Code (المهارات، والأوامر المختصرة، والخطافات، وحزم التثبيت، ووكيل اللوحة الجانبية) فميزات إضافة ولا تنتقل إلى بيئات أخرى. وكُتالوج list_tools مصمَّم ليحمل توجيهًا كافيًا حتى تستطيع الوكلاء بلا طبقة المعرفة تلك إيجاد طريقها مع ذلك.

حل المشكلات

  • يستدعي النموذج call_tool بـ args مرمَّز كسلسلة — مدعوم؛ يحلّل الخادم السلاسل المرمَّزة بـ JSON تلقائيًا.
  • يخترع النموذج أسماء أدوات — تُرجع الأسماء المجهولة اقتراحات أقرب تطابقًا إضافةً إلى مؤشر عائد إلى list_tools.
  • معاملات خاطئة/ناقصة — يتضمّن الخطأ مخطط JSON الخاص بالأداة؛ وتصحّح النماذج القادرة نفسها في المحاولة التالية.
  • يجيب النموذج من الكتالوج دون تشغيل أي شيء — نمط فشل معروف للنماذج الصغيرة؛ نبّهه («مدخلات الكتالوج أسماء أدوات، لا بيانات — شغّل الأداة بـ call_tool»).
  • ComfyUI غير قابل للوصول — يغيّر الوضع المضغوط تسجيل الأدوات فقط؛ وإعداد الاتصال مطابق لكل إعداد آخر (راجع الإعدادات).