MCP는 왜 Skills보다 토큰을 많이 먹을까 - 브런치

[AI] ai git tools | | 🔬 연구
#ai 비용 #anthropic #claude #claude code #mcp #review #skills #토큰 최적화
원문 출처: [AI] ai git tools · Genesis Park에서 요약 및 분석

요약

MCP(Model Context Protocol)는 연결된 도구의 JSON 스키마를 매번 전송하는 구조 때문에, Skills에 비해 최대 100배 이상 많은 토큰을 소비하여 비용 효율성이 떨어질 수 있습니다. 실제로 MCP 서버 5개를 연결하면 대화 시작 전에만 5만 5천 토큰이 사라지는 반면, Skills는 필요한 시점에만 정보를 로드하는 점진적 공개 방식으로 자원을 절약합니다. 따라서 비용 최적화를 위해 불필요한 MCP 서버를 끄거나, CLI 도구 우선 사용 및 Skills를 적극 활용하는 방식이 권장됩니다.

본문

Claude Code 비용 최적화 Claude Code에 MCP 서버 5개를 연결했다. GitHub, Slack, Sentry, Grafana, Splunk. 첫 메시지를 보내기도 전에 컨텍스트 윈도우에서 약 5만 5천 토큰이 사라졌다. "MCP를 쓰면 도구가 많아져서 편하다"는 사실이다. 하지만 그 편리함에는 토큰이라는 가격표가 붙어 있다. 반면 Skills는? 10개를 등록해도 세션 시작 시 소모하는 토큰은 300~1,000개 수준이다. 100배 이상 차이가 난다. 왜 이런 차이가 생기는 걸까. 답은 아키텍처에 있다. MCP(Model Context Protocol)의 도구는 JSON 스키마로 정의된다. 각 도구의 이름, 설명, 파라미터 타입, 반환 값 — 이 모든 정보가 하나의 JSON 블록이다. 문제는 이 스키마가 매 API 요청마다 시스템 프롬프트에 포함된다는 점이다. [턴 1] 시스템 프롬프트 + 도구 스키마 58개 + 사용자 메시지 [턴 2] 시스템 프롬프트 + 도구 스키마 58개 + 이전 대화 + 사용자 메시지 [턴 3] 시스템 프롬프트 + 도구 스키마 58개 + 이전 대화 + 사용자 메시지 ... 매 턴마다 동일한 도구 정의가 반복 전송된다. 도구를 사용하든 안 하든 상관없다. GitHub MCP의 27개 도구는 Git 관련 질문을 하지 않는 세션에서도 매번 ~18K 토큰을 차지한다. Anthropic 엔지니어링 블로그에서도 도구 정의는 컨텍스트 윈도우 공간을 차지하면서 응답 시간과 비용을 증가시킨다라고 언급하고 있다. 또한 MCP 서버를 추가할 때마다 오버헤드 _ 프로그램이나 네트워크가 작동할 때, 실제 처리하려는 데이터 외에 시스템을 관리하고 유지하기 위해 소모되는 간접적인 자원(CPU 시간, 메모리 등) 가 선형적으로 증가한다는 것이다. Anthropic 내부에서는 최적화 전에 도구 정의만으로 134K 토큰을 관찰한 적도 있다 한다. 한 개발자는 자신의 MCP 설정이 대화 시작 전에 66,000 토큰 이상을 소모하고 있다는 것을 발견했다. 200K 윈도우의 3분의 1이다. 비용으로 환산하면? MCP 4개만 연결해도 간단한 질문 하나에 약 $0.21의 추가 비용이 발생한다. 하루에 질문 50개를 하면 그것만으로 $10가 넘는다. 한 가지 짚고 넘어갈 것은 Claude Code의 "/context" 명령이 보여주는 MCP 토큰 수치는 실제보다 과대 보고될 수 있다. Cameron Cooke의 조사에 따르면, 공유되는 시스템 지시문이 도구별로 중복 계산되어 최대 3배까지 부풀려진 사례가 있다. XcodeBuildMCP(60개 도구)의 경우 실측 ~15K 토큰이 "/context" 에서 ~45K로 보고됐다. 그래도 교정 후 수치가 15K인 것 자체가 — 아직 작업을 시작하기도 전에 — 적은 양은 아니다. Skills의 아키텍처는 MCP와 근본적으로 다르다. 핵심은 점진적 공개(Progressive Disclosure)다. Skills의 메타데이터만 컨텍스트에 올라간다. 스킬 이름과 한 줄 설명 정도다. - commit: 코드 변경사항 커밋 - review-pr: PR 리뷰 수행 - md-to-html: 마크다운을 HTML로 변환 스킬당 약 30 ~ 100 토큰이다. 10개 스킬이면 300 ~ 1,000 토큰. MCP 서버 하나보다 적다. 사용자가 "/commit" 을 실행하거나, Claude가 스킬이 필요하다고 판단하면 그때 전체 지시문이 로딩된다. 보통 5K 토큰 이내다. 스킬 실행이 끝나면 컨텍스트에서 빠진다. 다음 턴에 다시 올라가지 않는다. [턴 1] 시스템 프롬프트 + 스킬 메타(300 토큰) + 사용자 메시지 [턴 2] 시스템 프롬프트 + 스킬 메타(300 토큰) + /commit → 스킬 본문 로딩(~4K) [턴 3] 시스템 프롬프트 + 스킬 메타(300 토큰) + 이전 대화 (스킬 본문은 빠짐) MCP는 매 턴마다 전체 도구 스키마를 싣는다. Skills는 필요할 때만, 필요한 만큼만 싣는다. 이 차이가 100배의 토큰 격차를 만든다. MCP는 "모든 도구를 책상 위에 펼쳐놓는" 방식 Skills는 "서랍에 넣어두고 필요할 때 꺼내는" 방식 책상이 넓으면 (컨텍스트 윈도우가 크면) 펼쳐놓는 것도 괜찮다. 하지만 도구가 너무 많으면 정작 작업할 공간이 줄어든다. 30~50개 도구를 넘기면 Claude의 도구 선택 정확도도 떨어지기 시작한다. Anthropic 공식 문서의 권고: "gh, aws, gcloud, sentry-cli 같은 CLI 도구는 MCP 서버보다 컨텍스트 효율적이다. 영구적인 도구 정의를 추가하지 않기 때문이다." GitHub MCP를 연결하면 27개 도구 정의가 매 턴 ~18K 토큰을 차지한다. 대신 gh CLI를 쓰면? Bash 도구(이미 존재)를 통해 실행되므로 추가 스키마 오버헤드가 0이다. 게다가 CLI는 파이프(|)로 출력을 필터링할 수 있어서 결과 토큰도 줄일 수 있다. Simon Willison의 지적대로, "MCP로 가능한 거의 모든 것이 CLI로도 가능하다. LLM은 --help 로 사용법을 스스로 파악할 수 있다". CLI가 있는 서비스라면 MCP보다 CLI를 우선 쓰자. Claude Code는 MCP 도구가 컨텍스트 윈도우의 10%를 초과하면 자동으로 Tool Search를 활성화한다. 도구 정의를 지연 로딩하는 기능이다. 더 공격적으로 쓰고 싶으면 임계값을 낮출 수 있다: # 컨텍스트의 5% 초과 시 Tool Search 활성화 ENABLE_TOOL_SEARCH=auto:5 Anthropic에 따르면 Tool Search로 토큰 사용량이 85% 감소하면서 전체 도구 라이브러리 접근은 유지된다. 실전 테스트에서는 MCP 컨텍스트가 51K에서 8.5K로, 약 83% 줄었다. MCP는 외부 시스템과의 실시간 상호작용이 필요할 때 쓴다. 데이터베이스 쿼리, API 호출, 라이브 모니터링 같은 것. 반면 코딩 컨벤션, 아키텍처 가이드, 리뷰 체크리스트 같은 참조 지식은 Skills로 옮기는 게 맞다. 매 턴 로딩될 필요가 없기 때문이다. 당연한 이야기인데, 실제로는 잘 안 한다. "혹시 쓸까 봐" 연결해둔 MCP 서버도 매 턴 토큰을 소모한다[3]. 지금 프로젝트에서 안 쓰는 서버는 설정에서 빼자. CLAUDE.md도 매 턴 시스템 프롬프트에 포함된다. 500줄 이하로 유지하고, 상세 문서는 Skills로 분리하는 것이 좋다. MCP와 Skills는 경쟁 관계가 아니다. 용도가 다르다. MCP: 실시간 외부 데이터 접근이 필요할 때 (DB 쿼리, API 호출, 모니터링) Skills: 지식/가이드/절차를 전달할 때 (컨벤션, 리뷰 기준, 배포 절차) CLI: MCP와 동일한 기능이 CLI로 존재할 때 (gh, aws, gcloud) 핵심은 "토큰도 비용이다"라는 인식이다. MCP 서버를 하나 추가할 때마다 세션 전체의 비용이 올라간다. 그 비용이 해당 도구의 편의성을 정당화하는지 따져봐야 한다. 5만 토큰을 도구 정의에 쓰느니, 그 공간을 더 긴 대화나 더 복잡한 작업에 쓰는 게 낫다. [1] Bin Wu, "Introducing advanced tool use on the Claude Developer Platform", Anthropic Engineering Blog, 2025. https://www.anthropic.com/engineering/advanced-tool-use [2] Adam Jones, Conor Kelly, "Code execution with MCP: building more efficient AI agents", Anthropic Engineering Blog, 2025. https://www.anthropic.com/engineering/code-execution-with-mcp [3] Anthropic, "Manage costs effectively", Claude Code Docs, 2026. https://code.claude.com/docs/en/costs [4] Anthropic, "Tool search tool", Claude API Docs, 2026. https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool [5] "Built-in tools + MCP descriptions load on first message causing 10-20k token overhead", GitHub anthropics/claude-code #3406, 2025. https://github.com/anthropics/claude-code/issues/3406 [6] Scott Spence, "Optimising MCP Server Context Usage in Claude Code", 2025. https://scottspence.com/posts/optimising-mcp-server-context-usage-in-claude-code [7] "Lazy-load MCP tool definitions to reduce context usage", GitHub anthropics/claude-code #11364, 2025. https://github.com/anthropics/claude-code/issues/11364 [8] Joe Njenga, "Claude Code Just Cut MCP Context Bloat by 46.9%", Medium, 2026. https://medium.com/@joe.njenga/claude-code-just-cut-mcp-context-bloat-by-46-9-51k-tokens-down-to-8-5k-with-new-tool-search-ddf9e905f734 [9] Cameron Cooke, "Do MCP Servers Really Eat Half Your Context Window?", Async Let, 2025. https://www.async-let.com/posts/claude-code-mcp-token-reporting/ [10] Mario Zechner, "MCP vs CLI: Benchmarking Tools for Coding Agents", 2025.

Genesis Park 편집팀이 AI를 활용하여 작성한 분석입니다. 원문은 출처 링크를 통해 확인할 수 있습니다.

공유

관련 저널 읽기

전체 보기 →