본문으로 바로가기
Lab

클로드 코드(Claude Code) 토큰, CLAUDE.md와 MCP 서버 직접 재 보니

클로드 코드 빈 프로젝트의 입력은 30,715토큰이었고, 한국어 CLAUDE.md 1,671자는 1,617토큰, MCP 서버 3개는 383토큰을 더했습니다. Claude Code 토큰을 아끼려면 무엇부터 줄일지 공식 문서와 함께 짚습니다.

· · 수정

두꺼운 문서 더미와 작은 플러그 상자들이 하나의 저울 접시 위에 올라 무게를 비교하는 개념 삽화
클로드 코드(Claude Code) 토큰, CLAUDE.md와 MCP 서버 직접 재 보니 표지 삽화

빈 프로젝트에서 클로드 코드에 "OK"만 답하라고 한 번 요청하면 입력 토큰은 30,715개였습니다. 여기에 한국어 CLAUDE.md 1,671자를 두자 1,617개가 늘었고, MCP 서버 3개를 붙였을 때는 383개가 늘었습니다. Claude Code 토큰이 어디서 쌓이는지 궁금했다면, 설정 하나가 입력에 얼마를 더하는지부터 보면 감이 잡힙니다.

요청 한 번에 늘어난 토큰은 얼마일까요?

결론부터 말하면, 이 측정에서는 CLAUDE.md가 MCP 서버보다 훨씬 큰 몫을 차지했습니다. 조건마다 새 임시 폴더에서 3번씩 재서 중앙값을 냈고, 증가량은 빈 프로젝트와 비교한 값입니다.

조건입력 토큰(중앙값)빈 프로젝트 대비
빈 프로젝트30,715+0
CLAUDE.md 한국어 1,671자32,332+1,617
같은 내용 영어 CLAUDE.md 2,904자31,842+1,127
CLAUDE.md 한국어 4배 6,690자36,789+6,074
MCP 서버 1개(filesystem)30,922+207
MCP 서버 3개(filesystem·memory·sequential-thinking)31,098+383

세 번 잰 값끼리는 몇 토큰 차이밖에 나지 않았습니다. 그래서 조건 사이의 차이를 비교하기에는 충분히 안정적인 편이죠. 가장 크게 늘어난 조건은 한국어 CLAUDE.md를 4배로 늘린 경우(+6,074)였고, MCP 서버 3개는 +383이었습니다.

CLAUDE.md 한국어·영어·4배 길이와 MCP 서버 1개·3개가 빈 프로젝트보다 늘린 입력 토큰을 비교한 막대그래프
조건별로 직접 잰 입력 토큰 증가량(3회 중앙값)
도식출처: Claude Code 입력 토큰 측정

그럼 CLAUDE.md는 어떤 언어로, 얼마나 길게 쓰느냐에 따라 얼마나 달라졌을까요?

함께 읽을 글

CLAUDE.md 토큰, 한국어와 영어는 얼마나 다를까요?

측정에 쓴 CLAUDE.md는 1인 예약 서비스를 가정한 안내서입니다. 기술 스택, 자주 쓰는 명령, 폴더 구조, 코드 규칙, 하지 말아야 할 것, 작업 순서를 담았죠. 같은 내용을 한국어와 영어로 각각 53줄씩 썼습니다.

  • 한국어 1,671자: 1,617토큰 증가, 1,000자당 약 968토큰
  • 영어 2,904자: 1,127토큰 증가, 1,000자당 약 388토큰
  • 같은 내용일 때 한국어가 더한 토큰은 영어의 1.4배

글자 수는 한국어가 더 적은데 토큰은 더 많이 잡혔습니다. 다만 이 측정은 파일 한 쌍, 모델 하나로 잰 결과라서 차이의 원인까지는 가를 수 없습니다. 그렇다면 CLAUDE.md를 영어로 바꿔야 할까요? 혼자 읽고 고치기에 영어가 불편하다면, 언어를 바꾸기보다 길이를 줄이는 쪽이 먼저라고 보는 편이 합리적입니다.

길이의 영향은 더 분명했습니다. 같은 한국어 글을 네 번 이어 붙여 6,690자로 만들자 6,074토큰이 늘었고, 이는 1배일 때의 3.8배였어요. 조건 하나로 길이와 토큰이 늘 같은 비율로 움직인다고 단정할 수는 없지만, 파일이 길어진 만큼 입력도 커졌다는 점은 확인됩니다.

MCP 토큰은 서버마다 얼마나 늘까요?

