أدلة الذكاء الاصطناعي · 11 دقيقة للقراءة

Tool Calling vs MCP: الفرق ومتى تستخدم كلًا منهما

يتيح Tool Calling للنموذج طلب الدوال، بينما يوحّد MCP اكتشاف الأدوات ومشاركتها. تعرّف على الفرق بينهما وكيف يعملان معًا ومتى تستخدم كلًا منهما.

رسم لنواة ذكاء اصطناعي تسلّم طلبًا مختومًا إلى صندوق أدوات واحد على اليسار، وتتصل على اليمين بمركز توصيل عام مرتبط بأدوات كثيرة

Tool Calling هي ميزة في واجهات برمجة نماذج اللغة يطلب فيها النموذج استدعاء دالة وينفذ تطبيقك الشيفرة. أما Model Context Protocol (MCP) فهو معيار JSON-RPC مفتوح يتيح لتطبيقات الذكاء الاصطناعي اكتشاف الأدوات التي تعرضها الخوادم الخارجية واستدعاءها. يعتمد MCP على Tool Calling في الأساس بدلًا من أن يحل محله.

يصادف مطورو وكلاء الذكاء الاصطناعي أو الأنظمة الخلفية المدعومة بنماذج اللغة الكبيرة كلا المصطلحين كثيرًا في وثائق المورّدين. ولفهم Tool Calling مقابل MCP، يجب التمييز بين طريقة اتخاذ النموذج قرار تنفيذ دالة وطريقة اتصال التطبيق بالنظام الذي توجد فيه تلك الدالة.

ما المقصود بـ Tool Calling في واجهات نماذج اللغة الكبيرة؟

Tool Calling، ويُسمى أيضًا استدعاء الدوال (function calling)، هو ميزة في واجهة النموذج تحوّل طلبًا باللغة الطبيعية إلى استدعاء دالة منظّم. تمرّر تعريفات الدوال في طلب واجهة البرمجة باستخدام اسم ووصف ومعاملات JSON Schema، ويقرر النموذج ما إذا كان سيعيد استدعاءً منظّمًا يحتوي على اسم الدالة ووسائطها.

لا ينفذ النموذج الدالة بنفسه، بل يعمل Tool Calling كمحادثة متعددة الخطوات بين تطبيقك والنموذج:

  1. إرسال تعريفات الأدوات: يرسل تطبيقك طلبًا إلى النموذج ويتضمن تعريفات JSON Schema للأدوات التي يمكن للنموذج استدعاؤها.
  2. تلقي استدعاء أداة منظّم: يرد النموذج باستدعاء يحتوي على اسم الدالة المختارة ووسائط JSON، فعلى سبيل المثال تعيد Anthropic سبب توقف وكتلة tool_use.
  3. تنفيذ الشيفرة في جانب التطبيق: يتحقق النظام الخلفي من الوسائط وينفذ الدالة المحلية أو طلب واجهة البرمجة الداخلية.
  4. إعادة نتيجة الأداة: يرسل التطبيق طلبًا ثانيًا إلى النموذج يتضمن النتيجة، مثل كتلة tool_result.
  5. تلقي الإجابة النهائية: يستخدم النموذج النتيجة للإجابة عن المستخدم أو يطلب استدعاءات أدوات إضافية.

يستخدم تعريف الدالة في OpenAI المعامل parameters من JSON Schema ويدعم strict: true لفرض الالتزام بالمخطط:

{
  "type": "function",
  "name": "get_weather",
  "description": "Get the current weather for a given location.",
  "strict": true,
  "parameters": {
    "type": "object",
    "properties": {
      "location": {
        "type": "string"
      }
    },
    "required": ["location"],
    "additionalProperties": false
  }
}

