Post

[AI 터미널 도구 6~7일차] Claude Code 고급 기능 활용

[AI 터미널 도구 6~7일차] Claude Code 고급 기능 활용

AI CLI book cover

도서명 : AI 자율학습 클로드 코드·코덱스 CLI·제미나이 CLI 완전 활용법

이 포스팅은 길벗 출판사의 코딩 자율학습단 20기 활동의 일환으로, 개인 공부 정리용 포스팅이다.


5장. Claude Code 고급 기능 활용

5.1 - MCP 개요

Claude Code는 코드 작성, 파일 읽기/쓰기, 터미널 명령 실행 같은 기본 기능만 제한적으로 제공한다. 그러나 MCP 서버를 연결하면 Claude Code는 웹 브라우저를 제어하고, Github에서 PR을 생성하고, 데이터베이스를 조회하고 분석하는 등 외부 시스템까지 제어할 수 있다.

MCP란

MCP(Model Context Protocol) 은 Anthropic에서 개발한 표준 프로토콜로, AI모델이 외부 도구 및 시스템과 통신할 때 사용하는 규약이다.
기존방식에서는 GitHub, DB 등등 여러가지 도구마다 연결 방식이 달라서 연결 로직이 복잡해지고, 유지보수 비용 또한 증가하는 문제가 있었다.
이러한 문제를 해결하기 위해 MCP는 외부 도구와의 연결 방식을 하나의 표준 인터페이스로 통합한다. MCP 규격만 익히면 어떤 도구든 동일한 방식으로 Claude Code에 연결할 수 있다.
이때 실제로 도구와 통신을 담당하는 주체가 MCP서버이다. MCP서버 는 MCP 규격을 구현해 Claude와 외부 도구 사이에서 요청과 응답을 중개하는 역할을 수행한다.

MCP서버는 다음 네 가지 기능을 표준화된 형태로 제공한다.

  • 1. 도구 실행 : MCP 서버가 제공하는 명령을 Claude가 직접 호출
    • GitHub MCP : create_pr 명령으로 PR 생성
    • Supabase MCP : query 명령으로 데이터베이스 쿼리 실행
    • Playwright MCP : screenshot 명령으로 웹 페이지 스크린샷 촬영
  • 2. 리소스 접근 : 도구 내부 리소스를 조회할 수 있다.
    • GitHub : 파일, 이슈, PR목록
    • Supabase : 테이블 구조, Row 데이터
  • 3. 프롬프트 템플릿 : 자주 사용하는 요청을 템플릿으로 저장해 단축 실행할 수 있다.
  • 4. 인증 관리 : Claude가 외부 서비스를 사용할 때 필요한 권한을 안전하게 위임할 수 있다.

MCP서버는 유용하지만 활성화할수록 컨텍스트 사용량이 증가하므로 다음 원칙을 따르며 사용하는 것이 효과적이다.

  • 1 - 필요한 MCP 서버만 설치
  • 2 - 프로젝트 단위로 관리
    • 프로젝트용 설정 파일(.claude/mcp.json) 활용
  • 3 - 정기적으로 사용 여부 점검

MCP 서버 설치 및 사용 방법

1. 로컬 실행형 MCP(표준 입출력 방식)

대부분의 MCP는 npx(Node.js .기반) 또는 uvx(파이썬 기반)로 바로 실행할 수 있다.

1
claude mcp add playwright npx @playwright/mcp@latest
  • playwright : MCP 서버 이름
  • npx @playwright/mcp@latest : MCP 서버를 로컬에서 실행하는 명령

Claude Code는 이 명령을 백그라운드에서 실행해 MCP 서버 프로세스를 띄운 뒤 표준 입출력(stdio)으로 통신합니다. Playwright, Supabase(DB MCP) 등 많은 MCP가 이 방식으로 제공됨.

2. 원격 서버형 MCP(HTTP 방식)

HTTP 기반 MCP는 별도의 프로그램을 설치할 필요 없이 URL만 지정하면 사용할 수 있다.

