사용하지 않는 MCP 도구가 비용을 발생시킬까요?
요약
MCP(Model Context Protocol) 서버의 개수가 에이전트 운영 비용에 미치는 영향을 실험한 사례 연구입니다. 사용하지 않는 도구가 포함되어 있어도 모델이 도구 스키마를 인지해야 하므로 입력 토큰과 비용이 증가함을 보여줍니다.
핵심 포인트
- 연결된 MCP 서버가 많을수록 입력 토큰 사용량이 증가함
- 도구를 실제로 사용하지 않더라도 스키마 정보로 인해 비용 발생
- 실험 결과, 추가 서버 연결 시 질문당 비용이 약 28% 상승함
- 에이전트 설계 시 불필요한 MCP 서버 연결을 지양해야 함
저의 "MCP 에이전트 구축 및 테스트" 시리즈 중 짧은 사례 연구입니다. 이 글은 단독으로 읽을 수 있지만, 그 이면에 담긴 방법론은 https://dev.to/langensjonathan/the-parameters-that-actually-matter-when-youre-tuning-an-ai-agent-2agd에 설명되어 있습니다.
요약 (TL;DR): 저는 단 한 가지 요소, 즉 연결된 MCP 서버의 개수만 제외하고는 완전히 동일한 두 에이전트를 대상으로 정확히 같은 질문을 던져 벤치마킹(benchmarking)을 수행했습니다. 두 에이전트 모두 정답을 맞혔고, 동일한 단일 도구(tool)를 호출했습니다. 하지만 더 많은 MCP 서버가 연결된 에이전트는 질문당 비용이 28% 더 높게 나타났습니다. 이는 모델이 해당 도구들을 실제로 사용하든 안 하든, 매 호출마다 추가적인 도구 스키마(tool schemas)에 대해 안내받아야 하기 때문입니다.
설정 (The setup)
MAVERIK는 저의 오픈 소스(open-source) MCP 테스트 벤치(test bench)입니다. 통과 기준이 포함된 질문 세트를 정의하고, 하나 이상의 에이전트 구성에 대해 실행한 뒤, 그 결과를 수치로 비교합니다. 이 포스트는 이를 활용한 의도적으로 아주 작은 실험 중 하나입니다. 에이전트의 단 한 가지 요소만 변경하고 다른 모든 것을 고정시킨 채, 그 하나의 변화가 수치에 어떤 영향을 미치는지 확인하는 것입니다.
저는 작은 "GitHub 요약기(GitHub summarizer)" 에이전트를 가지고 있습니다. 하나의 시스템 프롬프트(system prompt)와 하나의 작업, 즉 GitHub MCP 서버를 호출하여 제 GitHub 계정에 관한 질문에 답하는 역할을 합니다. 저는 이 에이전트의 구성을 복제하였고(MAVERIK는 동일한 모델, 동일한 프롬프트 등 동일한 모든 것을 유지하는 기능을 직접 지원합니다), 복제본의 필드 하나를 변경했습니다. 바로 연결된 MCP 서버 세트인데, 여기에 deepwiki, microsoft-learn, context7을 추가했습니다. 제가 던지려 했던 질문에는 두 에이전트 모두 이 세 가지 서버가 전혀 필요하지 않았습니다. 이 서버들은 이 에이전트의 "모든 것을 다 갖춘(kitchen sink)" 버전이 범용적인 사용을 위해 몇 차례의 세션을 거치며 축적해온 것들이었습니다.
그 후 저는 가장 단순한 형태의 테스트 스위트(test suite)를 작성했습니다. 질문은 단 하나였습니다:
"내 저장소(repositories)는 몇 개인가요?"
답변에 올바른 개수가 포함되어 있는지 확인하는 contains 기준을 사용하여 테스트를 진행했습니다. 판사 모델(judge model)도, 주관성도 없습니다. 정답을 말하거나, 아니면 틀리거나 둘 중 하나입니다. 저는 두 에이전트를 대상으로 각각 2회씩 테스트를 실행했으며, 두 경우 모두 동일한 모델(claude-haiku)을 사용했고, MAVERIK의 에이전트 비교 (Agent Comparison) 보고서를 추출했습니다.
에이전트 A — github 전용 | 에이전트 B — github + MCP 서버 3개 추가 | |
|---|---|---|
| 연결된 MCP 서버 수 | 1 | 4 |
| ... | ||
| (제 계산이 맞는지 확인하고 싶다면, 보고서의 내보내기(export) 버튼에서 바로 추출한 원본 CSV 파일이 이 포스트 하단에 있습니다.) |
실제로 변화한 것들
두 번의 반복 실행 모두에서 세 가지 수치가 일관되게 함께 움직였습니다:
- 입력 토큰 (Input tokens): +29.1% (16,628 → 21,467) — 각 에이전트의 두 번의 반복 실행에서 정확히 동일한 숫자가 나왔습니다. 이것은 노이즈가 아닙니다. 어떤 도구가 실제로 호출되느냐와 상관없이, 도구 카탈로그(tool catalog)가 매 요청마다 결정론적으로 직렬화(serialized)되어 포함된다는 뜻입니다.
- 피크 컨텍스트 토큰 (Peak context tokens): +28.6% (8,494 → 10,919.5) — 피크 컨텍스트 역시 동일한 입력 페이로드(input payload)에 의해 지배되므로 결과는 같습니다.
- 질문당 비용 (Cost per question): +28.1% ($0.034636 → $0.044379) — 출력 토큰은 거의 변하지 않았고(138 vs 144.5), 두 에이전트 모두 유료 도구를 호출하지 않았기 때문에 입력 토큰의 증가와 거의 1:1로 비례하여 움직였습니다. 사용하지 않은 세 개의 MCP 서버는 공짜가 아니었습니다. 모델이 해당 도구를 사용했는지 여부와 관계없이 모든 요청마다 비용이 청구되었습니다.
다른 누군가가 말하기 전에 제가 미리 주의사항을 하나 말씀드리고 싶습니다. 28%라는 수치는 이 작업이 얼마나 작은 작업인지에 따른 결과입니다. 세금(tax) 자체는 절대적입니다. 매 요청마다 약 4,839개의 추가 입력 토큰이 발생합니다. 따라서 실제 컨텍스트가 50k 토큰인 작업이라면 *백분율(percentage)*은 훨씬 작아 보일 것입니다. 하지만 그것은 잘못된 위안입니다. 절대적인 세금은 이 에이전트가 수행하는 모든 실행의 모든 반복 과정에서 영원히 지불해야 하기 때문입니다. 짧은 작업은 세금이 가장 눈에 띄는 곳이지, 세금이 가장 심한 곳은 아닙니다.
움직이지 않은 것들 — 그리고 왜 그 부분이 더 흥미로운가
- Pass rate (통과율): 동일함 (100%/100%). 추가된 도구들이 모델을 혼란스럽게 하여 더 나쁜 답변을 내놓게 만들지는 않았습니다.
- Tool calls (도구 호출) 및 iterations (반복): 동일함 (1회 호출, 2회 반복, 두 번 모두 동일한 도구 —
get_me사용). 모델은
그 안에는 숨겨진 설계상의 결과(design consequence)도 존재합니다. 에이전트가 사용할 수 있는 도구를 제한하는 것이 비용을 절감하는 효과를 얻으려면, 호스트가 직렬화(serialization) 전에 해당 제한을 강제해야 합니다. 즉, 허용되지 않은 도구는 모델이 호출을 시도할 때 거부되는 것이 아니라, 요청 자체에서 완전히 제외되어야 합니다. 만약 호출 시점에 제한을 강제한다면, 에이전트가 애초에 접근할 권한이 없었던 도구들에 대해서도 계속해서 토큰 비용(token tax)을 지불하게 됩니다. 동일한 가지치기(trimming) 작업은 보안 측면에서의 실제 공격 표면(attack surface)도 줄여줍니다. 컨텍스트(context) 내에 포함된 사용되지 않는 모든 도구 스키마(tool schema)는 프롬프트 인젝션(prompt injection)이 모델을 유도하려고 시도할 수 있는 또 하나의 대상이 되기 때문입니다.
이를 실무적으로 적용하면 다음과 같습니다: MCP 서버를 대상으로 에이전트를 구축할 때, "유용할지도 모르니 일단 전부 연결하자"라는 방식을 기본값으로 삼지 마세요. 각 에이전트에게는 실제로 업무에 필요한 서버만 부여하십시오. 그리고 더 넓은 도구 세트가 그 오버헤드(overhead)를 감수할 만큼 가치가 있는지 확실하지 않다면, 추측하는 대신 측정하십시오. 이는 에이전트 설정을 두 줄 복제하고 단 하나의 질문으로 구성된 테스트 스위트(test suite)를 만드는 것만으로 가능하며, 5분 뒤면 CSV 파일에 답이 나와 있을 것입니다.
재현 방법
이 모든 과정은 다음과 같습니다: 에이전트 설정을 복제하고, contains 기준을 가진 단일 질문 테스트 스위트를 작성한 뒤, 두 에이전트를 대상으로 몇 번 실행합니다. 그 다음 내장된 Agent Comparison (에이전트 비교) 보고서를 열거나(또는 위에서 제가 했던 것처럼 CSV로 내보냅니다). 만약 여러분의 MCP 서버나 에이전트 설정을 평가하고 싶다면, 이 프로젝트는 오픈 소스로 공개되어 있습니다 — https://github.com/langens-jonathan/maverik.
Raw CSV (Reporting → Agent Comparison → Export → To CSV)
suiteId,agentId,timestamp,sourceRunId,passRate,avgDurationMs,avgInputTokens,avgOutputTokens,avgToolCalls,avgPeakContextTokens,tokenCost,toolCost,overallCost
github-summarizer,github-test-agent,2026-07-26T10:07:18.9720785+00:00,github-summarizer-20260726-100718,1,3659,16628,138,1,8494,0.034636,0,0.034636
github-summarizer,github-test-agent-all-mcp-servers,2026-07-26T10:07:18.9720785+00:00,github-summarizer-20260726-100718,1,3061,21467,144.5,1,10919.5,0.044379,0,0.044379
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기