تمنحك واجهات النماذج الرئيسية تحكمًا دقيقًا في طريقة اختيار النموذج للدوال. في واجهات OpenAI وGoogle Gemini، يتيح لك tool_choice ترك الاختيار على auto، وهو الإعداد الافتراضي، أو فرض استدعاء واحد أو أكثر (required في OpenAI وany في Gemini)، أو تعطيل الأدوات (none)، أو تقييد النموذج بمجموعة فرعية باستخدام allowed_tools، أو استخدام وضع validated في Gemini لضمان الالتزام بمخطط الدالة. تدعم OpenAI وGemini استدعاء الدوال بالتوازي، بحيث يستطيع النموذج استدعاء عدة دوال في جولة واحدة. وتتيح OpenAI ضبط parallel_tool_calls على false عندما تريد استدعاءً واحدًا كحد أقصى في كل جولة. كما يدعم Gemini الاستدعاء التركيبي للتنفيذ المتسلسل متعدد الخطوات.

تقسم Anthropic استخدام الأدوات بحسب مكان تنفيذ الشيفرة. تعمل أدوات العميل، ومنها دوالك المخصصة والأدوات وفق مخطط Anthropic مثل bash وtext_editor، داخل تطبيقك. أما أدوات الخادم، مثل web_search وweb_fetch وcode_execution وtool_search، فتُنفذ مباشرة على بنية Anthropic التحتية.

ما هو Model Context Protocol (MCP)؟

Model Context Protocol (MCP) معيار مفتوح المصدر لربط تطبيقات الذكاء الاصطناعي بالأنظمة الخارجية عبر JSON-RPC 2.0. وتعمل مواصفات MCP، الإصدار 2026-07-28، المستوحاة من Language Server Protocol، مثل منفذ USB-C لتطبيقات الذكاء الاصطناعي، بحيث يمكن لتكامل خادم واحد العمل مع ChatGPT وClaude وVisual Studio Code وCursor والوكلاء المخصصين.

يفصل MCP المسؤوليات بين ثلاثة أدوار:

  • المضيفون (Hosts): تطبيقات نماذج اللغة الكبيرة، مثل بيئة التطوير أو واجهة المحادثة، التي تبدأ الاتصالات.
  • العملاء (Clients): موصلات البروتوكول التي تعمل داخل التطبيق المضيف.
  • الخوادم (Servers): الخدمات الخارجية التي تتيح للعميل القدرات والسياق.

في مواصفات 2026-07-28، يستخدم البروتوكول الأساسي طلبات JSON-RPC 2.0 مستقلة وعديمة الحالة، مع التفاوض على القدرات لكل طلب. يحدد MCP وسيلتي نقل قياسيتين: stdio، التي تمرر رسائل تفصل بينها أسطر جديدة عبر الإدخال والإخراج القياسيين لعملية فرعية يبدأها العميل، وStreamable HTTP، حيث تكون كل رسالة طلب HTTP POST إلى نقطة نهاية MCP واحدة. ويمكن للمطورين أيضًا تنفيذ وسائل نقل مخصصة.

في حين يتعامل Tool Calling لنماذج اللغة الكبيرة مع الدوال فقط، يمكن لخوادم MCP تقديم ثلاث ميزات أساسية:

  • Tools: دوال ينفذها نموذج الذكاء الاصطناعي.
  • Resources: سياق وبيانات يمكن للتطبيق قراءتها.
  • Prompts: رسائل نموذجية وسير عمل للمستخدمين.

في جانب العميل، يدعم MCP ميزة Elicitation التي تتيح للخادم بدء طلب معلومات إضافية من المستخدم. وتتضمن مواصفات 2026-07-28 أيضًا امتدادات اختيارية يجري التفاوض عليها لـ Tasks، وهي عمليات غير متزامنة طويلة الأمد، وSkills over MCP وMCP Apps، وهي عناصر واجهة تفاعلية تُعرض ضمن المحتوى.

لتنفيذ الأدوات، يكتشف عميل MCP الأدوات المتاحة باستدعاء tools/list الذي يدعم تقسيم النتائج إلى صفحات والتخزين المؤقت. ويمكن للخوادم التي تعلن قدرة listChanged إخطار العملاء كلما تغيرت أدواتها المتاحة. يتضمن تعريف كل أداة MCP الاسم name الحساس لحالة الأحرف، ويُوصى بأن يتراوح بين 1 و128 حرفًا، وtitle اختياريًا، وdescription، وicons اختيارية، وinputSchema الذي يستخدم JSON Schema 2020-12 افتراضيًا، وoutputSchema اختياريًا، وتعليقات توضيحية اختيارية.

