두 가지 인상 깊은 커스텀 MCP 도구의 구현
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상자: MCP(Machine Communication Protocol) 서버와 Claude AI를 활용하는 소프트웨어 개발자
- 난이도: 중급 이상 (TypeScript, NLP 알고리즘, 터미널 명령어 처리 이해 필요)
핵심 요약
list_repo_locations
도구:
- 키워드로 저장소 경로를 부분 일치 및 퍼지 매칭(Levenshtein Distance 기반)으로 검색
- keywords
배열과 repoPath
매핑 구조로 환경 구분(워크, 개인) 가능
issue_terminal_command
도구:
- 터미널 명령어 실행 시 안전 모드(READ_ONLY_MODE)와 허용 명령어 목록(ALLOWED_COMMANDS) 제어
- 위험 명령어(rm
, sudo
) 차단 및 타임아웃 보호 기능 포함
- 핵심 기술:
- levenshteinDistance
함수 활용, NLP 기반의 유연한 검색 구현
- exec
및 promisify
를 사용한 비동기 터미널 명령어 처리
섹션별 세부 요약
list_repo_locations
도구 구현
- 키워드 매핑 배열(
workRepoMap
,personalRepoMap
)을 사용해 저장소 경로 검색 levenshteinDistance
함수로 부분 일치 및 퍼지 매칭 수행 (DISTANCE_THRESHOLD = 3)- 검색 실패 시 유사 키워드 추천(예:
No exact matches found for 'bug'... Did you mean: 'bugs'...?
)
- Levenshtein Distance 알고리즘
- 문자열 간 편집 거리(삽입, 삭제, 치환) 계산
matrix
2차원 배열을 통해 최소 편집 거리 계산 (동적 프로그래밍 활용)
issue_terminal_command
도구 구현
READ_ONLY_MODE
활성화 시 허용 명령어(예:ls
,git
,find
) 제한- 위험 명령어(예:
rm
,sudo
) 차단 및 30초 타임아웃 보호 기능 execPromise
를 사용한 비동기 명령어 실행 및 오류 처리
- MCP 서버 통합
server.setRequestHandler
를 통해 도구 등록 (예:list_repo_locations
,issue_terminal_command
)inputSchema
로 입력 파라미터(keyword, command) 정의 및 검증
결론
- 핵심 팁: 퍼지 매칭 기능은 사용자의 오타를 자연스럽게 처리해 AI와의 인터랙션을 향상시키며, 터미널 도구의 안전 모드는 시스템 오류를 방지합니다.
- 구현 권장사항: ALLOWED_COMMANDS
와 DANGEROUS_COMMANDS
목록은 프로젝트 환경에 맞게 커스터마이징 필요.