MCP Tool Search: كيف أجّلنا 120 ألف رمز من schemas الأدوات
كان أربعة وعشرون connector من MCP يستهلكان نحو 60% من نافذة سياقنا قبل أي عمل. تشغيل Tool Search خفّض ذلك إلى ~3000 رمز. إليك مخرج /context قبل وبعد، إضافة إلى أنماط الدمج التي ساعدت.
الكلفة الخفيّة التي لم نلاحظها لأسابيع
عندما تثبّت خادم MCP (Model Context Protocol) في Claude Code، تحصل على أدوات. كثير من الأدوات. خادم GitHub MCP وحده يوفّر 35 — للقضايا، وpull requests، والفروع، والتعليقات، والإصدارات، وعمليات تشغيل workflow، والنشر، وتنبيهات الأمن، والمزيد.
ما تحصل عليه أيضًا، افتراضيًا، هو schema JSON كامل لكل أداة محقون في السياق عند بدء الجلسة. الأسماء والأوصاف وأنواع المعاملات وقيم enum والأمثلة — كل ذلك، قبل أن تكتب أي prompt.
ربطنا 24 خادم MCP خلال بناء Statnive. لم نفكّر في الكلفة حتى بدأت جلساتنا تشعر بالضيق. ثم شغّلنا /context لأوّل مرّة.
هذا المقال هو القبل/البعد، وعَلَم واحد قام بـ 85% من العمل، وثلاثة أنماط أخرى أنهت المهمّة.
ما أظهره /context لنا
إليك الجزء ذو الصلة من مخرج /context لدينا قبل أي تحسين:
| خادم MCP | الأدوات | الرموز المستهلكة |
|---|---|---|
| GitHub | 35 | ~26,000 |
| Slack | 11 | ~21,000 |
| Jira | ~20 | ~17,000 |
| Playwright (أتمتة المتصفّح) | 21 | ~13,647 |
| Context7 (مستندات المكتبات) | ~15 | ~8,000 |
| 19 connector آخر | ~190 | ~50,000 |
| إجمالي حمل MCP | ~290 | ~135,000 |
هذا نحو 67% من نافذة سياق 200K بأكملها يُنفَق على تعريفات أدوات قد لا نستخدمها في تلك الجلسة. النمط الذي وثّقه الباحثون في مكان آخر يصمد: متوسّط حمل أدوات MCP ~500-710 رمز لكل أداة، وحمل connector معتدل (24 خادمًا) يستهلك بشكل روتيني 48,000-120,000 رمز قبل بدء أي عمل. الحالة الموثَّقة الأكثر تطرّفًا هي خادم MCP الخاص بـ Docker: 135 أداة، ~126,000 رمز بمفرده.
كان لدينا ~65K رمز متبقّ للمحادثة الفعلية، وprompt النظام، والأدوات المدمجة، وCLAUDE.md لدينا، وmetadata الـ skill، وmemory الـ auto-compact. لذلك بدا كل شيء ضيّقًا.
Tool Search: العَلَم الواحد الذي قام بـ 85% من العمل
شحن Claude Code v2.1.7 MCP Tool Search. بدلًا من حقن schema كل أداة عند بدء التشغيل، يبني Tool Search فهرسًا خفيفًا بحجم ~5K رمز لأسماء الأدوات وأوصافها. يُحمَّل الـ schema الكامل لأي أداة فردية فقط عندما يقرّر Claude فعلًا استدعاءها. وبمجرّد التحميل، تبقى مخزّنة طوال الجلسة.
أظهر اختبار Anthropic الداخلي انخفاضًا من 134K إلى ~5K رمز — قطع 85%. وعلى عكس المتوقَّع، ارتفعت الدقّة في تقييمات MCP بدلًا من أن تنخفض: قفز Opus 4 من 49% إلى 74% على المعيار ذاته، يُفترض لأن النموذج لم يكن يغرق في schemas أدوات لم يكن يحتاجها.
ينشَط Tool Search تلقائيًا عندما تتجاوز أوصاف الأدوات نحو 10% من نافذة السياق (~20K رمز). تحت تلك العتبة يبقى مطفأ، على افتراض أنك لا تحتاجه. نحن فوق العتبة بكثير، لذا فهو نشط دائمًا لنا.
بعد تفعيله، بدا /context لدينا مختلفًا تمامًا:
| المصدر | قبل | بعد |
|---|---|---|
| schemas أدوات MCP | ~135,000 | ~3,000 (الفهرس فقط) |
| schemas أدوات MCP (خلال جلسة استخدمت 4 أدوات) | ~135,000 | ~6,500 (الفهرس + 4 schemas محمَّلة) |
| السياق المتاح للعمل | ~65,000 | ~190,000 |
خطوة التحقّق التي لا نتخطّاها أبدًا: شغّل /context عند بدء الجلسة وتأكّد من السطر الذي يقول إن schemas الأدوات مؤجَّلة أو أن Tool Search نشط. إذا لم يكن كذلك، فأنت تدفع مقابل لا شيء.
دمج تضخّم CRUD
كان Tool Search أكبر رافعة منفردة، لكنّه لا يساعد إذا كانت لأدوات فردية أوصاف منتفخة أو إذا كانت خوادمك تكشف عشرات الأدوات شبه المتطابقة.
أعدنا بناء أحد خوادم MCP الداخلية لدينا باستخدام نمط موثَّق في الأبحاث باسم دمج action-parameter. الـ API الأصلي بعشر أدوات لإدارة القضايا:
create_issue, update_issue, delete_issue, list_issues, get_issue,
add_comment, update_comment, delete_comment, list_comments, get_comment
أصبح أداة واحدة:
manage_issues({ action: "create" | "update" | "delete" | "list" | "get",
target: "issue" | "comment", ... })
نتائج موثَّقة من مطوّر طبّق هذا النمط: انخفضت 20 أداة من 14,214 رمز إلى 5,663 رمز — انخفاض بنسبة 60%. لا يزال النموذج يوجّه بشكل صحيح لأن معامل الـ action مُعدَّد ووصف الأداة يسمّي كل عملية مدعومة. شاهدنا نتائج مماثلة على دمجنا الخاص: من نحو 9,800 رمز إلى 4,100.
حتى مع تأجيل Tool Search لتحميلات الـ schema، فإن التحميل عند الطلب لأداة سمينة واحدة أصغر بكثير من عشر أدوات نحيفة، لأن حمل الـ schema يهيمن عليه التكرار النمطي (تعريفات الأنواع، أغلفة الأخطاء، أنماط الترقيم).
قصّ الأوصاف بشكل قاطع
الوجه الآخر لذات العملة. النثر التسويقي في أوصاف الأدوات يكلّف رموزًا حقيقية.
وصف مثل:
“Search the web using Tavily Search API. Best for factual queries requiring reliable sources and citations from authoritative web content. Handles complex topics with academic depth and provides comprehensive results with relevance scoring…”
يكلّف 87 رمزًا. إشارة التوجيه ذاتها في:
“Search using Tavily. Best for factual/academic topics with citations.”
تكلّف 12 رمزًا. عبر 290 أداة، متوسّط توفير 50 رمزًا لكل وصف هو ~14,500 رمز.
القاعدة التي نستخدمها: ينبغي أن يساعد الوصف Claude في تقرير ما إذا كان سيستدعي هذه الأداة، لا أن يسوّقها. اقطع أي شيء لا يغيّر قرار التوجيه.
متى أبقينا أداة سريعة التحميل
عدد قليل من الأدوات نريد تحميلها سريعًا لأنها تُطلَق في كل جلسة تقريبًا:
- Read وWrite وEdit وGrep وGlob وBash — مدمجة، ليست MCP، لكن المبدأ ذاته: تكرار استدعاء عالٍ يبرّر التحميل الدائم.
- خادما MCP نستخدمهما عدّة مرّات في الجلسة — أدوات إصدارنا الداخلية وخادم جلب المستندات لدينا. مجموع schemas لديهما ~3500 رمز؛ التحميل عند الطلب أكثر من 6 مرّات في الجلسة سيكلّف في زمن إعادة الجلب أكثر مما يوفّره التحميل الدائم.
يدعم Tool Search قائمة سماح للتحميل السريع لكل خادم لهذا السبب بالضبط. استخدمها بدقّة جراحية — كل أداة سريعة التحميل هي حمل دائم.
حدّد سقف المخرج، أو سيحدّد سقفك
متغيّر بيئة MCP MAX_MCP_OUTPUT_TOKENS يفترض 25,000 رمز لكل استجابة أداة. هذا سخيّ لنافذة 200K مع استدعاء أداة واحد في كل دور. مع 24 connector وأدوات تتفرّع عبر استدعاءات متعدّدة في كل دور، فهي طريقة مضمونة لملء السياق باستجابات API خام.
حدّدنا سقفنا عند 4000 وطلبنا من الخوادم الأكثر إنتاجًا للمخرَجات أن تدعم الترقيم على جانب الخادم وأشكال استجابة بـ«ملخّص أوّلًا». استدعاء قائمة قضايا GitHub يعيد الآن الأوّلين 20 مع علامة has_more: true وtoken متابعة بدلًا من إلقاء 200 قضية في السياق. يستطيع النموذج طلب المزيد إذا احتاج؛ عادةً لا يفعل.
لمسارات عمل متعدّدة الأدوات معقّدة، أظهر Programmatic Tool Calling (يكتب Claude كود تنسيق يعمل في بيئة معزولة، مع دخول النتائج النهائية فقط في السياق) انخفاضًا بنسبة ~37% في الرموز في اختبار Anthropic الداخلي على مهامّ بحثية مكثّفة. نستخدمه لمسار عمل واحد — وكيل أسئلة وأجوبة يصل إلى 6 خوادم وثائق — وتصمد التوفيرات.
CLI > MCP للأدوات نادرة الاستخدام
غير متوقَّع لكنّه حقيقي: للأدوات التي تستخدمها نادرًا، أمر shell أرخص من خادم MCP. gh وaws وgcloud وsentry-cli وwp — تنفَّذ عبر أداة Bash بصفر حمل سياق دائم. وصف أداة Bash (محمَّلة بالفعل) هو كل السياق الذي تدفع ثمنه. نص مساعدة CLI للملف الثنائي يُحمَّل فقط إذا قرأه Claude.
سحبنا ثلاثة خوادم MCP نادرة الاستخدام واستبدلناها باستخدام CLI. هذا وحده وفّر ~12,000 رمز من الحمل الأساسي.
نقطة التعادل تقريبًا: هل تُطلَق هذه الأداة أكثر من مرّة في جلسة نموذجية؟ إذا نعم، MCP. إذا لا، CLI.
ما لم نحسّنه
MAX_MCP_OUTPUT_TOKENSلكل استدعاء، لا لكل جلسة. خادم سيّء التصرّف يستطيع أن يغرق السياق عبر دورات متعدّدة. ليس لدينا سقوف لكل جلسة بعد — هذا طلب ميزة لـ Claude Code، وليس شيئًا يمكننا إصلاحه محلّيًا.- Tool Search إمّا مشغَّل أو مطفأ. لا يمكننا تدريج خوادم MCP بالطريقة التي ندرّج بها skills. كل الـ 24 لدينا تمرّ عبر Tool Search بشكل موحَّد. لخادم نستخدمه في كل جلسة تقريبًا، سيكون التحميل السريع أكثر كفاءة فعلًا — لكن لا يمكننا تحميل سريع انتقائي لـ schemas ذلك الخادم وحده دون تعطيل Tool Search عالميًا.
- لم نقِس دقّة التوجيه بعناية على أحمالنا الخاصّة. نسبة Anthropic 49% → 74% على Opus 4 مشجّعة، ولم نشهد إخفاقات توجيه عمليًا، لكن ليس لدينا مجموعة معايير لإثبات أن التحميل المؤجَّل يعمل بنفس جودة التحميل السريع لمهامّ Statnive المحدّدة.
الخطوات العملية إذا كنت تفعل ذلك اليوم
- شغّل
/contextفي جلسة جديدة. شاهد ما هو محمَّل فعلًا. - إذا تجاوزت schemas أدوات MCP ~20K رمز (10% من النافذة)، يجب أن يكون Tool Search نشطًا تلقائيًا. تحقّق من ذلك من مخرج
/context. - دقّق connectors الثلاثة الأثقل لديك. منحنى باريتو قاسٍ — عادةً 3 خوادم تستهلك 60%+ من حمل MCP.
- ادمج تضخّم CRUD في أي خادم MCP تتحكّم به.
- اقصص الأوصاف على أي أداة تقرأ كنسخ تسويقية.
- انقل الأدوات نادرة الاستخدام من MCP إلى CLI.
- حدّد سقف
MAX_MCP_OUTPUT_TOKENSإلى حدّ معقول لكل استدعاء (نستخدم 4000).
إذا أردت الصورة الأكبر — كيف يتلاءم هذا مع تحسين CLAUDE.md وتدريج skill لتحقيق توفيرات مضاعفة — ابدأ بـ المقال الرئيسي في هذه السلسلة.
جرّب Statnive
تحليلات WordPress بمنطق الخصوصية أولاً، شُحنت من فريق ينتبه إلى أين يذهب كل رمز. ثبّت Statnive مجانًا من WordPress.org — بياناتك تبقى على خادمك.