𝗟𝗮𝘇𝘆 𝗟𝗼𝗮𝗱𝗶𝗻𝗴 𝗠𝗖𝗣 𝗧𝗼𝗼𝗹𝘀: 𝗪𝗵𝗼 𝗦𝘂𝗽𝗽𝗼𝗿𝘁𝘀 𝗜𝘁 𝗮𝗻𝗱 𝗛𝗼𝘄

زیادہ تر لوگ سمجھتے ہیں کہ MCP سرور کی لاگت کوڈ میں ہوتی ہے۔ وہ غلط ہیں۔

اگر آپ ایک MCP سرور بناتے ہیں، تو آپ کو دو قسم کے ٹوکن اخراجات کا سامنا کرنا پڑتا ہے:

  • مستقل لاگت (Fixed cost): ہر بار سیاق و سباق (context) میں لوڈ ہونے والی ٹول کی تعریفیں۔
  • متغیر لاگت (Variable cost): ٹول کی طرف سے واپس کیے جانے والے جواب کا سائز۔

آپ متغیر لاگت کو کنٹرول کر سکتے ہیں۔ آپ نتائج کو پیجینیشن (paginate) کے ذریعے تقسیم کر سکتے ہیں یا آؤٹ پٹ کے سائز کو محدود کر سکتے ہیں۔

آپ مستقل لاگت کو کنٹرول نہیں کر سکتے۔ یہ ہوسٹ (کلائنٹ) کا کام ہے۔

اگر آپ کے پاس بہت سے ٹولز کے ساتھ دس سرورز ہیں، تو ماڈل کے آپ کا پہلا پیغام پڑھنے سے پہلے ہی آپ 40,000 ٹوکنز ضائع کر سکتے ہیں۔ ایسا اس لیے ہوتا ہے کیونکہ ہوسٹ ہر ٹول کی تعریف کو پہلے سے ہی لوڈ کر لیتا ہے۔

اس کا حل lazy loading ہے۔ اس کا مطلب ہے کہ ہوسٹ صرف ایک چھوٹا سا سرچ ٹول لوڈ کرتا ہے اور دیگر تعریفیں صرف ضرورت پڑنے پر ہی حاصل کرتا ہے۔

مسئلہ کیا ہے؟ زیادہ تر کلائنٹس ابھی تک اس کی حمایت نہیں کرتے۔

Lazy loading کی موجودہ صورتحال:

  • Claude Code: اس کی حمایت کرتا ہے۔ ٹولز سرچ ٹول کے ذریعے ضرورت پڑنے پر لوڈ ہوتے ہیں۔
  • Cursor, Devin، اور دیگر: یہ اس کی حمایت نہیں کرتے۔ یہ سب کچھ ایک ساتھ لوڈ کرتے ہیں۔

اگر آپ کا سیاق و سباق (context) ایسے کلائنٹ پر بڑھ رہا ہے جس میں lazy loading کی کمی ہے، تو آپ کے پاس دو آپشنز ہیں:

  1. Use a lazy proxy اپنے ہوسٹ کو اپنے اصل سرورز کے بجائے ایک پراکسی سرور کی طرف اشارہ کریں۔ پراکسی صرف دو ٹولز فراہم کرتا ہے: search_tools اور execute_tool۔ یہ آپ کی اصل تعریفیں صرف درخواست پر ہی لوڈ کرتا ہے۔ اس سے آپ کا سیاق و سباق (context) کم ہو جاتا ہے لیکن باریک بینی سے اجازت کنٹرول (fine-grained permission control) ختم ہو جاتی ہے۔

  2. Use a router pattern اگر ایک سرور بہت بڑا ہو رہا ہے، تو مزید ٹولز شامل نہ کریں۔ اس کے بجائے، ایک آپریشن پیرامیٹر (operation parameter) کے ساتھ ایک ٹول بنائیں۔ مثال کے طور پر، "list"، "get"، یا "search" جیسے کمانڈز کے ساتھ ایک "docs" ٹول استعمال کریں۔ یہ ان اسکیما (schemas) کی تعداد کو کم کر دیتا ہے جنہیں ہوسٹ کو لوڈ کرنا پڑتا ہے۔

حکمت عملی کا خلاصہ:

  • 6 سے 15 ٹولز: کچھ نہ کریں۔ لاگت اتنی کم ہے کہ پریشان ہونے کی ضرورت نہیں۔
  • ایک سرور میں بہت سے ٹولز: Router pattern استعمال کریں۔
  • بہت سے مختلف سرورز: Lazy proxy استعمال کریں۔

اپنے کوڈ کو بہتر بنانے (optimizing) میں گھنٹوں ضائع کرنے سے پہلے اپنے کلائنٹ کے طرزِ عمل کو چیک کریں۔ ہو سکتا ہے کہ اس کا حل آپ کے سرور میں ہو ہی نہ۔

Source: https://dev.to/ismaestro/lazy-loading-mcp-tools-which-clients-support-it-and-how-4414

Optional learning community: https://t.me/GyaanSetuAi