피드로 돌아가기
The Generic MCP Toolbox: Tools That Register Themselves
Dev.toDev.to
Backend

의존성 기반 자동 등록 구조를 통한 MCP Toolbox의 동적 가용성 확보

The Generic MCP Toolbox: Tools That Register Themselves

Nasrul Hazim Bin Mohamad2026년 6월 19일7intermediate

Context

다수의 Laravel 앱에 MCP 서버를 구축하며 반복 발생하는 공통 Ops 도구의 중복 구현 문제 발생. 외부 패키지 의존성에 따라 도구의 가용성이 결정되는 환경에서, 미설치 패키지의 도구가 노출될 시 발생하는 Runtime Error 및 LLM Agent의 잘못된 도구 호출로 인한 시스템 불안정성 식별.

Technical Solution

  • isAvailable() 정적 메서드를 통한 패키지 및 테이블 존재 여부 기반의 Opt-in 등록 메커니즘 설계
  • ToolRegistry 클래스에 등록 로직을 단일화하여 서버 부팅 시 가용 도구만 필터링하는 Single Source of Truth 구조 채택
  • handle() 내부의 2차 검증 로직을 통해 Registry 우회 호출 시에도 Fatal Error를 방지하는 Belt and Suspenders 전략 적용
  • configuredAbility 추상화를 통해 패키지의 공통 권한 요구사항을 호스트 앱의 개별 Permission 체계로 매핑하는 간접 참조 구조 설계
  • #[IsReadOnly] 태그 및 Invokable Action 패턴을 도입하여 MCP 인터페이스와 실제 비즈니스 상태 변경 로직을 완전히 분리

- 외부 의존성 기반의 플러그인 구조 설계 시, 인터페이스 노출 전 `class_exists` 등의 런타임 검증 단계 포함 여부 검토 - 프레임워크 공통 모듈 개발 시 하드코딩된 권한 명칭 대신 설정 파일(Config)을 통한 권한 매핑 구조 적용 - 외부 인터페이스(API/MCP)와 핵심 비즈니스 로직(Action)을 분리하여 테스트 가능성과 재사용성 확보

원문 읽기