MCP vs Skill 개념과 비교 — 레퍼런스
MCP와 Agent Skill이 각각 무엇이고 어떻게 다른지 한눈에 | 공식 문서: modelcontextprotocol.io
2025-06-18), Skill은 SKILL.md frontmatter와 베타 헤더(skills-2025-10-02)로 확인핸드북 전체 지도
이 핸드북은 MCP와 Agent Skill을 다섯 섹션으로 나누어 다룬다. 지금 보고 있는 문서는 첫 번째 섹션, 곧 두 기술의 개념과 차이를 정리하는 자리다. 나머지 섹션은 같은 두 기술을 설치·개발·내부구조·운영 관점에서 각각 깊이 파고든다.
Claude 기반 MCP vs Agent Skill 핸드북 ├── 1. 개념·비교 두 기술의 정의·차이·선택 기준 (이 문서) ├── 2. 설치 claude mcp add / .claude/skills 배치·스코프 ├── 3. 개발 MCP 서버 SDK / SKILL.md 작성·트리거 설계 ├── 4. 내부구조 JSON-RPC 2층 구조 / progressive disclosure 3단계 └── 5. 운영 Inspector·로그·보안·토큰 비용 관리
1. MCP란 무엇인가
MCP는 AI 애플리케이션을 파일·데이터베이스·API·외부 도구 같은 시스템에 연결하기 위한 오픈 표준이다. Anthropic이 2024년 11월 25일에 공개했고 오픈소스로 운영되며, Claude뿐 아니라 ChatGPT·Cursor·VS Code 등 여러 클라이언트가 같은 프로토콜을 따른다.
Model Context Protocol — AI를 위한 USB-C
MCP를 흔히 "AI의 USB-C"에 비유한다. USB-C 단자 하나로 충전기·모니터·외장 디스크를 모두 연결하듯, MCP라는 표준 하나를 구현해 두면 어떤 도구든 같은 방식으로 연결할 수 있다. 통합마다 새 어댑터를 만들던 N×M 문제를, 표준 프로토콜 하나로 줄인 것이 핵심이다.
덕분에 한 번 만든 MCP 서버는 프로토콜을 지원하는 모든 클라이언트에서 재사용된다. 외부 SaaS·DB·실시간 API를 여러 AI 앱에 동시에 붙여야 할 때 이 표준화가 가장 큰 이점이 된다.
Host·Client·Server — 3자 구조
MCP는 세 역할로 나뉜다. Host는 Claude Desktop이나 Claude Code 같은 AI 앱이고, 그 안에서 여러 MCP Client가 각각 하나의 Server와 1:1로 연결된다. Server는 로컬 프로세스(stdio)거나 원격 HTTP 서비스로, 실제 도구와 데이터를 제공한다.
# 로컬 stdio 서버 등록 (Claude Code) claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /path # 원격 HTTP 서버 등록 claude mcp add --transport http my-api https://api.example.com/mcp
Data Layer · Transport Layer — 2계층 설계
MCP는 두 계층으로 동작한다. Data Layer는 JSON-RPC 2.0 기반으로 lifecycle(연결 수립)·primitives(기능)·notifications(상태 알림)를 정의하고, Transport Layer는 그 메시지를 주고받는 방식을 맡는다. 로컬은 stdio, 원격은 Streamable HTTP를 쓰며, SSE로 스트리밍하고 OAuth·Bearer·API key·헤더로 인증한다.
Tools · Resources · Prompts — 서버 primitives 3종
서버가 제공하는 기능은 세 가지다. Tools는 실제로 실행되는 함수로, tools/list로 목록을 받고 tools/call로 호출한다. Resources는 모델에 컨텍스트로 넣을 데이터 스냅샷이고, Prompts는 재사용 가능한 프롬프트 템플릿이다. 반대로 클라이언트 쪽 primitives로는 Sampling·Elicitation·Logging이 있다.
initialize — lifecycle 협상
연결은 initialize 요청과 응답으로 시작된다. 이 단계에서 양쪽이 protocolVersion과 capabilities를 주고받아 서로 무엇을 지원하는지 합의한 뒤 실제 사용에 들어간다. 참고로 응답을 요구하지 않는 notification 메시지에는 id가 없다.
2. Agent Skill이란 무엇인가
Agent Skill은 SKILL.md 파일과(선택적으로) 스크립트·리소스를 함께 담은 폴더다. Claude의 능력을 특정 절차와 전문성으로 확장하는 패키지로, Anthropic이 2025년에 발표했다. 외부 서버 없이도 Claude에게 "이런 작업은 이렇게 처리하라"는 노하우를 그대로 주입할 수 있다.
SKILL.md — 스킬의 본체
스킬의 핵심은 폴더 안의 SKILL.md 한 파일이다. 맨 위 YAML frontmatter에 name(64자 이하, 소문자·숫자·하이픈만 — anthropic·claude는 예약어)과 description(1024자 이하, "무엇을 + 언제 쓰는지")을 적고, 그 아래 마크다운 본문에 실제 절차를 쓴다. 본문은 500줄 이내로 간결하게 두고, 상세 내용은 reference/*.md처럼 별도 파일로 분리하기를 권장한다.
my-skill/
├── SKILL.md # frontmatter + 본문 (500줄 이내 권장)
├── reference/
│ └── details.md # 상세 참고 자료 (필요 시 로드)
└── scripts/
└── run.py # 실행 스크립트 (출력만 컨텍스트로 들어옴)
progressive disclosure — 3단계 점진 공개
스킬이 토큰을 아끼는 비결이 점진 공개다. 모든 정보를 한꺼번에 올리지 않고 필요한 만큼만 단계적으로 연다.
- Level 1 — 메타데이터:
name과description만 항상 로드(스킬당 약 100토큰). Claude가 "지금 이 스킬을 써야 하나"를 판단하는 데 쓰인다. - Level 2 — SKILL.md 본문: 트리거가 걸렸을 때만 본문 전체를 로드(보통 5K 토큰 미만).
- Level 3 — 번들 리소스: 본문이 가리키는 추가 파일을 필요할 때만 읽는다. 스크립트는 코드 자체가 아니라 실행한 출력만 컨텍스트로 들어온다.
frontmatter 선택 키 — Claude Code 확장
Claude Code에서는 frontmatter에 동작을 세밀하게 제어하는 키를 더 넣을 수 있다. allowed-tools·disallowed-tools로 도구 권한을, disable-model-invocation·user-invocable로 호출 방식을, context: fork·agent·model 등으로 실행 맥락을 지정한다. 본문에 !`<command>` 구문을 쓰면 전송 직전 그 명령이 실행되어 출력이 인라인으로 삽입되는 동적 컨텍스트 주입도 가능하다.
3. 핵심 차이 비교표
두 기술은 같은 문제를 푸는 경쟁자가 아니다. 아래 9개 차원으로 보면 역할이 어떻게 갈리는지 분명해진다.
| 차원 | MCP | Agent Skill |
|---|---|---|
| 무엇인가 | 연결을 위한 프로토콜(표준) | SKILL.md를 담은 폴더 |
| 목적 | 외부 시스템과의 연결 | 절차·전문성 주입 |
| 실행 위치 | 별도 서버 프로세스 | 모델의 코드 실행 환경 / 파일시스템 |
| 통신 방식 | JSON-RPC 2.0 (stdio / HTTP) | 파일 로드 + bash 실행 |
| 상시 컨텍스트 비용 | 높음 — tool 정의(inputSchema)가 매 요청 상주 | 낮음 — 메타데이터(약 100토큰)만 상시 |
| 형식 | SDK로 작성한 서버 코드 | 마크다운 + 선택적 스크립트 |
| 배포 | 서버 호스팅 + 클라이언트 등록 | 폴더 복사 / 플러그인 |
| 표준화 | 다중 클라이언트 (Claude·ChatGPT·Cursor 등) | Anthropic 제품 전용 |
| 외부 의존 | 있음 (서버·네트워크·인증) | 거의 없음 (자기완결) |
💡 핵심 한 줄: MCP는 "어디에 연결할까"를, Skill은 "어떻게 처리할까"를 담당한다.
4. 경쟁이 아니라 보완
MCP와 Skill은 서로를 대체하는 관계가 아니라 층이 다른 보완재다. Skill이 작업의 절차와 규칙을 정의한다면, MCP는 그 절차가 손을 뻗을 외부 연결을 제공한다. 그래서 둘은 같은 작업 안에서 자연스럽게 함께 쓰인다.
실제로 Skill 본문은 "이 데이터를 가져와 이런 형식으로 정리하라"는 절차를 적고, 데이터를 가져오는 실제 동작은 MCP tool 호출에 맡길 수 있다. 즉 Skill 안에서 MCP tool을 호출하는 구성이 가능하다.
- Skill의 역할: 반복 워크플로·조직 표준·판단 기준을 패키징해 "무엇을 어떤 순서로" 할지 결정한다.
- MCP의 역할: 그 과정에서 필요한 DB 조회·API 호출·파일 접근 같은 외부 연결을 표준 방식으로 제공한다.
- 함께 쓰기: 데이터 조회는 MCP가, 조회 결과를 정형 산출물로 만드는 절차는 Skill이 맡는 조합이 대표적이다.
💡 핵심 한 줄: "둘 중 무엇을 쓸까"가 아니라 "어디서 둘을 함께 쓸까"가 더 정확한 질문이다.
5. 언제 무엇을 쓰나
선택 기준은 의외로 단순하다. "외부와 실시간으로 연결해야 하는가"와 "절차·전문성을 주입하면 되는가"를 먼저 가른 뒤, 재사용 범위와 자기완결 여부로 다듬으면 된다.
| 상황 | 선택 | 이유 |
|---|---|---|
| 외부 SaaS·DB·API와 실시간 연동 | MCP | 연결과 인증이 핵심, 표준 프로토콜 필요 |
| 반복 절차·조직 규칙을 모델에 주입 | Skill | 외부 의존 없이 노하우만 패키징 |
| 여러 클라이언트에서 재사용 | MCP | Skill은 Anthropic 전용, MCP는 표준 |
| 외부 의존 없는 자기완결 번들 | Skill | 폴더 + 마크다운 + 스크립트로 완결 |
| 데이터 조회 + 정형 산출물 생성 | MCP + Skill | 조회는 MCP, 생성 절차는 Skill |
의사결정 트리 — 흐름으로 정리
위 기준을 순서대로 따라가면 다음과 같다. 먼저 "외부 시스템에 실시간으로 연결해야 하는가?"를 묻는다. 그렇다면 MCP가 출발점이다. 여기서 다시 "여러 클라이언트(Claude 외 ChatGPT·Cursor 등)에서도 재사용할 것인가?"를 따지면 MCP가 확실해진다.
외부 연결이 필요 없다면 "절차·규칙·전문성을 모델에 주입하면 충분한가?"를 묻는다. 그렇다면 Skill이 적합하고, 특히 "외부 의존 없이 폴더로 자기완결되는가?"까지 맞으면 Skill이 정답이다. 마지막으로 두 조건이 모두 걸리는 경우 — 외부에서 데이터를 가져와 정형 산출물을 만들어야 한다면 — MCP로 조회하고 Skill로 생성하는 조합을 쓴다.
※ 이 자리에는 추후 의사결정 트리 SVG가 삽입된다. 위 본문은 그 흐름을 텍스트로 설명한 것이다.
6. 흔한 오해
두 기술이 비슷한 시기에 등장하면서 역할을 혼동하는 경우가 많다. 자주 보이는 오해 네 가지를 바로잡는다.
| 오해 | 실제 |
|---|---|
| "Skill이 MCP를 대체한다" | 외부 시스템 연결은 여전히 MCP가 필요하다. Skill에는 연결 표준이 없다. |
| "Skill은 MCP의 경량 버전이다" | 둘은 목적이 다르다. MCP는 연결, Skill은 절차·전문성 주입이다. |
| "Skill을 크로스 클라이언트로 재사용할 수 있다" | Skill은 Anthropic 제품 전용이다. 다중 클라이언트 재사용은 MCP의 몫이다. |
| "Skill 제작은 복잡하다" | 폴더 하나에 마크다운(SKILL.md)을 두는 것이 기본이라 진입 장벽이 낮다. |
참고 링크
- 📖 Model Context Protocol 공식 문서 (modelcontextprotocol.io)
- ⚙️ Claude Code — Agent Skills 문서
- 📦 Claude Platform — Agent Skills Overview
Claude Docs · Claude Code 2026-06 기준 (MCP 스펙 2025-11-25 / 프로토콜 2025-06-18) | 문서 수집일 2026-06-27