1
2
claude mcp add --transport http github https://api.githubcopilot.com/mcp \
-H "Autorization: Bearer YOUR_GITHUB_PAT"
  • --transport http : 통신 방식을 HTTP로 지정
  • https://api.githubcopilot.com/mcp : 원격 MCP 서버 주소
  • -H : HTTP 헤더 추가 옵션
  • "Autorization: Bearer YOUR_GITHUB_PAT" : GitHub API 인증 정보

원격 서버형 MCP는 설치 부담이 없지만, 서비스 제공자가 중단할 수 있으므로 실무에서는 로컬 실행형 MCP가 더 안정적이다.

Claude Code에서 MCP 서버를 설치하면 설정 값이 특정 파일 위치에 저장된다. 저장 위치에 따라 어떤 프로젝트에서 MCP 서버를 사용할 수 이쓴ㄴ지가 결정되는데, 이 적용 범위를 스코프 라고 한다.

옵션스코프저장 위치설명
없음Local~/.claude.json 내부 프로젝트별 섹션현재 프로젝트에서만 사용, 가장 안전한 기본값
-s projectProject프로젝트 루트의 .mcp.json팀과 공유해야 할 MCP를 저장(비밀번호 제외)
-s userUser~/.claude.json 최상단내 컴퓨터의 모든 프로젝트에서 사용(공통유틸)

동일 이름의 MCP 서버가 여러 스코프에 설치된 경우 Local이 가장 먼저 사용되고, 그다음 Project, User 순으로 우선순위가 적용됨. 작업별로 추천하는 스코프는 다음과 같음.

  • 처음 설치 -> Local
  • 자주 쓰는 MCP 서버 -> User
  • 팀 전체 사용 -> Project(.mcp.json)
1
2
3
4
5
6
# 기본값 : Local
claude mcp add playwright npx @playwright/mcp@latest
# User 스코프 : 내 컴퓨터의 모든 프로젝트에서 사용
claude mcp add -s user playwright npx @playwight/mcp@latest
# Project : 현재 프로젝트의 .mcp.json에 저장(팀 공유)
claude mcp add -s project playwight npx @playwight/mcp@latest

MCP 서버 설치 상태 확인 명령어 : cladue mcp list, /mcp

5.2 - 서브 에이전트로 역할 분리

서브에이전트란

서브에이전트 는 특정 분야에 특화된 AI 전문가 역할을 정의하는 것과 같다. 각 서브에이전트는 자체 시스템 프롬프트, 도구 권한, 독립된 컨텍스트 윈도우를 가지며, Claude가 필요할 때 호출하여 작업을 위임할 수 있다. 예를 들어, 다음과 같은 서브에이전트를 미리 정의할 수 있다.

  • 사용자 프로젝트
    • .claude/agents/code-reviewer.md (코드 리뷰 전문가 설정)
    • .claude/agents/test-writer.md (테스트 작성 전문가 설정)
    • .claude/agents/debugger.md (버그 수정 전문가 설정)

서브에이전트 만들어 사용하기

서브 에이전트 생성

  • 1 - /agents
  • 2 - Create new agent 선택
  • 3 - 서브에이전트를 어디에 저장할지 선택. 보통 Project
    • Project : 해당 프로젝트서만 사용, 팀과 공유할 때 Git으로 함께 관리할 수 있어 가장 권장하는 방식
    • Personal : 내 모든 프로젝트에서 사용할 개인 전용 에이전트, 개인 루틴이나 반복 작업 자동화에 적합
  • 4 - 서브에이전트를 어떻게 만들지 선택. 입문자는 Generate with Claude를 선택
    • Generate with Claude : 역할을 자연어로 입력하면 Claude가 설정 파일을 자동으로 작성
    • Manual configuration : YAML/마크다운 파일을 직접 작성
  • 5 - 서브에이전트가 어떤 일을 할지 자연어로 입력
    • 너는 코드 리뷰 전문가야. 보안과 성능 위주로 점검해줘
  • 6 - 서브에이전트가 사용할 수 있는 도구 목록이 표시. 대부분의 작업을 하려면 All tools를 선택해도 무방
  • 7 - 서브에이전트가 사용할 AI모델 선택.

