cctoggle: أوقف كل إضافة Claude Code وكل خادم MCP بأمر واحد — ثم أعدها
cctoggle: أوقف كل إضافة Claude Code وكل خادم MCP بأمر واحد
نادراً ما تكون جلسة Claude Code خالية. تُحمَّل الإضافات، وتُوصَل خوادم MCP على نطاق المستخدم، وكل واحدة تجلب حزمة من تعريفات الأدوات، وكل ذلك يصل إلى السياق قبل رسالتك الأولى. أحياناً تريد العكس: جلسة نظيفة وخفيفة لمهمة معينة — ثم استعادة بأمر واحد.
لهذا بنيتُ cctoggle (عام، رخصة MIT) — أداة صغيرة وأمر سلاش عام يوقفان جميع الإضافات وخوادم MCP على نطاق المستخدم دفعة واحدة، ثم يستعيدان بالضبط ما تم تعطيله.
المشكلة
كلما حملت الجلسة المزيد من الإضافات وخوادم MCP، تضخم السياق أكثر: تعريفات أدواتها تلتهم ميزانية التوكنات وتُكدّس قائمة الأدوات المتاحة. وهذا أغلى ثمناً (إذ ينمو الإدخال) وأسوأ للجودة (فكلما كُدّس أكثر، ساء تنقّل النموذج فيه). والقيام بذلك يدوياً يعني تحرير ملفي إعدادات، ثم تذكّر ما عبثت به بالضبط بشق الأنفس كي تتمكن من إعادته.
cctoggle يسدّ الطرفين: يعطّل كل شيء بأمر واحد ويتذكّر بدقة ما عطّله، حتى يستعيد ذلك فقط.
ما الذي يفعله
أربعة أوامر، تعمل في Claude Code كـ /cctoggle وفي الطرفية كواجهة أوامر cctoggle:
/cctoggle status # what's currently enabled/disabled
/cctoggle off # disable all plugins + user-scope MCP
/cctoggle on # restore exactly what cctoggle disabled
/cctoggle restore-backup # roll back to a config backup
off يفعل شيئين:
- الإضافات — يقلب أعلام
enabledPluginsفي~/.claude/settings.jsonإلىfalse. - MCP — يسحب تعريفات خوادم MCP على نطاق المستخدم من
~/.claude.jsonويخبّئها في ملف حالة محلي.
on يستعيد بصرامة ما عطّله cctoggle نفسه. إذا كنت قد أوقفت بالفعل إضافة أو خادماً ما يدوياً في وقت سابق، فإن on يتركه كما هو ولن يعيد تفعيله. هذه تفصيلة مهمة: الأمر ليس “فعّل كل شيء”، بل “تراجع عن آخر off لي”.
التعطيل الانتقائي
لست مضطراً لتفجير كل شيء. off يقبل وسائط:
cctoggle off --keep superpowers,caveman # disable all except these
cctoggle off graphify rtk # disable only the listed ones
كيف تُطبَّق التغييرات (يستحق الفهم)
هذا هو الجزء غير البديهي — الإضافات وMCP لهما آليتا تطبيق مختلفتان.
تغييرات الإضافات تُطبَّق على الجلسة الحالية — لكن فقط بعد أن تكتب /reload-plugins. لا حاجة لإعادة تشغيل كاملة للتطبيق.
تغييرات إعدادات MCP تُطبَّق في جلسة claude التالية. لا يوجد فصل حيّ لاتصال MCP في Claude Code — فهو غير مدعوم. والأقل وضوحاً: /clear و/compact لا يُسقطان اتصالات MCP. تُبقي العملية نفسها خوادم MCP الفرعية حية، لذا مسح السياق لا يكفي — تحتاج إلى جلسة claude جديدة.
إذن دورة العمل الفعلية هي:
/cctoggle off # flag plugins and stash MCP
/reload-plugins # plugins leave the current session
# for MCP — exit and start claude again
التثبيت
تحتاج إلى git فقط. استنسخ المستودع وشغّل المثبّت:
git clone https://github.com/suenot/cctoggle.git ~/projects/claude && \
~/projects/claude/install.sh
install.sh يربط أمر السلاش رمزياً إلى ~/.claude/commands/ ويضع واجهة الأوامر cctoggle على PATH لديك. بعد ذلك يصبح /cctoggle متاحاً في كل جلسة Claude Code، ويعمل cctoggle مباشرة من الطرفية.
لماذا هو متين
/cctoggle هو أمر مستخدم (يقع في ~/.claude/commands/)، وليس إضافة. لذا يظل يعمل حتى بعد تعطيل جميع الإضافات. لو كان cctoggle نفسه إضافة، لأطلق أمر off النار على قدمه — لكن بدلاً من ذلك، يبقى on في متناول اليد مهما عطّلت.
النسخ الاحتياطية والخصوصية
قبل كل تغيير، ينسخ cctoggle احتياطياً ملفي الإعدادات (~/.claude/settings.json و~/.claude.json) إلى مجلد backups/. إذا حدث خطأ ما، يُرجع restore-backup إلى نسخة محفوظة.
ملف الحالة والنسخ الاحتياطية مستثناة عبر gitignore، لذا فإن تعريفات خوادم MCP الخاصة بك (التي كثيراً ما تحمل مفاتيح وتوكنات) لا تتسرب أبداً إلى أحد الالتزامات.
القيود
قيد واحد صادق يجدر معرفته مسبقاً. خوادم MCP التي يُبلّغ عنها claude mcp get <name> بأنها “Dynamic config (from command line)” — أي المحقونة عند الإطلاق عبر أعلام سطر الأوامر (مثل claude_design) — لا يمكن تبديلها عبر الإعدادات إطلاقاً. لا يمكن تعطيلها إلا بتغيير طريقة إطلاق claude وإعادة تشغيله.
cctoggle يكتشف ويبلّغ عن هذه الخوادم، لكنه لا يستطيع تبديلها — وهذا قيد في الآلية نفسها، لا في الأداة.
الخلاصة: cctoggle هو مفتاح تبديل سريع بين جلسة “ثقيلة” بكل الإضافات وMCP وجلسة “خفيفة” للمهمة التي بين يديك، مع ضمان أن كل شيء يعود تماماً كما كان. نسخ احتياطية قبل كل خطوة، وتعريفات MCP الخاصة تبقى خارج git، والأمر نفسه ينجو من تعطيل كل إضافة لأنه يقع في مساحة المستخدم. المستودع — github.com/suenot/cctoggle.