عندما يقرر النموذج استخدام أداة MCP، يرسل العميل طلب JSON-RPC باسم tools/call إلى الخادم:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {
      "location": "San Francisco, CA"
    }
  }
}

إذا فشل تنفيذ أداة على الخادم، يعيد MCP الخطأ داخل النتيجة مع isError: true، حتى يتمكن نموذج اللغة من قراءة الفشل وتصحيح نفسه.

Tool Calling مقابل MCP: مقارنة جنبًا إلى جنب

تُظهر المقارنة المباشرة بين Tool Calling لنماذج اللغة الكبيرة وMCP أن كليهما يعمل في طبقة مختلفة من البنية. اعتبارًا من نوفمبر 2026، تختلف آلية Tool Calling الأصلية وModel Context Protocol في سبعة جوانب معمارية:

الجانب Tool Calling (Function Calling) Model Context Protocol (MCP)
ما هو ميزة في واجهة النموذج يُخرج فيها نموذج اللغة وسائط دالة منظّمة بروتوكول JSON-RPC 2.0 مفتوح يربط مضيفي الذكاء الاصطناعي وعملاءه بالخوادم الخارجية
من يحدد الأدوات شيفرة تطبيقك، أو أدوات خادم المورّد، في طلب واجهة النموذج خادم MCP يعرض Tools وResources وPrompts
مكان تنفيذ الشيفرة النظام الخلفي لتطبيقك، أو سحابة مورّد نموذج اللغة لأدوات الخادم عملية فرعية محلية (stdio) أو خدمة بعيدة (Streamable HTTP)
الاكتشاف ثابت لكل طلب واجهة؛ تحدد الشيفرة المخططات مسبقًا أو تختارها قبل استدعاء النموذج ديناميكي أثناء التشغيل عبر tools/list وإشعارات listChanged
النقل واجهة HTTPS للمورّد (OpenAI وAnthropic وGoogle Gemini) stdio أو Streamable HTTP أو وسائل نقل مخصصة
قابلية النقل بين العملاء مرتبطة بتطبيقك وتنسيق مخطط مورّد نموذج اللغة المحدد قابلة للنقل بين أي مضيف متوافق مع MCP، مثل Claude وChatGPT وVS Code وCursor والتطبيقات المخصصة
التكلفة رموز إدخال لتعريفات الأدوات، ورموز إخراج للاستدعاءات، ورسوم إضافية لأدوات خادم المورّد رموز إدخال لكل مخطط أداة محمّل، إضافة إلى البنية التحتية لاستضافة خادم MCP أو تشغيله

هل يحل MCP محل استدعاء الدوال؟

لا يحل MCP محل استدعاء الدوال، لأن نموذج اللغة لا يزال يستخدم Tool Calling لاختيار كل أداة MCP واستدعائها. يمثل Tool Calling وMCP طبقتين متكاملتين في دورة حياة الطلب نفسها.

عندما يتصل تطبيق ذكاء اصطناعي بخادم MCP، يجمع سير العمل بين النظامين:

  1. الاكتشاف عبر MCP: يرسل عميل MCP في التطبيق المضيف طلب tools/list إلى خادم MCP ويتلقى أسماء أدوات الخادم وأوصافها وكائنات inputSchema وفق JSON Schema.
  2. التنسيق لنموذج اللغة: يحوّل المضيف تعريفات أدوات MCP إلى مصفوفة tools الأصلية لدى مورّد النموذج ويرسلها مع طلب المستخدم.
  3. الاختيار عبر Tool Calling: يقيّم نموذج اللغة الطلب ويُصدر استدعاء أداة قياسيًا يتضمن اسم الأداة المختارة ووسائطها.
  4. التنفيذ عبر MCP: يلتقط المضيف استدعاء النموذج ويربطه بطلب MCP من نوع tools/call ويرسله إلى خادم MCP عبر stdio أو Streamable HTTP.
  5. الإكمال: يعيد خادم MCP النتيجة، مع isError: true إذا فشل التنفيذ، ويمرر المضيف هذه النتيجة إلى النموذج كنتيجة أداة، ثم يُنشئ النموذج إجابته النهائية.