MCP 서버는 생각보다 가볍게 잡혔습니다. filesystem 서버 1개는 207토큰, 서버 3개는 383토큰을 늘렸고, 3개일 때 서버 하나당 평균은 약 128토큰이었습니다. 3개를 붙인 세션의 도구 목록에는 MCP 도구 24개가 들어 있었죠.

컨텍스트 창 문서에서 확인되는 시작 컨텍스트 항목은 CLAUDE.md, 자동 메모리, MCP 도구 이름, 스킬 설명입니다. 이 측정으로 증가량의 세부 구성이나 원인은 분리하지 못했습니다. 서버 수와 도구 수도 함께 늘었기 때문에, 도구 하나가 몇 토큰인지, 서버마다 무엇이 크기를 정하는지 역시 이 측정만으로는 가를 수 없습니다. 자주 쓰는 서버가 따로 있다면 직접 붙인 상태에서 아래의 확인 방법으로 재 보세요.

컨텍스트 창 안에 CLAUDE.md 문서 전체가 두껍게 쌓이고, 시작 시 불러오는 MCP 도구 이름을 작은 꼬리표로 표현한 개념 삽화
CLAUDE.md는 내용 전체가, MCP는 도구 이름이 시작 컨텍스트에 들어간다는 문서 설명을 그린 개념 그림입니다. MCP가 차지하는 전체 비용을 나눠 그린 그림은 아닙니다.

그렇다면 CLAUDE.md는 정확히 언제, 어떤 파일까지 컨텍스트에 들어갈까요?

CLAUDE.md는 언제 컨텍스트에 들어갈까요?

메모리 문서에 따르면 세션은 매번 빈 컨텍스트로 시작하고, CLAUDE.md는 세션이 시작될 때 읽힙니다. 이때 Claude는 이 파일을 강제 설정이 아니라 컨텍스트로 다룹니다. 작업 폴더와 그 위 폴더들의 CLAUDE.md·CLAUDE.local.md는 실행할 때 모두 이어 붙여 들어가요.

하위 폴더의 CLAUDE.md는 다릅니다. Claude가 그 폴더 안의 다른 파일을 읽거나 쓰거나 고칠 때 한 번 불러옵니다. 그리고 @path/to/import로 가져온 파일은 그것을 가져오는 CLAUDE.md와 함께 들어가기 때문에, 나눠 써도 컨텍스트 비용은 줄지 않습니다. 반대로 블록 단위 HTML 주석은 컨텍스트에 넣기 전에 지워집니다.

상위 폴더 CLAUDE.md, 하위 폴더 CLAUDE.md, 가져온 파일, 경로 지정 규칙, MCP 도구 이름, HTML 주석이 컨텍스트에 들어가는 시점을 비교한 표
공식 문서 기준으로 항목별 로드 시점을 정리했습니다.
도식출처: 근거를 바탕으로 코드가 그린 도식

내 세션의 토큰은 어떻게 확인할까요?

측정값은 한 환경의 결과일 뿐이라, 자기 프로젝트는 직접 확인하는 편이 정확합니다. 세션 안에서 아래 명령을 써 보세요.

  • /context: 카테고리별 사용량과 최적화 제안을 실시간으로 보여 줍니다. 어떤 CLAUDE.md와 자동 메모리 파일이 불러와졌는지는 Memory files 목록에서 확인합니다.
  • /memory: 불러온 메모리 파일을 열어 바로 고칩니다.
  • /usage: 맨 위 Session 블록에 현재 세션의 토큰 통계가 나옵니다. 다만 이 금액은 API 사용자용이고, Pro·Max 구독자에게는 청구 기준이 아닙니다.

Pro, Max, Team, Enterprise 요금제라면 /usage에 사용량 내역도 함께 나옵니다. 여기서는 MCP 서버별 비중을 볼 수 있고, Trim ~/code/api/CLAUDE.md · 49k tokens per request 같은 줄로 줄일 곳을 추천받기도 하죠. Claude Code v2.1.305 이상에서는 하단에 f to fix 안내가 보일 때 f를 누르면, Claude Code가 처리할 수 있는 추천을 대신 진행합니다.