서브 에이전트 파일 구조

생성된 파일은 YAML 형식의 문법을 따르며, 다음 정보를 포함한다.

  • Name : 서브에이전트 이름(필수)
  • Description : 역할 설명
  • Model : 사용할 AI 모델
  • Tools : 접근할 수 있는 도구 목록
  • Rules : 작업 시 우선순위 또는 스타일 규칙
  • System prompt : 에이전트가 수행할 기본 동작
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---
Name: security-performance-reviewer
Description:
보안 취약점과 성능 최적화를 중점으로 코드 리뷰가 필요할 때 이 에이전트를 사용합니다. 이 에이전트는 주요 코드 변경이 발생했거나 새로운 기능을 구현했을 때, 또는 하나의 논리적 코딩 세션을 마칠 때 선제적으로 호출해야 합니다.
Tools: Read, Grep, Glob
Model: sonnet
---
당신은 보안 취약점 실벽, 리소스 사용 최적화, 프로덕션 수준의 코드 품질 보장을 전문적으로 수행하는 최상급 보안 및 성능 코드 리뷰어입니다. 당신의 핵심 임무는 보안 강화와 성능 최적화라는 두 가지 관점에서 코드를 면밀히 검토하는 것입니다.
## 핵심 역할
당신은 다음 사항을 중점으로 철저한 코드 리뷰를 수행합니다.
**보안 분석(Security Analysis):**
- SQL, XSS, 명령어 인젝션 등 인젝션 취약점 식별
- 인증(Authentication) 및 권한(Authorization) 설계 오류 탐지
.....

서브 에이전트 사용

서브 에이전트는 다음 두 방식으로 사용할 수 있다.

1. 자동 실행(AI 가 판단) AI가 작업의 맥락과 서브에이전트의 Description 필드를 분석해 적절한 서브에이전트를 자동으로 선택한다. 요청이 모호하거나 여러 서브에이전트가 동시에 적합해 보이는 경우, AI가 예상과 다른 서브에이전트를 선택할 수 있다.

2. 명시적 호출

1
2
> code-reviewer 서브에이전트로 payment.js를 분석해줘.
> test-writer를 사용해서 테스트 코드를 만들어줘.

실무에서 명시적 호출을 권장하는 이유는 다음과 같다.

  • 확실성 : 정확히 원하는 서브에이전트가 실행
  • 재현성 : 프로덕션 워크플로에서 예측 가능한 동작을 보장
  • 시간 절약 : 자동 선택 실패로 인한 재시도가 없음
  • 협업 효율 : 팀 프로젝트에서 어떤 서브에이전트로 작업했는지 명확히 기록

5.3 - Hook으로 작업 흐름 자동화하기

Hook 개요

Hook은 Claude Code의 특정 시점(도구 실행 전후, 세션 시작이나 종료 등)에 정의한 셸 명령을 자동으로 실행하는 기능.
Claude Code는 9가지 주요 이벤트를 제공한다. 이 이벤트들은 Hook이 실행되는 기준점으로, 각 이벤트에 Hook을 연결하면 해당 시점에 자동화 작업을 수행할 수 있다.

이벤트발생시점주요 활용
PreToolUse도구 실행 직전위험한 명령 차단, 사전 검증
PostToolUse도구 실행 직후코드 프매팅, 린팅, 테스트 자동화 실행
UserPromptSubmit사용자 프롬프트 제출 후프롬프트 검증, 컨텍스트 추가 로그 기록
NotificationClaude가 알림을 보낼 때데스크톱/Slack 알림 전달
StopClaude 응답 완료 시결과 정리, 후처리 작업
SubagentStop서브에이전트 작업 종료 시결과 로깅, 다음 단계 제안
PreCompact컨텍스트 압축 직전백업, 스냅샷 저장
SessionsStart세션 시작 시환경 초기화, 변수 설정
SessionsEnd세션 종료 시정리, 통계 기록, 로그 아카이브

Hook 설정