من دون Tool Calling داخل واجهة النموذج، لن تتوفر لنموذج اللغة آلية لتشغيل أداة MCP. ومن دون MCP، يتعين على التطبيق ربط كل مخطط أداة ومعالج تنفيذ يدويًا.

كيف تدعم OpenAI وAnthropic وGoogle بروتوكول MCP مباشرة؟

تتيح OpenAI وAnthropic وGoogle الآن تمرير خوادم MCP البعيدة مباشرة إلى واجهات نماذجها بوصفها نوع أدوات مدمجًا. بدلًا من كتابة حلقة عميل MCP خاصة بك للربط بين tools/list وtools/call، تتصل واجهة مورّد النموذج بخادم MCP نيابة عنك.

اعتبارًا من نوفمبر 2026، ينفذ كل مورّد اتصالات مباشرة بخوادم MCP مع قدرات محددة وحدود موثقة:

OpenAI Responses API

في OpenAI Responses API، يمكنك إرفاق خادم MCP بتحديد "type": "mcp" في مصفوفة الأدوات مع server_label وserver_url. توفر OpenAI عنصري تحكم أساسيين للنشر في بيئة الإنتاج:

  • allowed_tools: يستورد مجموعة فرعية محددة فقط من أدوات خادم MCP حتى لا يتجاوز سياق النموذج طاقته.
  • require_approval: يحدد ما إذا كانت استدعاءات الأدوات تُنفذ تلقائيًا أو تتوقف انتظارًا لموافقة بشرية صريحة.

بالنسبة إلى الخدمات المحلية أو الخاصة، توفر OpenAI خدمة Secure MCP Tunnel لربط خوادم MCP الداخلية دون كشفها على الإنترنت العام.

Anthropic MCP Connector

تقدم Anthropic موصل MCP connector تجريبيًا في Messages API باستخدام mcp_servers وmcp_toolset، ويتصل بخوادم MCP البعيدة دون الحاجة إلى تنفيذ عميل منفصل. ضع في الحسبان أربعة قيود موثقة:

  • الأدوات فقط: يدعم الموصل استدعاءات الأدوات فقط من مواصفات MCP، وليس Resources أو Prompts الخاصة به.
  • وجوب إتاحة HTTP للعامة: يجب إتاحة خادم MCP للعامة عبر HTTP، مع دعم Streamable HTTP وSSE.
  • لا اتصال مباشر بـ stdio المحلي: لا يمكن لخوادم stdio المحلية الاتصال مباشرة بـ Messages API، لكن حزم تطوير Anthropic توفر أدوات مساعدة من جانب العميل للخوادم المحلية.
  • استثناءات الامتثال: لا يتأهل MCP connector التجريبي لأحمال عمل Zero Data Retention (ZDR) أو HIPAA.

Google Gemini Interactions API

تقبل Gemini Interactions API من Google خوادم MCP الخارجية باستخدام التصريح "type": "mcp_server"، مع ضبط name وurl وheaders وallowed_tools. تفرض Google قاعدتين صارمتين على هذا التكامل:

  • Streamable HTTP فقط: تدعم Gemini Interactions API خوادم Streamable HTTP ولا تدعم وسائل نقل SSE.
  • صياغة الأسماء: يجب أن تستخدم أسماء الخوادم snake_case وألا تحتوي على شرطات وصل.

متى تستخدم Tool Calling أو MCP؟

يتوقف اختيار وقت استخدام MCP أو Tool Calling على من يتولى صيانة التكاملات وعدد التطبيقات التي تحتاج إلى مشاركتها. انظر إلى قيود مشروعك عبر ثلاثة أنماط شائعة.

متى يكفي Tool Calling البسيط؟

استخدم Tool Calling الأصلي لنموذج اللغة عندما تكون أدواتك داخل نظام خلفي لتطبيق واحد ولا يحتاج أي عميل خارجي إلى استدعائها. إذا كنت أبني تطبيق ويب يتضمن خمسة استعلامات داخلية لقاعدة البيانات وإجراء دفع عبر Stripe، فإن كتابة خادم MCP تضيف قفزة شبكة أو عملية فرعية غير ضرورية.

