1243 words
6 minutes
MCP 도구가 너무 많을 때: tool-filter-mcp와 Claude Code 빌트인 필터링 비교

MCP 서버를 여러 개 연결하다 보면 도구 수가 순식간에 불어납니다. Atlassian MCP 하나만 연결해도 72개 도구가 딸려오거든요. 여기에 Perplexity, Slack, Plane 같은 MCP를 추가하면 금세 100개를 넘깁니다. Antigravity처럼 100개 tool 제한이 있는 환경에서는 Atlassian 하나를 켜는 순간 다른 MCP를 붙일 수조차 없게 됩니다.

이 문제를 푸는 방법은 크게 세 가지입니다. Claude Code에 내장된 기능 두 가지와, 서버 앞에 proxy를 두는 tool-filter-mcp입니다. 이 글에서는 각각의 동작 방식과 언제 어떤 방법이 맞는지를 정리합니다.

Claude Code에는 이미 MCP Tool Search라는 기능이 내장되어 있습니다. MCP 도구 설명이 context window의 일정 비율을 넘으면 자동으로 활성화되는데, 모든 도구를 미리 로드하지 않고 필요할 때만 검색해서 불러오는 방식입니다.

Terminal window
# 기본값: context window의 10% 초과 시 자동 활성화
ENABLE_TOOL_SEARCH=auto claude
# 더 공격적으로: 5% 초과 시 활성화
ENABLE_TOOL_SEARCH=auto:5 claude
# 항상 켜기
ENABLE_TOOL_SEARCH=true claude

context token 절약 측면에서는 효과적입니다. 다만 Tool Search는 context에 로드되는 도구 설명을 줄여줄 뿐, 도구 수 자체를 줄이지는 않습니다. Antigravity의 100개 제한 같은 하드 리밋 앞에서는 소용이 없다는 뜻입니다.

Claude Code 빌트인: settings.json deny#

특정 도구 몇 개만 차단하고 싶다면 settings.json의 deny 권한이 가장 간단합니다.

{
"permissions": {
"deny": [
"mcp__perplexity__perplexity_ask",
"mcp__atlassian__unused_tool_name"
]
}
}

예를 들어 Perplexity MCP에서 크레딧이 많이 나가는 perplexity_ask는 차단하고 perplexity_search만 허용하고 싶다면, 위처럼 한 줄만 추가하면 됩니다. 도구가 2-3개뿐인 MCP에서 하나만 빼는 용도로는 이 방법이 최선입니다.

tool-filter-mcp: 대량 필터링이 필요할 때#

Atlassian처럼 72개 도구 중 대부분을 걸러내야 하는 경우에는 respawn-app/tool-filter-mcp가 효과적입니다. upstream MCP 서버 앞에 proxy를 두고 regex 기반 deny list로 도구를 필터링하는 구조거든요.

사용 가능한 도구 먼저 확인하기#

Terminal window
npx @respawn-app/tool-filter-mcp \
--upstream http://localhost:3000/sse \
--list-tools --format names

--format table로 하면 설명까지 볼 수 있고, --format names는 콤마 구분 목록으로 뽑아줘서 deny 패턴을 만들기 편합니다.

HTTP/SSE upstream 설정#

.mcp.json에 아래처럼 추가합니다.

{
"mcpServers": {
"atlassian-filtered": {
"command": "npx",
"args": [
"@respawn-app/tool-filter-mcp",
"--upstream", "http://localhost:3000/sse",
"--deny", "pattern1,pattern2,.*_file$"
],
"type": "stdio"
}
}
}

stdio upstream 설정#

upstream MCP가 npx 기반 stdio 서버라면 --upstream-stdio를 사용합니다.

{
"mcpServers": {
"atlassian-filtered": {
"command": "npx",
"args": [
"@respawn-app/tool-filter-mcp",
"--upstream-stdio",
"--deny", "unused_tool_pattern",
"--",
"npx", "@anthropic/atlassian-mcp"
],
"type": "stdio"
}
}
}

-- 뒤에 원래 MCP 서버의 실행 명령어를 그대로 넣으면 됩니다.

상황별 선택 기준#

지금까지 살펴본 세 가지 방법을 상황별로 정리하면 다음과 같습니다.

상황추천 방법
특정 도구 몇 개만 차단settings.json deny
context token 절약MCP Tool Search
도구 수 자체를 대량으로 줄여야 함tool-filter-mcp
100개 같은 하드 리밋 회피tool-filter-mcp

다만 이 표에는 전제가 하나 붙습니다. 앞의 두 방법이 Claude Code에서만 동작한다는 점입니다.

다른 MCP 클라이언트라면 선택지가 하나뿐입니다#

settings.json deny와 MCP Tool Search는 Claude Code 전용 기능입니다. OpenAI Codex, Cursor, Windsurf, Claude Desktop 같은 다른 MCP 클라이언트에는 이런 빌트인 필터링이 없습니다.

클라이언트빌트인 도구 필터링tool-filter-mcp 필요 여부
Claude Codesettings.json deny, Tool Search대량 필터링 아니면 불필요
OpenAI Codex없음필요
Cursor없음필요
Windsurf없음필요
Claude Desktop없음필요

MCP 프로토콜 자체가 서버가 제공하는 도구를 클라이언트가 전부 받는 구조입니다. 클라이언트 쪽에서 필터링을 지원하지 않는다면, 서버 앞에 proxy를 두는 것이 유일한 방법입니다.

여러 MCP 클라이언트를 동시에 사용한다면 오히려 tool-filter-mcp로 통일하는 편이 관리하기 낫습니다. 클라이언트마다 각각의 설정 방식을 외울 필요 없이 MCP 서버 설정 한 곳에서 필터링을 관리할 수 있고요.

[Atlassian MCP] → [tool-filter-mcp] → Claude Code
→ Codex
→ Cursor

필터링된 MCP 서버를 각 클라이언트에 동일하게 연결하면, 설정 한 번으로 모든 클라이언트에서 같은 도구 세트를 사용할 수 있습니다.

MCP 생태계가 커질수록 도구 수 관리는 점점 중요한 문제가 될 것입니다. 지금으로서는 Claude Code의 빌트인 기능과 tool-filter-mcp를 상황에 맞게 조합하는 것이 가장 현실적인 접근입니다.

MCP 도구가 너무 많을 때: tool-filter-mcp와 Claude Code 빌트인 필터링 비교
https://monologg.kr/posts/2026/03/16/2026-03-16-mcp-tool-overload-filtering-strategies/
Author
Jangwon Park
Published at
2026-03-16
License
CC BY-NC-SA 4.0