Hook 설정은 JSON 형식의 설정 파일에 정의하며, 스코프는 Local, User, Project 세 가지다.
다음 과정은 Slack을 통한 자동 알림 예시이다.

  • slack에서 새 워크스페이스 개설 - 제한된 무료 버전으로 시작
  • api.slack.com/apps 접속 - Create an App - From scratch - Create App
  • 좌측화면 Incoming Webhooks 선택 - Activate Incoming Webhooks On으로 변경
  • Add new Hook - 채널선택 - 허용
  • 생성된 Webhook URL 복사
  • Cursor의 Claude Code에서 /hooks 명령 입력 - Stop 선택
  • Add new hook - Command 입력 필드에 임시로 temp
  • 이후 settings.json 편집
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
   "hooks":{
      "Stop":[
         {
            "matcher":"",
            "hooks":[
               {
                  "type":"command",
                  "command":"이곳에 webhook입력"
               }
            ]
         }
      ]
   }
}

Hook 활용

조합 실행 : 여러 자동화를 한 번에
하나의 이벤트에 여러 명령을 연결해 순서대로 실행할 수 있다. 예를 들어, Claude Code가 PostToolUse 이벤트를 감지하면 먼저 코드 포매팅 명령(prettier –write .)을 실행하고, 그다음 테스트(npm run test)를 수행하도록 설정할 수 있다. 이렇게 하면 Claude가 코드를 수정할 때마다 자동으로 포맷을 맞추고, 테스트가 통과되는지까지 자동으로 확인할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
   "hooks":{
      "PostToolUse":[
         {
            "matcher":"Write|Edit",
            "hooks":[
               {
                  "type":"command",
                  "command":"npx prettier --write \"$CLAUDE_FILE_PATHS\""
               },
               {
                  "type":"command",
                  "command":"npm run test"
               }
            ]
         }
      ]
   }
}

조건부 실행: 특정 도구 또는 경로에만 Hook 작동
특정 파일 경로에 접근했을 때만 Hook을 실행할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
   "hooks":{
      "PostToolUse":[
         {
            "matcher":"test/",
            "hooks":[
               {
                  "type":"command",
                  "command":"npm run test"
               }
            ]
         }
      ]
   }
}

5.4 - Output Style로 맞춤 설정하기

문서 작성, 코드 리뷰, 학습 안내처럼 다른 말투나 역할이 필요한 상황에서는 Output Style을 사용해 Claude Code의 시스템 프롬프트 자체를 교체할 수 있다. 기능은 그대로 유지하면서 소통 방식, 말투, 역할만 전환하는 스위치라고 보면 된다.

기본 제공 Output Style

  • 1 - Default
    • 개발 생산성 중심의 기본 스타일
    • 응답은 간결하고, 수정/생성 작업을 빠르게 수행
    • 일반 개발 작업에서 가장 권장
  • 2 - Explanatory
    • 구현 선택, 코드 패턴, 설계 의도를 상세히 설명
    • 코드 리뷰 또는 학습 과정에서 적합
  • 3 - Learning
    • 페어 프로그래밍 학습 모드
    • Claude가 일부 코드를 직접 작성하도록 요청하거나 TODO(human) 주석으로 실습 항목을 남겨 학습을 유도

선택한 Output Style은 프로젝트 내부에 저장됨(setting.local.json).

Output Style 변경 방법

1
2
3
4
5
6
7
8
> /output-style explanatory
> /output-style learning
> /output-style default
> 
> /output-sylte
  1. Default
  2. Explanatory
  3. Learning

사용자 정의 Output Style

  • 사용자 전체 적용 : ~/.claude/output-styles/스타일_이름.md
  • 현재 프로젝트 전용 : .claude/output-styles/스타일_이름.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
---
name: 코드 리뷰어
description: 보안과 성능 중심의 코드 리뷰
keep-coding-instructions: false
---
## 역할
당신은 시니어 코드 리뷰어입니다. 모든 코드를 검토할 때 다음 기준을 우선적으로 판단합니다.
1. ~~~
2. ~~~
3. ~~~
   
## 응답 형식
문제를 발견하면 다음 형식으로 명확하게 보고합니다.
- ~~~
- ~~~
- ~~~