يكون Tool Calling البسيط أنسب عندما:

  • لا تملك سوى عدد قليل من الدوال التي تستعلم عن قاعدة بياناتك أو خدماتك المصغرة الداخلية.
  • تتحكم في قاعدة الشيفرة بأكملها وتريد زمن استجابة منخفضًا وتحققًا مباشرًا داخل العملية.
  • لا يحتاج أي مساعد ذكاء اصطناعي آخر أو بيئة تطوير أو فريق آخر إلى اكتشاف تلك الدوال أو إعادة استخدامها.

متى يكون خادم MCP مجديًا؟

أنشئ خادم MCP أو اعتمده عندما تحتاج الأدوات نفسها إلى العمل عبر عدة عملاء للذكاء الاصطناعي أو عندما يكون فريق آخر مسؤولًا عن النظام الأساسي. إذا كانت منصة الهندسة لديك تعرض تتبع المشكلات وسجلات النشر عبر MCP، فيمكن للمطورين إرفاق الخادم نفسه تمامًا بـ Claude وChatGPT وVisual Studio Code وCursor ووكيلك الداخلي دون إعادة كتابة المخططات.

يكون MCP مجديًا عندما:

  • تريد كتابة التكامل مرة واحدة ونقله بين عدة مضيفين للذكاء الاصطناعي وبيئات تطوير.
  • يتولى مورّد خارجي أو فريق داخلي آخر صيانة التكامل.
  • يعتمد وكيلك على الاكتشاف الديناميكي للأدوات (tools/list وlistChanged) مع تغير القدرات أثناء التشغيل.
  • يحتاج سير عملك إلى Resources الخاصة بـ MCP أو قوالب طلبات للمستخدمين أو طلب معلومات منهم إلى جانب تنفيذ الدوال.

الإعداد الهجين

من الأنماط الشائعة للفرق التي تنقل وكلاء الذكاء الاصطناعي من التجربة إلى الإنتاج الجمع بين النهجين. يحدد التطبيق النموذجي عددًا قليلًا من أدوات الدوال الأصلية الحساسة لزمن الاستجابة في الشيفرة، مع إرفاق خادم MCP خارجي واحد أو اثنين لتكاملات البرمجيات كخدمة من أطراف أخرى، واستخدام allowed_tools لاستبعاد نقاط النهاية غير الضرورية.

المفاضلة بين الأمان وزمن الاستجابة وتكلفة الرموز

تؤدي إضافة أدوات إلى تطبيق يعتمد على نموذج لغة كبير، سواء عبر التعريفات الأصلية أو خوادم MCP، إلى تكاليف رموز واعتبارات للتخزين المؤقت وحدود أمنية يجب إدارتها بعناية.

تكاليف رموز الإدخال والتخزين المؤقت للطلبات

يُحتسب كل تعريف أداة تمرره إلى واجهة النموذج ضمن رموز الإدخال. توضح Anthropic أن تعريفات الأدوات في المعامل tools تُحتسب كرموز إدخال، وتشير OpenAI إلى أن بعض خوادم MCP تعرض عشرات الأدوات دفعة واحدة، وأن عرض أدوات كثيرة قد يزيد التكلفة وزمن الاستجابة معًا.

للحفاظ على إمكانية توقع تكاليف الرموز:

  • صفِّ الأدوات المستوردة: تستخدم OpenAI وGoogle المعامل allowed_tools، بينما يتيح MCP connector من Anthropic السماح بالأدوات الفردية أو حظرها أو ضبطها في mcp_toolset.
  • حافظ على ترتيب حتمي لقائمة الأدوات. تذكر مواصفات MCP أن الترتيب الحتمي في tools/list يساعد العملاء على تخزين قائمة الأدوات مؤقتًا ويحسن معدل نجاح التخزين المؤقت للطلبات لنموذج اللغة عندما توضع تعريفات الأدوات في سياقه.

حدود الثقة والموافقة البشرية

