Unused MCP Plugins Are Quietly Eating Your Context: A Weekly Auto-Disable Pipeline

개요

Claude Code 환경에서 사용하지 않는 MCP(Meta Code Plugin) 플러그인이 컨텍스트를 잠식하는 문제를 해결하기 위해, 30일간 사용되지 않은 플러그인을 자동으로 비활성화하고 캐시를 아카이빙하는 주간 파이프라인이 구축되었습니다.

주요 내용

* 문제점: 플러그인 활성화 시 해당 플러그인의 툴 스키마가 시작 시점에 컨텍스트에 주입되지만, 사용되지 않더라도 제거 동기가 없어 '활성화 상태 유지' 플러그인이 누적되면 Claude가 실제로 활용할 수 있는 토큰 예산이 줄어듭니다.
* 아키텍처: 플러그인 관리를 위한 3단계 파이프라인으로 구성됩니다.
* 1단계: plugin-usage.sh - 사용되지 않는 플러그인 시각화: 최근 14일간의 세션 JSONL 데이터를 분석하여 실제로 도구로 사용된 플러그인을 집계하고, 활성화된 전체 플러그인 수와 실제 사용된 플러그인 수를 비교하여 '휴면' 상태(활성화되었으나 사용되지 않음)의 플러그인 수를 보고합니다. jq를 사용하여 type=="tool_use"를 명시적으로 필터링하여 잘못된 계수를 방지합니다.
* 2단계: plugin-auto-disable.sh - 자동 비활성화: 30일간 사용되지 않은 플러그인을 자동으로 비활성화합니다. 주간 실행 시 캐시 크기가 큰 플러그인부터 우선적으로 최대 5개까지 처리하며, PROTECTED 리스트에 포함된 플러그인(LSP, 핵심 기능 등)은 제외합니다.
* 3단계: cleanup-plugin-cache.sh - 캐시 아카이빙: 비활성화된 플러그인의 캐시를 .disabled-cache/ 디렉토리로 이동시켜 보관하며, 30일 이상 지난 항목은 물리적으로 삭제하는 purge 기능을 제공합니다.
* 자동화: launchd를 사용하여 매주 일요일 오전 6시 45분에 plugin-auto-disable.sh가 자동으로 실행되도록 설정됩니다.
* 주의 사항:
* grep의 부분 문자열 매칭 오류로 인한 잘못된 휴면 플러그인 계수.
* LSP(Language Server Protocol) 플러그인을 PROTECTED 리스트에 포함하지 않으면 Claude Code 자체 기능에 영향을 줄 수 있습니다.
* 캐시 크기가 작은 플러그인이나 너무 많은 플러그인을 한 번에 비활성화하는 것을 방지하기 위한 MIN_CACHE_MBWEEKLY_MAX 설정.
* launchd의 작업 스킵 시 재시도 메커니즘.

시사점

이 자동화 파이프라인은 Claude Code 환경에서 사용자의 토큰 예산을 효율적으로 관리하고, 불필요한 리소스 소모를 줄여 전반적인 성능과 사용자 경험을 향상시키는 실용적인 해결책을 제시합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions