피드로 돌아가기
MCP Tool Hooks in Claude Code
Dev.toDev.to
AI/ML

Subprocess 제거 및 RPC 직접 호출 기반 MCP Tool Hooks 도입으로 오버헤드 최소화

MCP Tool Hooks in Claude Code

speedy_devv2026년 4월 24일8intermediate

Context

기존 Hooks는 Shell Script 기반의 Subprocess 실행 방식으로 인해 호출마다 Transport 연결 및 Auth 처리 오버헤드가 발생함. 특히 파일 쓰기 시마다 발생하는 보안 검사 같은 빈번한 작업에서 누적 지연 시간이 시스템 병목 지점으로 작용함.

Technical Solution

  • mcp_tool 타입을 신설하여 기존 실행 중인 MCP Server와 direct RPC Connection을 통한 통신 구조 설계
  • Subprocess 생성 및 Shell 환경 변수 의존성을 완전히 제거하여 PATH 설정 오류나 외부 의존성(jq 등) 문제 해결
  • Stateful Server 활용 구조를 통해 매 호출 시 재파싱하던 설정값(tsconfig.json 등)을 메모리에 캐싱하여 처리 속도 향상
  • ${field.path} Dot-notation 기반의 Event JSON 데이터 바인딩으로 유연한 입력 값 전달 메커니즘 구현
  • if 조건절에 Permission-rule 구문을 도입하여 특정 파일 확장자에 대해서만 Hook이 실행되도록 필터링 최적화
  • updatedMCPToolOutput 필드를 통해 LLM이 인지하기 전 MCP Server 단에서 출력 결과를 후처리하는 파이프라인 구축

- 빈번한 호출이 발생하는 Hook의 경우 Subprocess 방식 대신 RPC 기반의 `mcp_tool` 적용 검토 - Server-side Caching이 가능한 Stateful Server를 구축하여 반복적인 I/O 및 파싱 비용 절감 - 무한 루프 방지를 위해 Stop Hook 설계 시 `stop_hook_active` 필드 검증 로직 필수 포함 - Non-blocking 에러로 인한 침묵 실패를 방지하기 위해 MCP Server 설정 명칭의 정확한 일치 여부 확인

원문 읽기