Claude Code 확장 메커니즘 완전 정리: MCP, Skills, Plugins, Hooks 그리고 그 너머

Claude Code를 커스터마이징하는 8가지 확장 포인트를 비교하고 각각의 역할과 사용법을 정리한다.


Claude Code를 쓰다 보면 MCP, Skills, Plugins 같은 용어가 자연스럽게 등장한다. 처음엔 비슷해 보이지만, 각각의 역할과 목적이 명확히 다르다. 이 글에서는 Claude Code의 8가지 확장 메커니즘을 정리한다.

핵심 3가지: MCP, Skills, Plugins

MCP (Model Context Protocol)

외부 서비스와의 연결 프로토콜이다.

MCP는 Claude가 외부 도구나 데이터 소스에 접근하는 표준 인터페이스다. GitHub, Notion, Playwright, 파일시스템 등 다양한 서비스를 Claude에 연결할 수 있다. 각 MCP 서버는 tools(실행 가능한 액션)와 resources(읽기 가능한 데이터)를 제공한다.

  • 형태: stdio 프로세스 또는 SSE 서버
  • 설정: ~/.claude/settings.jsonmcpServers에 등록
  • 비유: API 클라이언트
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-github"]
    }
  }
}

MCP 서버를 등록하면 Claude가 대화 중 필요할 때 자동으로 해당 도구를 호출한다. 사용자가 명시적으로 호출할 필요가 없다.

Skills

재사용 가능한 프롬프트 템플릿이다.

Skills는 코드를 실행하는 게 아니라, Claude에게 행동 지침을 주입하는 것이다. /commit, /code-review 같은 슬래시 커맨드로 호출하면 해당 프롬프트가 컨텍스트에 로드된다.

  • 형태: 마크다운 파일 (name, description, trigger 조건 + 지침)
  • 위치: ~/.claude/skills/ 또는 플러그인이 제공
  • 비유: 매크로 또는 레시피
---
name: commit
description: Create a git commit with conventional format
---

1. Run git status to check changes
2. Stage relevant files
3. Write a conventional commit message
...

Skills의 본질은 “이 상황에서 이렇게 행동해라”라는 지침이다. Claude의 행동 패턴을 정형화할 때 유용하다.

Plugins

Skills와 MCP를 번들로 패키징한 것이다.

하나의 플러그인이 Skills와 MCP 서버를 동시에 제공할 수 있다. npm 패키지처럼 설치하고 관리한다.

  • 형태: npm 패키지
  • 설정: ~/.claude/settings.jsonplugins에 등록
  • 캐시: ~/.claude/plugins/cache/에 저장
  • 비유: 확장 패키지

예를 들어 oh-my-claudecode 플러그인은 수십 개의 Skills(autopilot, ralph, ultrawork 등)과 MCP 도구(LSP, AST, notepad 등)를 한꺼번에 제공한다. context7 플러그인은 라이브러리 문서 조회용 MCP 도구를 제공한다.

3가지 비교

구분MCPSkillsPlugins
본질외부 도구 연결 프로토콜프롬프트 템플릿Skills + MCP 번들
제공하는 것tools, resources행동 지침둘 다
호출 방식Claude가 자동 tool call/name으로 사용자 호출설치하면 둘 다 활성화
형태서버 프로세스마크다운 파일npm 패키지

간단히 말하면: MCP = 도구, Skills = 지침, Plugins = 둘을 묶은 패키지.


나머지 5가지: 설정과 자동화

Hooks

특정 이벤트에 자동 실행되는 셸 명령이다.

Git hooks와 같은 개념으로, Claude Code의 특정 시점에 셸 스크립트를 자동 실행한다.

  • 이벤트: PreToolUse, PostToolUse, UserPromptSubmit, SessionStart
  • 설정: ~/.claude/settings.jsonhooks
  • 용도: 파일 저장 시 자동 포맷팅, 커밋 전 린트, 세션 시작 시 컨텍스트 주입
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "prettier --write $CLAUDE_FILE_PATH"
          }
        ]
      }
    ]
  }
}

Hooks는 Claude의 행동을 강제하는 유일한 방법이다. CLAUDE.md는 지침이라 무시될 수 있지만, Hooks는 셸 명령이 실제로 실행되기 때문에 확실한 보장이 된다.

CLAUDE.md

프로젝트/글로벌 지침 파일이다.

