MCP (Model Context Protocol) 도구 최적화 및 다이어트 전략
MCP(Model Context Protocol)는 Claude Code의 강력한 무기이지만, 잘못 사용하면 엄청난 '토큰 세금'을 물게 된다. 이 글에서는 MCP가 왜 토큰을 많이 소모하는지 구조적 원인을 파헤치고, 최신 기능인 도구 검색(Tool Search)과 도구 통합을 통해 비용을 획기적으로 줄이는 방법을 소개한다.
1. 핵심 문제: "숨겨진 토큰 세금" (Context Bloat)
MCP 서버를 연결하면, 우리가 해당 도구를 사용하지 않더라도 도구의 정의(설명서)가 프롬프트에 자동으로 포함된다. 이를 '컨텍스트 비만(Context Bloat)' 현상이라 부른다.
충격적인 데이터
- 단 5개의 일반적인 MCP 서버(GitHub, Slack, Sentry 등)를 연결했을 때, 총 58개의 도구 정의가 로드되어 약 55,000 토큰을 소비한다.
- 이는 대화를 시작하기도 전에 Opus 모델 기준 약 $0.8 ~ $1.00의 비용이 "기본요금"처럼 발생하는 셈이다.
- 실제 사용자 사례 분석 결과, 로드된 도구 중 72%는 세션 내에서 한 번도 사용되지 않았다. 이는 명백한 낭비다.
2. 필살기 솔루션: Tool Search (지연 로딩) 활성화
Anthropic은 이 문제를 해결하기 위해 'Tool Search (도구 검색)' 기능을 도입했다. 모든 도구를 미리 로드하는 대신, 필요할 때만 도구를 검색해서 가져오는 방식이다.
작동 원리 및 효과
- 작동: MCP 도구 설명이 컨텍스트의 10%를 초과하면 자동으로 활성화된다. 활성화되면 도구 정의 대신 가벼운 검색 도구만 로드되고, 실제 도구는 AI가 필요하다고 판단할 때 동적으로 로드(Lazy Loading)된다.
- 효과: 50개 이상의 도구를 사용할 때 토큰 소모를 약 72,000 토큰 → 8,000 토큰으로 85% 절감시킨다.
- 부수 효과: 불필요한 도구가 컨텍스트를 어지럽히지 않아, 모델의 추론 정확도가 79.5%에서 88.1%로 향상되었다.
실무 적용 (강제 활성화 설정)
기본 설정(10% 임계값)만으로는 부족할 수 있다. 5%만 차지해도 활성화되도록 더 공격적으로 설정하자.
- CLI 설정:
export ENABLE_TOOL_SEARCH=auto:5(컨텍스트의 5% 초과 시 활성화) - settings.json 설정:
{
"env": {
"ENABLE_TOOL_SEARCH": "auto:5"
}
}
3. 도구 다이어트: 통합 및 최적화 (Server-Side Optimization)
여러분이 직접 MCP 서버를 만들거나 설정할 때, 도구의 개수를 줄이는 것만으로도 토큰을 대폭 아낄 수 있다.
사례 연구 (Scott Spence의 최적화)
- Before: 검색 도구를
tavily_search,brave_search,google_search등 20개로 개별 정의 → 14,214 토큰 소모 - After:
web_search라는 하나의 도구로 통합하고provider파라미터로 선택하게 변경 → 5,663 토큰 소모 - 결과: 기능은 동일하지만 토큰 소모량 60% 감소
실무 팁
- 비슷한 기능은 파라미터화(Parameterize)하여 하나의 도구로 합치자.
- 도구 설명(Description)을 장황하게 쓰지 말고, 핵심만 간결하게 작성하자. 설명이 길면 토큰을 먹는다.
4. "Grep" 대신 "Semantic Search MCP" 사용 (RAG 도입)
Claude Code의 기본 파일 탐색(grep, glob)은 "무식하게 읽는" 방식이라 토큰 소모가 극심하다. 이를 MCP 기반의 시맨틱 검색으로 대체하면 비용을 획기적으로 줄일 수 있다.
- 문제: "인증 관련 로직 찾아줘"라고 하면
grep으로 수십 개의 파일을 열어보고 수만 토큰을 쓴다. - 해결: 로컬 RAG MCP(예:
grepai,mcp-ragex)를 사용하면 벡터 검색으로 정확한 위치만 집어낸다. - 데이터:
grep대비 입력 토큰 97% 절감 (51k → 1.3k), 비용 27.5% 절감 효과가 입증되었다. - 추천 도구:
grepai(로컬 임베딩 사용),claude-context(Zilliz 기반),Greb(인덱싱 없는 리랭킹 방식)
5. MCP 대신 CLI 도구 직접 사용 (Context Bypass)
모든 것을 MCP로 연결할 필요는 없다. 단순한 작업은 MCP를 거치지 않는 것이 더 효율적이다.
- 전략: "GitHub MCP"를 연결하면 수십 개의 도구 정의가 로드된다. 단순히 이슈 리스트만 보고 싶다면 MCP를 연결하는 대신, 터미널에서
gh issue list명령어를 실행하게 시키는 것이 토큰이 '0'이다(도구 정의 비용 없음). - mcp-cli 활용: 최신 버전에서는
mcp-cli call명령어를 통해 Claude 세션을 통하지 않고(토큰 소모 없이) MCP 도구를 단발성으로 호출하여 결과만 확인할 수 있다.
6. 실무자를 위한 MCP 관리 체크리스트
- 사용하지 않는 서버 끄기:
/mcp명령어로 현재 로드된 서버 목록을 보고, 지금 세션에 불필요한 서버는/mcp disable [server]로 끄자. - 출력량 제한: DB 조회 등이 너무 많은 데이터를 가져오지 않도록
MAX_MCP_OUTPUT_TOKENS환경 변수를 설정하여 사고를 방지하자 (기본 25k → 10k 권장). - MCP 서버 격리: 프로젝트별로 필요한 MCP만
.mcp.json에 정의하고, 전역(~/.claude.json)에는 정말 자주 쓰는 것만 넣자.
📝 요약 테이블 (Copy & Paste용)
| 전략 | 실행 방법 | 효과 (토큰/비용) | 비고 |
|---|---|---|---|
| Tool Search 활성화 | ENABLE_TOOL_SEARCH=auto:5 설정 | 85% 절감 (대규모 툴 사용 시) | 필수 설정 |
| 도구 통합 | 유사 기능을 하나의 도구로 합치기 | 60% 절감 | 커스텀 MCP 제작 시 |
| Semantic Search | grep 대신 grepai 같은 RAG MCP 사용 | 97% 절감 (탐색 단계) | 대규모 코드베이스 필수 |
| Native CLI 사용 | GitHub MCP 대신 gh 명령어 사용 유도 | 100% 절감 (도구 정의 비용 0) | 단순 조회용 |
| 수동 비활성화 | /mcp disable로 미사용 서버 끄기 | 서버당 수천 토큰 절약 | 세션 시작 시 습관화 |