Skills vs MCP: AI 에이전트 두뇌 확장과 손발 확장의 차이
AI 에이전트를 처음 설정하다 보면 반드시 마주치는 개념이 두 가지 있다. Skills(스킬)와 MCP(Model Context Protocol)다. 비슷해 보이고, 둘 다 “AI의 능력을 확장한다”는 말로 소개되기 때문에 처음에는 구분이 어렵다. 그런데 실제로는 레이어 자체가 완전히 다른 개념이었다.
Skills는 AI의 두뇌를 확장하고, MCP는 AI의 손발을 확장한다.
큰 그림을 먼저 보면 이렇다.
flowchart LR
subgraph PL["프롬프트 레이어"]
SK["📄 Skills<br/>행동 방식 정의"]
end
subgraph EL["실행 레이어"]
MCP["🔌 MCP Server<br/>외부 시스템 연결"]
end
User([사용자]) -->|요청| LLM[LLM]
SK -->|컨텍스트 주입| LLM
LLM -->|도구 호출| MCP
MCP -->|실행 결과| LLM
LLM -->|응답| User
혼동의 출발점: 왜 두 개념이 헷갈리는가
혼동이 생기는 이유는 표면적인 목적이 비슷해 보이기 때문이다. 두 개념 모두 “기본 AI에 없는 무언가를 추가한다”는 방향성을 공유한다. 그러나 추가하는 대상이 다르다. Skills는 AI가 어떻게 생각하고 행동할지를 정의하는 것이고, MCP는 AI가 무엇을 실행할 수 있는지를 외부 서버와 연결해서 정의한다.
요리에 비유하면 정확히 이해된다. Skills는 레시피북이다. 요리사에게 “이 재료를 이렇게 손질하고, 이 순서로 조리하라”고 설명하는 글이다. MCP는 주방 도구다. 칼, 냄비, 오븐이 있어야 실제로 요리할 수 있다. 레시피가 아무리 정교해도 칼이 없으면 재료를 자를 수 없고, 칼이 있어도 레시피 없이는 무엇을 만들지 모른다.
[!QUOTE] Skills = 레시피북 (행동 방식), MCP = 주방 도구 (실행 능력). 둘 다 있어야 제대로 된 에이전트다.
Skills란 무엇인가: AI에게 행동 방식을 가르치는 지시문 파일
Skills는 AI에게 “이 작업은 이렇게 해라”고 알려주는 마크다운(Markdown) 텍스트 파일이다. 코드 실행이 없다. 프롬프트 확장의 구조화된 형태이며, AI의 컨텍스트 윈도우에 로드되어 행동 패턴을 바꾼다.
SKILL.md: 가장 구체적인 형태
OpenClaw나 Claude Code 같은 AI 에이전트 환경에서는 SKILL.md 파일이 스킬의 공식 형태다.1 구조는 단순하다. 파일 상단에 YAML 프론트매터(frontmatter)를 적어서 이 스킬이 언제 활성화되어야 하는지를 선언하고, 그 아래 마크다운 본문에 구체적인 행동 지침을 적는다.
예를 들어 “블로그 포스트를 작성할 때 따를 형식 규칙”을 스킬로 만들면 이렇게 된다.
.claude/skills/blog-post/SKILL.md
파일 안에는 서술체 규칙, 소제목 형식, 금지 사항 등이 마크다운으로 적혀 있다. AI가 이 파일을 읽으면 행동 방식이 바뀐다. 코드 한 줄 없이.
[!KEY] Skills 파일은 Git으로 버전 관리할 수 있다. 팀원에게 공유하면 동일한 AI 행동 패턴을 즉시 재현할 수 있다.
다른 플랫폼의 동일한 개념
같은 아이디어가 다른 이름으로 여러 곳에 존재한다.
- Claude Projects Custom Instructions: 프로젝트 단위로 AI에게 부여하는 지시문. 마크다운으로 작성하며 해당 프로젝트의 모든 대화에 자동 적용된다.
- CLAUDE.md: 프로젝트 루트에 놓는 파일. 프로젝트 관련 맥락과 행동 지침을 AI에게 전달한다. Claude Code가 자동으로 읽는다.
- ChatGPT Custom Instructions: OpenAI 플랫폼에서도 동일한 원리로 작동. 텍스트 형태의 지시문을 저장해두면 매 대화에 시스템 프롬프트처럼 삽입된다.
이 모든 것의 공통점은 하나다. 텍스트 파일 하나가 AI의 행동 패턴을 바꾼다. 새 스킬 추가는 마크다운 파일 하나를 추가하는 것으로 끝난다.
어떻게 동작하는가
LLM이 요청을 처리할 때, 호스트 애플리케이션은 관련 스킬 파일의 내용을 시스템 프롬프트 혹은 컨텍스트 앞부분에 주입한다. LLM 입장에서는 “이 대화를 시작하기 전에 내가 따라야 할 지침”을 읽게 되는 셈이다. Fine-tuning이나 재학습이 아니다. 프롬프트 레이어에서 일어나는 일이다.
MCP란 무엇인가: 외부 세계와 연결하는 표준 프로토콜
MCP(Model Context Protocol)는 2024년 11월 Anthropic이 오픈소스로 공개한 표준 프로토콜이다.2 AI 에이전트가 외부 시스템에 표준화된 방식으로 연결할 수 있도록 설계되었다. 핵심은 실제 코드 실행이다. 파일 접근, 데이터베이스 쿼리, API 호출, 웹 검색 등 LLM 자체가 할 수 없는 일을 외부 서버에 위임한다.
Host / Client / Server 아키텍처
MCP는 세 개의 참여자로 구성된다.3
flowchart LR
Host["🖥️ MCP Host<br/>(Claude Desktop)"]
Host -->|"1:1 연결"| C1[Client A]
Host -->|"1:1 연결"| C2[Client B]
C1 -->|"JSON-RPC 2.0"| S1["⚙️ MCP Server<br/>(GitHub)"]
C2 -->|"JSON-RPC 2.0"| S2["⚙️ MCP Server<br/>(파일시스템)"]
- MCP Host: AI 애플리케이션 자체. Claude Desktop이나 Claude Code가 Host다. 어떤 서버에 연결할지 조율한다.
- MCP Client: Host가 각 MCP Server와 연결하기 위해 생성하는 객체. Server 하나당 Client 하나가 대응된다.
- MCP Server: 실제 기능을 제공하는 외부 서비스. GitHub, Slack, PostgreSQL 서버 등이 각각의 MCP Server로 존재한다.
[!KEY] 모든 메시지는 JSON-RPC 2.0 규격을 따른다. 언어와 플랫폼에 상관없이 동일한 방식으로 서버를 구현할 수 있다.
3가지 프리미티브: Tools, Resources, Prompts
MCP Server가 Host에게 제공할 수 있는 기능은 세 종류로 나뉜다.4
| 프리미티브 | 역할 | 예시 |
|---|---|---|
| Tools | AI가 호출하는 실행 함수 | 파일 읽기, API 호출, DB 쿼리 |
| Resources | AI 컨텍스트에 주입하는 데이터 | 파일 내용, DB 레코드 |
| Prompts | 재사용 가능한 프롬프트 템플릿 | few-shot 예시, 시스템 프롬프트 |
실제 연결 가능한 서버들
- 파일시스템 서버: 로컬 파일을 읽고 쓴다.
- GitHub 서버: 레포지토리 조회, 이슈 생성, PR 리뷰.
- Slack 서버: 채널 메시지 읽기/전송.
- PostgreSQL 서버: 데이터베이스에 직접 SQL 쿼리.
- 웹 검색 서버: 실시간 인터넷 검색 결과.
[!KEY] 새 기능 추가는 MCP Server 하나를 연결하는 것으로 끝난다. Host 애플리케이션을 수정하거나 AI 모델을 재학습할 필요가 없다.
핵심 차이: 비교표
두 개념을 나란히 놓으면 차이가 선명해진다.
| 항목 | Skills (SKILL.md) | MCP (Model Context Protocol) |
|---|---|---|
| 본질 | 텍스트 지시문 파일 | 외부 연결 표준 프로토콜 |
| 역할 | AI 두뇌 확장 | AI 손발 확장 |
| 코드 실행 | 없음 | 있음 (외부 서버에서) |
| 새 기능 추가 방식 | 마크다운 파일 하나 | MCP Server 하나 연결 |
| 동작 레이어 | 프롬프트/컨텍스트 | 네트워크/프로세스 |
| 전송 규격 | 해당 없음 (텍스트) | JSON-RPC 2.0 |
| 구성 요소 | YAML 프론트매터 + 마크다운 | Host / Client / Server |
| 비유 | 레시피북 | 주방 도구 |
| 지속성 | 파일 시스템 (git 관리 가능) | 서버 프로세스 (실행 중이어야 함) |
| 장벽 | 마크다운 작성 능력 | 서버 구현/연결 설정 |
함께 쓰면 어떻게 되는가: 상호보완 관계
두 개념은 서로를 대체하지 않는다. 함께 쓸 때 비로소 완전한 AI 에이전트가 된다.
GitHub 이슈를 자동으로 분류하는 에이전트를 예로 들면:
flowchart TD
SK["📄 SKILL.md<br/>분류 기준·말투 정의"] --> AI[LLM]
AI -->|이슈 목록 조회| MCP[MCP Client]
MCP -->|GitHub API| GH[(GitHub)]
GH -->|이슈 데이터| MCP
MCP --> AI
AI -->|"라벨 부착 + 댓글"| MCP
MCP --> GH
- MCP로 GitHub 서버를 연결 → 실제로 이슈 목록을 읽고, 라벨을 붙이고, 댓글을 달 수 있다.
- Skills로 행동 지침 정의 → 어떤 기준으로 분류할지, 어떤 말투로 댓글을 달지.
Skills가 있으면 AI는 무엇을 해야 하는지 안다. MCP가 있으면 AI는 실제로 할 수 있다. 둘 다 있어야 제대로 작동한다.
언제 뭘 써야 하나: 실용적 판단 기준
flowchart TD
Q{"AI가 이미<br/>할 수 있는 작업?"}
Q -->|Yes| Q2{"방식이 틀리거나<br/>일관성이 없는가?"}
Q -->|No| MCP["🔌 MCP 연결<br/>실행 능력 추가"]
Q2 -->|Yes| SK["📄 Skills 추가<br/>행동 방식 정의"]
Q2 -->|No| ETC["다른 문제<br/>(모델 한계 등)"]
Skills를 써야 하는 상황:
- 특정 형식으로 문서를 작성하게 하고 싶을 때
- 특정 말투나 어조를 유지하게 하고 싶을 때
- 복잡한 판단 기준을 반복해서 설명하지 않고 저장해두고 싶을 때
MCP를 써야 하는 상황:
- 데이터베이스를 조회하거나, 외부 API를 호출해야 할 때
- 실시간 데이터를 가져와야 할 때
- AI가 “알고는 있지만 할 수 없는” 상황일 때
[!KEY] 헷갈릴 때는 이 질문 하나로 정리된다. “AI가 이미 할 수 있는 작업의 방식을 바꾸는 것인가, 아니면 AI가 지금 할 수 없는 새로운 작업을 가능하게 하는 것인가?” 전자면 Skills, 후자면 MCP다.
AI 에이전트 생태계는 이 두 레이어가 분리되어 있기 때문에 유연하게 확장될 수 있다. 행동 방식을 바꾸는 것과 실행 능력을 추가하는 것이 독립적으로 관리된다. 레시피와 도구는 서로 다른 영역에서 발전하고, 그 조합이 에이전트의 완성도를 결정한다.
Footnotes
-
Claude Code, “Extend Claude with skills”, 공식 문서. https://code.claude.com/docs/en/skills ↩
-
Anthropic, “Introducing the Model Context Protocol”, 2024년 11월. https://www.anthropic.com/news/model-context-protocol ↩
-
Model Context Protocol, “Architecture overview”, 공식 문서. https://modelcontextprotocol.io/docs/learn/architecture ↩
-
Model Context Protocol, “Specification 2025-11-25”. https://modelcontextprotocol.io/specification/2025-11-25 ↩
댓글