تعني الأدوات إمكانية تنفيذ شيفرة اعتباطية، وهو مصدر قلق يزداد إذا نشرت أيضًا وكلاء ذكاء اصطناعي يستخدمون الحاسوب ويتفاعلون مع أنظمة تشغيل كاملة. عند الاتصال بخادم MCP تابع لطرف آخر، تعبر حدًا للثقة يمكن فيه أن تكون أوصاف الأدوات أو ردود الخادم غير الموثوقة وسيلةً لـ حقن الطلبات.

تحذر مواصفات MCP صراحة من ضرورة التعامل مع تعليقات الأدوات على أنها غير موثوقة ما لم تأتِ من خادم موثوق. ولأن MCP لا يستطيع فرض الأمان على مستوى بروتوكول الاتصال، تنص المواصفات على أن التطبيقات المضيفة يجب أن تحصل على موافقة صريحة من المستخدم قبل استدعاء أي أداة، وينبغي أن تُبقي دائمًا شخصًا مشاركًا وقادرًا على رفض الاستدعاءات. عند استخدام تكاملات API المباشرة مثل Responses API من OpenAI، فعّل require_approval للأدوات الحساسة حتى يتمكن شخص من مراجعة الوسائط قبل التنفيذ.

الأسئلة الشائعة

هل MCP هو نفسه استدعاء الدوال؟

لا. استدعاء الدوال (Tool Calling) هو آلية في واجهة النموذج يُصدر فيها نموذج اللغة طلب JSON منظّمًا لتنفيذ دالة محددة بالاسم. أما Model Context Protocol (MCP) فهو معيار اتصال مفتوح يتيح لتطبيقات الذكاء الاصطناعي اكتشاف Tools وResources وPrompts المستضافة على خوادم خارجية واستدعاءها.

هل يمكن استخدام MCP دون Tool Calling؟

يمكنك استخدام Resources وقوالب الطلبات في MCP دون Tool Calling من النموذج، لأن التطبيق المضيف أو المستخدم يقرأ هذه الميزات أو يشغّلها. لكن كلما استدعى نموذج ذكاء اصطناعي أداة MCP ذاتيًا عبر tools/call، فإنه يستخدم قدرته الأصلية على Tool Calling لاختيار الأداة.

هل يستهلك MCP رموزًا أكثر من Tool Calling الأصلي؟

يكلّف تعريف الأداة الواحد العدد نفسه من رموز الإدخال سواء حمّله التطبيق من شيفرة محلية أو من خادم MCP. عمليًا تستهلك إعدادات MCP رموزًا أكثر في كثير من الأحيان، لأن خادم MCP واحدًا قد يعرض عشرات الأدوات دفعة واحدة، ما لم تصفِّ القائمة باستخدام allowed_tools.

أي مورّدي نماذج اللغة يدعمون خوادم MCP أصلًا في واجهاتهم؟

اعتبارًا من نوفمبر 2026، تقبل OpenAI وAnthropic وGoogle جميعها خوادم MCP البعيدة مباشرة في واجهاتها. تدعم OpenAI التصريح "type": "mcp" في Responses API، وتقدم Anthropic موصل MCP connector التجريبي باستخدام mcp_servers وmcp_toolset في Messages API، وتدعم Google التصريح "type": "mcp_server" في Gemini Interactions API.

هل تستطيع واجهة Anthropic الاتصال مباشرة بخادم MCP محلي يستخدم stdio؟

لا. لا يتصل MCP connector التجريبي من Anthropic في Messages API إلا بخوادم MCP البعيدة المتاحة للعامة عبر HTTP، أي Streamable HTTP وSSE. لاستخدام خادم MCP محلي يعمل بـ stdio مع Claude، يجب تنفيذ الاتصال في جانب العميل باستخدام الأدوات المساعدة في حزمة تطوير Anthropic.

المصادر

بقلم

Chunyu Cai

Chunyu Cai هو الرئيس التنفيذي لشركة Lotook, LLC ورائد أعمال يكتب عن نماذج الذكاء الاصطناعي ووكلائه وكيف تغير العمل اليومي. يحمل Chunyu Cai درجة الماجستير من Imperial College London.