AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

두 가지 인상 깊은 커스텀 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 기반의 유연한 검색 구현

- execpromisify를 사용한 비동기 터미널 명령어 처리

섹션별 세부 요약

  1. list_repo_locations 도구 구현
  • 키워드 매핑 배열(workRepoMap, personalRepoMap)을 사용해 저장소 경로 검색
  • levenshteinDistance 함수로 부분 일치 및 퍼지 매칭 수행 (DISTANCE_THRESHOLD = 3)
  • 검색 실패 시 유사 키워드 추천(예: No exact matches found for 'bug'... Did you mean: 'bugs'...?)
  1. Levenshtein Distance 알고리즘
  • 문자열 간 편집 거리(삽입, 삭제, 치환) 계산
  • matrix 2차원 배열을 통해 최소 편집 거리 계산 (동적 프로그래밍 활용)
  1. issue_terminal_command 도구 구현
  • READ_ONLY_MODE 활성화 시 허용 명령어(예: ls, git, find) 제한
  • 위험 명령어(예: rm, sudo) 차단 및 30초 타임아웃 보호 기능
  • execPromise를 사용한 비동기 명령어 실행 및 오류 처리
  1. MCP 서버 통합
  • server.setRequestHandler를 통해 도구 등록 (예: list_repo_locations, issue_terminal_command)
  • inputSchema입력 파라미터(keyword, command) 정의 및 검증

결론

- 핵심 팁: 퍼지 매칭 기능은 사용자의 오타를 자연스럽게 처리해 AI와의 인터랙션을 향상시키며, 터미널 도구의 안전 모드는 시스템 오류를 방지합니다.

- 구현 권장사항: ALLOWED_COMMANDSDANGEROUS_COMMANDS 목록은 프로젝트 환경에 맞게 커스터마이징 필요.