Claude가 대화 시작 시 자동으로 읽는 설정 파일로, 코딩 컨벤션, 워크플로 규칙, 프로젝트 구조 등을 정의한다.

  • 위치: ~/.claude/CLAUDE.md (글로벌), 프로젝트 루트 CLAUDE.md, .claude/CLAUDE.md
  • 우선순위: 사용자 명시적 지시 > CLAUDE.md > 기본 동작
  • 비유: .editorconfig 또는 .eslintrc
# CLAUDE.md
## Coding Style
- TypeScript strict mode 사용
- 함수명은 camelCase
- 테스트 파일은 *.test.ts

## Project Structure
- src/components/ 에 UI 컴포넌트
- src/lib/ 에 유틸리티

프로젝트별로 다른 CLAUDE.md를 두면, 같은 Claude Code가 프로젝트마다 다른 규칙으로 동작한다.

AGENTS.md

서브에이전트용 지침 파일이다.

Claude Code는 복잡한 작업을 서브에이전트에게 위임할 수 있다. AGENTS.md는 이 서브에이전트들이 읽는 별도의 지침이다.

  • CLAUDE.md가 “나”를 위한 지침이라면, AGENTS.md는 “내가 시킨 사람”을 위한 지침
  • 디렉토리별로 배치 가능 (계층적)
  • 서브에이전트의 역할, 권한, 작업 범위를 정의
# AGENTS.md
## Code Review Agent
- 보안 취약점 우선 체크
- OWASP Top 10 기준 적용

## Test Agent
- 커버리지 80% 이상 유지
- E2E 테스트 필수

Keybindings

키보드 단축키 커스터마이징이다.

Claude Code의 키 입력을 원하는 대로 바꿀 수 있다.

  • 설정: ~/.claude/keybindings.json
  • 용도: 제출 키 변경, 코드 바인딩 추가 등

Settings (Permissions)

도구 허용/차단 규칙이다.

MCP 도구 포함, Claude가 사용할 수 있는 도구를 세밀하게 제어한다.

  • allowedTools: 자동 허용할 도구 목록
  • denyTools: 차단할 도구 목록
  • 범위: 글로벌(~/.claude/settings.json) 또는 프로젝트별(.claude/settings.json)
{
  "allowedTools": ["Read", "Glob", "Grep"],
  "denyTools": ["Bash(rm *)"]
}

보안 민감한 환경에서는 Settings로 Claude의 행동 범위를 제한할 수 있다.


전체 구조 한눈에 보기

Claude Code 확장 메커니즘
├── 기능 확장 (무엇을 할 수 있는가)
│   ├── MCP          → 외부 도구 연결
│   ├── Skills       → 행동 패턴 정의
│   └── Plugins      → MCP + Skills 번들
├── 자동화 (언제 실행되는가)
│   └── Hooks        → 이벤트 기반 셸 명령
└── 설정/지침 (어떻게 행동하는가)
    ├── CLAUDE.md    → 프로젝트 지침
    ├── AGENTS.md    → 서브에이전트 지침
    ├── Keybindings  → 키보드 단축키
    └── Settings     → 권한/동작 제어
메커니즘역할비유
MCP외부 도구 연결API 클라이언트
Skills프롬프트 템플릿매크로/레시피
PluginsSkills + MCP 번들VSCode 확장
Hooks이벤트 트리거 셸 명령Git hooks
CLAUDE.md글로벌/프로젝트 지침.editorconfig
AGENTS.md서브에이전트 지침팀 가이드라인
Keybindings단축키 설정IDE 키맵
Settings권한/동작 제어방화벽 규칙

어떤 걸 써야 하나?

“Claude가 새로운 서비스에 접근해야 한다” → MCP 서버 추가

“반복되는 워크플로를 정형화하고 싶다” → Skills 작성

“여러 도구와 워크플로를 한 번에 설치하고 싶다” → Plugin 설치

“파일 저장마다 자동 포맷팅이 필요하다” → Hooks 설정

“프로젝트별 코딩 규칙을 적용하고 싶다” → CLAUDE.md 작성

“서브에이전트의 동작을 통제하고 싶다” → AGENTS.md 작성

“특정 도구를 차단하고 싶다” → Settings에서 denyTools 설정

대부분의 사용자는 CLAUDE.md부터 시작하고, 필요에 따라 MCP와 Skills를 추가하는 순서가 자연스럽다. Plugins는 커뮤니티가 만든 검증된 조합을 한 번에 가져오고 싶을 때 유용하다.

← All posts