5.5 - 사용자 정의 명령어

사용자 정의 명령어 생성(전역) : ~/.claude/commands/explain.md 파일 생성 후 /explain 명령 프로젝트별 명령어는 .claude/commands/ 폴더에 저장

1
2
3
4
5
6
7
---
description: ~사용자 정의 명령~
allowed-tools: Bash(git add:\*)  <!-- 특정 도구만 사용하게끔 --> 
argument-hint: <파일_경로>
model: opus  <!-- 모델 지정 -->
---
다음 파일의 코드를 초보자도 이해할 수 있게 단계별로 설명해줘. : $ARGUMENTS <!--인수 전달-->

명령어 그룹화

사용자 정의 명령어가 많아질경우 폴더 구조를 그룹으로 관리할 수 있다.

.claude/commands/
|— code/
| |– simplify.md # /code:simplify
| — test.md
|
|— help/
| |– explain.md
| — error.md
|
|— docs/
| |– summary.md
| — readme.md

  • 장점
    • 명령어를 주제별로 정리할 수 있어 관리가 용이함
    • 팀 협업 시 명령어 세트를 공유하기 쉬움
    • 명령 호출 시 의미가 명확해짐

5.6 - 스킬과 플러그인

스킬

스킬은 Claude가 특정 작업을 처리할 때 따라야 할 절차와 기준을 정의한 전문 작업 지침서이다.
예를 들어 “PDF에서 표를 추출해줘.”라고 요청하면 Claude는 설치된 스킬 중 PDF관련 스킬의 description을 확인해 자동으로 해당 스킬을 적용한다.
스킬의 특징은 다음과 같다.

  • 자동 호출
    • 스킬은 명시적으로 실행할 필요가 없다. Claude는 사용자의 요청을 분석해 해당 작업에 적합한 스킬을 자동 선택한다.
  • 파일 기반 관리
    • 스킬은 YAML 프런트매터 + 마크다운 본문으로 구성된 파일이며, Output Style과 비슷한 형식을 가진다.
  • 전문 지침 기반 처리
    • 스킬 정의 파일에는 작업 절차, 주의 사항, 출력 형식 등이 포함되어 있어 Claude가 동일한 유형의 요청을 더 일관되게 처리할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
---
name: pdf-extractor
description: PDF 파일에서 텍스트와 표를 추출합니다. PDF 분석과 데이터 추출에 사용합니다.
allowed-tools:
- ReadFile
- ListDirectory
---
# PDF 추출 스킬
PDF 파일을 분석할 때 다음 절차를 따릅니다.
1. 파일 구조 확인
2. 텍스트 추출
3. 표 데이터 파싱
4. 결과 정리
## 주의 사항
- 스캔된 PDF는 OCR이 필요할 수 있습니다.
- 암호화된 PDF는 처리 대상에서 제외합니다.

플러그인

플러그인은 스킬, 슬래시 명령어, 에이전트, Hook등을 하나의 패키지로 묶어 배포하는 확장 단위이다. 스킬이 개별 도구라면, 플러그인은 여러 도구를 묶어 제공하는 툴킷에 가깝다.
플러그인 폴더 안에는 Claude Code가 이 패키지를 어떻게 로드하고 어떤 기능을 제공하는지 이해할 수 있도록 정해진 디렉터리 구조가 존재한다. 이 구조 안에 스킬, 명령어, 에이전트, Hook 등을 배치하면 Claude는 이를 자동으로 로드해 확장 기능으로 활용한다.

플러그인 설치하고 사용하기

  • 1 - 마켓플레이스 등록하기
    • /plaugin marketplace add anthropics/skills : 문서 처리 스킬 모음
    • /plaugin marketplace add anthropics/claude-code : Claude Code 공식 플러그인 모음
  • 2 - 플러그인 설치
    • /plugin 명령을 통해 대화형 기반으로 설치
    • 직접 설치
      • plugin install document-skills@anthropic-agent-skills
  • 3 - 플러그인 활용
    • 설치 후에는 자동으로 호출되므로 자연어로 요청하면 됨




This post is licensed under CC BY 4.0 by the author.