Claude Code에 MCP 서버를 추가했습니다. 토큰 비용은 얼마나 들까요?
요약
Claude Code에 MCP 서버를 추가할 때 발생하는 토큰 비용 오버헤드를 분석합니다. MCP 도구 정의가 매 턴마다 컨텍스트에 주입되어 세션이 길어질수록 비용이 복리로 증가하는 문제를 다룹니다.
핵심 포인트
- MCP 도구 정의는 매 턴마다 컨텍스트 윈도우에 주입되어 비용을 발생시킴
- 도구당 약 80~150 토큰이 소모되며, 도구 개수에 따라 오버헤드가 증가함
- 자율 에이전트 루프 실행 시 도구 미사용 턴에도 '턴당 세금' 형태의 비용 발생
- GitHub MCP 서버 사용 시 2,000턴 기준 약 $18.60의 추가 비용 발생 가능
모두가 Claude Code를 확장하는 방법으로 MCP 서버에 대해 이야기합니다. 하지만 그 비용이 얼마인지에 대해서는 이야기하는 사람이 적습니다.
등록하는 모든 MCP 도구는 매 턴마다 컨텍스트 윈도우 (context window)에 도구 정의 (tool-definition) 블록을 주입합니다. 이것은 일회성 비용이 아닙니다 — 세션 전체에 걸쳐 복리로 쌓입니다. 저는 실제 수치를 알고 싶었고, 직접 측정해 보았습니다.
컨텍스트에서 MCP 도구 정의가 실제로 어떻게 보이는가
Claude Code가 MCP 서버를 로드할 때, 서버의 도구 매니페스트 (tool manifest)를 읽고 시스템 프롬프트 (system prompt)에 다음과 같은 내용을 주입합니다:
<tool>
name: read_file
description: Read the contents of a file at the given path...
...
설명과 스키마 (schema)가 얼마나 상세한지에 따라 도구당 대략 80150 토큰이 소모됩니다. 10개의 도구가 있는 서버라면 세션의 _매 턴 (every turn)_마다 8001,500 토큰이 추가됩니다.
세 가지 실제 MCP 서버 구성을 측정했습니다
저는 세 가지 서로 다른 MCP 서버 설정으로 세션을 실행했으며, tokenscope-mcp를 사용하여 토큰 내역을 추적했습니다. 이 도구는 Claude Code 자체의 .jsonl 비용 데이터를 에이전트 (agent)에게 다시 노출하여 세션 중간에 검사할 수 있게 해주는 MCP 서버입니다.
20턴 세션 동안 발견한 결과는 다음과 같습니다:
| MCP 서버 | 등록된 도구 | 턴당 토큰 (도구 정의) | 20턴 세션 오버헤드 (overhead) |
|---|---|---|---|
| MCP 없음 | 0 | 0 | 0 |
| ... |
많은 사람들이 기본적으로 추가하는 GitHub MCP 서버는, 무언가를 요청하기도 전에 20턴 세션당 약 62,000 토큰의 오버헤드가 발생합니다. Claude Sonnet 4 입력 가격($3/MTok)을 기준으로 하면, 세션당 순수 도구 정의 오버헤드 비용은 약 $0.19입니다.
그리 많아 보이지 않을 수도 있습니다. 하지만 만약 여러분이 긴 에이전트 루프 (agentic loops) — Claude Code가 자율적으로 다단계 작업을 수행하는 형태 — 를 실행하고 있다면, 에이전트가 GitHub을 전혀 건드리지 않는 턴을 포함하여 모든 턴마다 그 오버헤드를 지불하게 됩니다.
에이전트 루프에서의 복리 문제
표준적인 대화형 세션(interactive session)에서는 약 2030회의 턴(turn)을 수행할 수 있습니다. 하지만 밤새 실행되는 자율 에이전트 루프(autonomous agent loop)에서는 5002,000회의 턴을 수행할 수도 있습니다.
GitHub MCP 서버가 로드된 상태에서 2,000회의 턴을 수행할 경우:
- 도구 정의 오버헤드 (Tool definition overhead): 약 6.2M 토큰
- Sonnet 4 입력 가격 기준: 오버헤드로만 약 $18.60 발생
- 이는 실제 작업 토큰, 캐시 미스(cache misses) 또는 출력(output)이 발생하기 전의 비용입니다.
이것이 바로 "거의 아무것도 하지 않으면서 136M 토큰을 소비하는" 패턴 뒤에 숨겨진 정확한 역학입니다. 에이전트가 눈에 띄게 낭비하고 있는 것이 아닙니다. 에이전트는 도구를 실제로 사용하든 사용하지 않든, 사용할 수 있는 모든 도구에 대해 턴당 세금(per-turn tax)을 지불하고 있는 것입니다.
직접 측정하는 방법
Claude Code가 ~/.claude/projects/에 기록하는 .jsonl 세션 로그에는 턴당 토큰 상세 내역이 포함되어 있습니다. 여러 턴에 걸쳐 input_tokens 필드를 조사해 보면, 에이전트가 단순히 파일만 읽는 턴에서도 토큰 사용량이 높게 유지되는 것을 확인할 수 있습니다.
# 마지막 세션에 대한 대략적인 턴당 입력 토큰 평균
cat ~/.claude/projects/**/*.jsonl | \
python3 -c "
...
만약 턴당 평균 입력 토큰 수가 실제로 전달하는 콘텐츠보다 훨씬 높다면, 도구 정의(tool definitions)가 원인일 가능성이 큽니다.
지금 바로 할 수 있는 세 가지 방법
1. 프로젝트 범위(project-scoped)의 MCP 설정을 사용하세요.
Claude Code는 프로젝트 레벨의 .mcp.json을 지원합니다. 작업 유형에 따라 서로 다른 설정을 만드세요. 예를 들어, GitHub 서버가 없는 글쓰기용 설정, 파일 시스템(filesystem)만 있는 코드 리뷰용 설정 등을 구분하십시오. 모든 세션에 모든 서버를 로드하지 마세요.
2. 도구 수가 적고 더 집중된 MCP 서버를 선호하세요.
범위가 잘 정해진 3개의 도구를 가진 서버는 26개의 광범위한 도구를 가진 서버보다 오버헤드가 6~8배 적습니다. MCP 서버를 평가할 때, 도구의 개수는 실제 비용 신호(cost signal)가 됩니다.
3. MCP 서버를 직접 작성한다면, 설명을 간결하게 유지하세요.
400토큰 분량의 도구 설명과 80토큰 분량의 설명은, 해당 서버를 로드하는 모든 세션에서 턴당 오버헤드에 5배의 차이를 만듭니다. 스키마(schema) 또한 중요합니다. JSON 스키마 블록을 팽창시키는 깊게 중첩된 선택적 필드(optional fields)를 피하십시오.
더 넓은 패턴
MCP는 진정으로 유용합니다. 저는 이에 반대하는 것이 아닙니다. 하지만 비용 모델이 직관적이지 않습니다. 여러분은 호출된(called) 도구가 아니라 등록된(registered) 도구에 대해 비용을 지불합니다. 에이전트가 도구를 사용하든 사용하지 않든, 모든 도구 정의(tool definition)가 컨텍스트(context)에 함께 포함됩니다.
이 점을 이해하고 나면, 올바른 사고 모델(mental model)은 "내가 원할지도 모르는 기능을 위해 MCP 서버를 추가한다"에서 "이번 세션에서 내가 실제로 활발하게 사용 중인 기능을 위해 MCP 서버를 추가한다"로 전환됩니다.
저는 tokenscope (CLI)와 tokenscope-mcp (MCP 서버)를 사용하여 턴(turn)당 토큰 비용을 추적합니다. 두 도구 모두 Claude Code의 네이티브 .jsonl 로그를 읽습니다. 프록시(proxy), API 키, 또는 수정된 클라이언트가 필요하지 않습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기