이 글의 측정도 같은 방식으로 따라 할 수 있습니다. 조건마다 새 임시 프로젝트 폴더를 만들고 아래 명령을 한 턴 실행하되, 다음 조건을 함께 맞춥니다.

  1. 결과를 JSON으로 받도록 출력 형식을 지정합니다. 정확한 옵션 이름은 claude --help에서 확인하는 편이 좋습니다.
  2. --setting-sources project를 붙여 사용자 설정·플러그인·훅을 불러오지 않습니다.
  3. MCP 조건에서는 그 조건에 쓸 서버만 적은 MCP 구성을 지정하고 --strict-mcp-config를 붙여 다른 서버가 섞이지 않게 합니다. MCP가 없는 조건도 같은 옵션으로 서버가 붙지 않게 맞추는 편이 좋습니다.
  4. 조건마다 3번씩, 조건을 번갈아 가며 실행합니다. 기본 도구 목록이 다 불러와지기 전에 시작된 회차(내장 도구 수가 적은 회차)는 뺍니다.
  5. 회차마다 결과 JSON의 입력 토큰(새 입력 + 캐시 쓰기 + 캐시 읽기)을 더하고, 3회 값의 중앙값을 그 조건의 값으로 씁니다.
bash
claude -p "Reply with only: OK"

CLAUDE.md를 짧게 유지하는 방법

측정에서 가장 크게 움직인 값이 CLAUDE.md였으니, 줄일 곳도 여기서 찾는 편이 효과적입니다. 공식 문서가 권하는 방법을 따라 할 순서대로 정리하면 이렇습니다.

  1. 200줄 아래로 맞춥니다. 문서는 파일 하나당 200줄 이하를 목표로 하라고 권합니다. 파일이 길수록 컨텍스트를 더 쓰고 지시를 덜 따르기 때문입니다.
  2. 일부에만 필요한 지시는 옮깁니다. 특정 파일에만 해당하는 규칙은 .claude/rules/의 경로 지정 규칙으로 옮깁니다. 이 규칙은 맞는 파일을 다룰 때만 불러와집니다. 여러 단계짜리 절차는 스킬로 옮기라고 안내합니다.
  3. 가져오기로 나눴다고 안심하지 않습니다. 앞에서 본 것처럼 가져온 파일도 함께 들어가므로 비용은 그대로입니다.
  4. 사람만 볼 메모는 HTML 주석으로 씁니다. <!-- maintainer notes --> 같은 블록 주석은 컨텍스트 토큰을 쓰지 않습니다. 단, 코드 블록 안의 주석은 남습니다.
  5. 오래되거나 충돌하는 지시를 찾습니다. Claude Code v2.1.283 이상이라면 /doctor prompt-audit으로 점검 보고서와 수정 제안을 받을 수 있습니다. 직접 적용하라고 하기 전에는 파일이 바뀌지 않습니다.
  6. 줄인 뒤 다시 확인합니다. /context에서 Memory files 목록과 사용량이 바뀌었는지 봅니다.

예를 들어 결제 웹훅 규칙처럼 일부 폴더에만 해당하는 내용은 2번 후보입니다. 그런데 주의할 점이 하나 있어요. 경로 지정 규칙과 하위 폴더 CLAUDE.md는 대화를 압축하면 나머지 내용과 함께 요약돼 사라집니다. 압축 뒤에도 꼭 지켜야 하는 규칙은 paths: 머리말을 빼거나 프로젝트 루트 CLAUDE.md에 두라고 문서는 안내합니다. 더 많은 절약 방법은 비용 관리 문서에서 볼 수 있습니다.

측정 조건과 한계

수치는 아래 조건에서 잰 값입니다. 자기 환경과 비교할 때 기준으로 삼아 보세요.

항목값
측정 시각2026-10-24 15:43 KST
Claude Code2.1.309
모델claude-opus-5-5
환경darwin arm64 · Node.js v22.23.1
설정사용자 설정·플러그인·훅을 불러오지 않음(--setting-sources project), 조건에 적은 MCP 서버만 연결(--strict-mcp-config)
MCP 서버@modelcontextprotocol/server-filesystem, server-memory, server-sequential-thinking 각 1.0.0, npm으로 설치해 node로 실행
반복조건마다 3번씩 번갈아 재고 중앙값 사용

기본 도구 목록이 다 불러와지기 전에 시작된 회차는 빼기로 했고, 이번 측정에서 뺀 회차는 없었습니다. 그렇다면 내 세션도 30,715토큰에서 시작할까요? 꼭 그렇지는 않습니다. 이 측정은 사용자 설정을 끈 상태였고, 문서도 출력 스타일이나 --append-system-prompt 같은 자기 설정이 시작 컨텍스트에 더해질 수 있다고 설명합니다. 계정, 버전, 설정에 따라 기본값이 달라질 수 있으니 숫자 자체보다 조건 사이의 차이를 참고하고, 자기 프로젝트는 /context로 확인하는 편이 안전합니다.

참고 자료