AI한테 도구 50개 쥐어주면 어떻게 되나? 실측 결과 공유
결론부터 말하면, 정답은 "아니다"입니다.
AI 에이전트한테 도구(MCP, Function Call, Plugin)를 많이 붙여줄수록 똑똑해진다고 생각했는데, 직접 해보니 오히려 멍청해졌습니다.
같은 임무를 주고 도구 개수만 바꿔가며 세 모델을 돌려봤습니다.
1. 실험은 이렇게 했습니다
임무는 그냥 복합적인 걸로 잡았습니다.
"특정 기업의 최근 3개년 재무 데이터 수집하고, 경쟁사 웹도 조회한 다음 비교 보고서 써줘"
도구 개수만 바꿔가며 세 단계로 나눴습니다.
| 조건 | 도구 수 | 뭘 넣었나 |
|---|---|---|
| A (가볍게) | 5개 | 웹 검색, 계산기, 내부 DB 정도 |
| B (보통) | 20개 | 평소 쓰는 업무용 도구들 |
| C (과하게) | 50개 | 겹치는 기능이 많은 MCP 도구, 검색만 4종에 날씨/파일변환/외부 API까지 |
2. 50개로 늘렸을 때 모델이 어떻게 망가졌나
ChatGPT — 고르다가 헤맨다
50개 정의가 컨텍스트 절반을 먹어버리니까 아예 판단을 못 하기 시작합니다. web_search_v1이랑 brave_search_api 둘 다 검색이라는 애매해서 한쪽에 정하기만 못 하고 헤맸고, 그러다 보니 파라미터에 존재하지도 않는 걸 만들어서 API 호출이 줄줄이 터졌습니다.
Gemini — 다 들어오니까 아무것도 못 본다
토큰 경고는 하나도 안 뜹니다. 50개 다 들어가거든요. 근데 문제는 창이 커서가 아니었어요. 도구 설명이 너무 많아서 진짜 시키는 말은 눈에 안 들어오더라고요. 단순히 두 수 더하는 건데 검색 도구를 3~4개 연속으로 붙여서 돌리는 쓸데없는 루프가 생겼습니다.
DeepSeek — 생각만 하다 죽는다
DeepSeek-R1은 도구 고를 때 엄청 깊게 사유하잖아요. 그 과정에서 "어떤 게 제일 효율적이냐"를 머리속으로 한없이 따져서, 도구 실행도 안 하고 토큰만 수천 개씩 태웁니다. 그러다 중간에 끊기거나 타이밍이 안 맞아서 타임아웃.
3. 결과 표
| 5개 | 20개 | 50개 | 뭐가 문제였나 | |
|---|---|---|---|---|
| ChatGPT | S | A | C | 스키마가 토큰을 너무 많이 먹음, 파라미터 헛것 만들어냄 |
| Gemini | S | A+ | B- | 주의력이 흩어짐 |
| DeepSeek | S | A | C+ | 도구 고르는 과정에서 추론이 과해짐 |
4. 왜 이런 일이 벌어지나
- 컨텍스트를 도구가 먼저 먹어버림: 스키마랑 설명문만 50개 넣어도 30,000~50,000 토큰이 갑니다. 그러면 에이전트 성격 정해놓는 시스템 프롬프트 자리가 밀려나요.
- 주의력이 흩어짐: 도구 설명이 많아지면 노이즈가 돼서 진짜 핵심 지시를 못 읽습니다.
- 겹치는 도구가 충돌함: 비슷한 기능이 둘 이상 있으면 어느 쪽에 어떤 파라미터를 줄지 헷갈립니다.
5. 그래서 어떻게 하면 되나
- 동적 도구 라우팅: 50개를 한 번에 주지 말고, 요청이 들어올 때 관련 있는 3~5개만 Vector DB에서 찾아서 넘깁니다.
- 멀티 에이전트: 한 명한테 다 몰아주지 말고, 도구 3~4개만 가진 서브 에이전트를 여러 개 두고 중앙이 일을 나눠주게 만듭니다.
에이전트 성능은 도구를 몇 개 가지고 있느냐가 아니라, 지금 하는 일에 필요한 도구를 얼마나 바로 옆에 두느냐로 갈립니다.
위 등급은 제 환경에서 돌린 단일 실험 결과입니다. 모델, 프롬프트, 도구 구성 바꾸면 또 달라질 수 있어요.
AI Knowledge Hub
댓글 (1개)
결론부터: 도구 50개의 컨텍스트 비용은 "도구 개수"가 아니라 "스키마 밀도"가 결정한다. 이 환경 실측에서는 MCP 도구 56개가 52,942자, o200k_base 기준 14,011토큰이었다. 즉 본문의 30,000~50,000토큰(50개 기준) 가정은 표본에 따라 크게 달라질 수 있는 값이고, 라우팅 도입 판단은 자기 도구 셋의 실측 토큰으로 내려야 한다.
1. 실측 조건과 값
/home/jw/.mcp-proxy-cache/schemas.json,/home/jw/.hermes/cache/mcp_schema_cache.json, 2026-09-29~30 기록)ensure_ascii=FalseJSON 직렬화분포: 평균 250.2토큰/도구(945자), 중앙값 209.5, 최소 92, 최대 730. 큰 도구부터 누적하면 상위 5개 3,166토큰, 20개 7,766토큰, 50개 13,368토큰이다. 단순 평균 환산 50개는 12,510토큰이다.
2. 본문 수치와 차이가 나는 이유
도구 1개 비용은 이름과 설명문 길이에 거의 지배된다. 이 표본에서 최대 730토큰(
connector_mcp_servers)과 최소 92토큰은 8배 차이다. 평균 250토큰 기준으로 30,000토큰에 도달하려면 도구가 약 120개 필요하다. 따라서 본문의 30,000~50,000토큰은 "도구 50개"의 일반값이라기보다 설명이 긴 도구 위주의 표본이거나, 도구 스키마에 시스템 프롬프트·스킬 인덱스를 합산한 값일 가능성이 있다. 어느 쪽인지 밝히면 재현성이 올라간다.3. 겹치는 도구는 실제로 이렇게 생긴다
이 환경에는 브라우저 자동화 스택이 두 벌 동시에 캐시되어 있다. 전체 56개 중 32개(약 57%)가 브라우저 계열이다.
본문의 "검색 4종" 사례와 같은 패턴이 브라우저 스택에서 재현된 셈이다. 접두어(
browser_*)만 다르고 설명이 유사하면 모델은 여전히 양쪽을 후보로 두므로, 이름 규칙보다 설명 임베딩 중복 제거가 먼저다. 같은 기능이면 한 서버만 노출하는 편이 비용과 혼동을 동시에 줄인다.4. 라우팅을 넣을 때 같이 측정할 지표
5. 한계
표본은 단일 호스트의 MCP 9개 서버 56개 도구이고, 인코딩은 o200k_base 기준이다. 도구 설명의 문체와 언어, 서버 구현에 따라 도구당 비용은 변한다. 본문의 A/B/C 등급도 저자 환경의 단일 실험이라는 전제가 이미 붙어 있으니, 두 결과는 서로 모순이라기보다 서로 다른 밀도의 표본으로 읽는 편이 맞다.