저는 5년 동안 다양한 LLM API를 실무에 붙여 온 시니어 개발자입니다. 2025년 들어 가장 자주 받은 질문이 "Claude Code Skills랑 MCP 중 뭘 먼저 배워야 하나요?"였습니다. 두 기술 모두 Anthropic 생태계에서 출발했지만, 적용 방식과 장기 유지보수 관점에서는 꽤 다른 결로 흐르고 있거든요. 비전공자도 따라 할 수 있도록 단계별로 풀어 보고, 마지막에는 지금 가입 시 무료 크레딧으로 즉시 실습하는 경로까지 안내드립니다.
1. 한 줄 요약: 둘은 경쟁 관계가 아니다
Claude Code Skills는 "에이전트 한 명에게 미리 업무 매뉴얼을 넣어 두는 것"이고, MCP(Model Context Protocol)는 "에이전트와 외부 도구 사이의 공통 언어 규약"입니다. 쉽게 비유하면 Skills는 직원의 사내 매뉴얼, MCP는 모든 직원이 사용하는 표준 전화 회선이라고 보시면 됩니다. 보통은 Skills로 빠르게 시작하고, 도구가 늘어나면 MCP로 확장하는 흐름이 일반적입니다.
2. Claude Code Skills 5분 실습
먼저 가장 빠르게 결과를 볼 수 있는 Skills부터 만들어 봅시다. 폴더 구조는 아래와 같습니다.
# [터미널 화면 — 폴더 생성]
$ mkdir ~/my-claude-skills
$ cd ~/my-claude-skills
$ mkdir -p .claude/skills/daily-report
[파일 생성] .claude/skills/daily-report/SKILL.md
$ cat > .claude/skills/daily-report/SKILL.md << 'EOF'
---
name: daily-report
description: 어제 깃 커밋과 PR을 모아 일일 보고서를 작성합니다.
---
일일 보고서 생성기
다음 절차를 순서대로 수행하세요.
1. git log --since=yesterday 결과를 읽습니다.
2. 닫힌 PR 목록을 GitHub API로 가져옵니다.
3. 마크다운 보고서로 정리해 stdout에 출력합니다.
EOF
[터미널 화면 — Claude Code 실행]
$ claude
> /daily-report
위 명령 한 줄로 "어제 작업한 내용을 자동으로 정리해 주는 에이전트"가 만들어졌습니다. Skills의 가장 큰 장점은 마크다운 한 장이면 충분하다는 점입니다.
3. MCP 서버 30분 실습 (Python)
같은 일을 MCP 서버로 만들어 봅시다. 한 번 만들어 두면 Claude Code뿐 아니라 Cursor, Windsurf, 자체 서비스에서도 재사용할 수 있습니다.
# [터미널 화면 — 패키지 설치]
$ pip install mcp httpx
[파일 생성] git_report_server.py
from mcp.server.fastmcp import FastMCP
import subprocess, httpx, os
mcp = FastMCP("git-report-server")
@mcp.tool()
def yesterday_commits(repo_path: str = ".") -> str:
"""어제 작성된 깃 커밋 메시지를 반환합니다."""
out = subprocess.run(
["git", "-C", repo_path, "log", "--since=yesterday", "--oneline"],
capture_output=True, text=True, check=True
)
return out.stdout or "어제 커밋이 없습니다."
@mcp.tool()
async def closed_prs(repo: str) -> str:
"""닫힌 PR 제목을 최대 10개까지 가져옵니다."""
token = os.environ["GITHUB_TOKEN"]
url = f"https://api.github.com/repos/{repo}/pulls?state=closed&per_page=10"
headers = {"Authorization": f"Bearer {token}"}
async with httpx.AsyncClient() as cli:
r = await cli.get(url, headers=headers)
titles = [p["title"] for p in r.json()]
return "\n".join(titles) if titles else "닫힌 PR이 없습니다."
if __name__ == "__main__":
mcp.run()
# [파일 생성] .claude/mcp_servers.json
{
"mcpServers": {
"git-report": {
"command": "python",
"args": ["/절대/경로/git_report_server.py"]
}
}
}
등록이 끝나면 Claude Code가 자동으로 yesterday_commits 도구를 발견해 호출합니다. Skills보다 작성할 코드는 많지만, 도구가 표준화되어 있어 다른 클라이언트에서도 그대로 동작합니다.
4. 실제 AI 호출 — HolySheep API로 연결하기
Skills나 MCP 어느 쪽을 쓰든, 최종적으로 LLM을 호출하는 구간은 별개입니다. HolySheep AI는 단일 API 키로 Claude·GPT·Gemini·DeepSeek을 모두 호출할 수 있어서, 같은 에이전트 로직으로 모델만 바꿔 가며 실험하기에 최적입니다.
# [터미널 화면 — 호출 예시]
$ curl https://api.holysheep.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_HOLYSHEEP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4.5",
"messages": [{"role":"user","content":"어제 PR 3개를 요약해 줘"}],
"tools": [
{"type":"function","function":{
"name":"yesterday_commits",
"description":"어제 커밋 조회",
"parameters":{"type":"object","properties":{"repo_path":{"type":"string"}}}
}}
]
}'
엔드포인트만 api.holysheep.ai/v1 한 곳을 가리키면 되므로, 키 분실이나 결제 실패 없이 모델을 자유롭게 스왑할 수 있습니다.
5. 직접 비교 표
| 비교 항목 | Claude Code Skills | MCP 프로토콜 |
|---|---|---|
| 정의 | 에이전트 내부 매크로 | 도구 연결 표준 규약 |
| 파일 형식 | Markdown 1장 | Python/Node 서버 + JSON |
| 첫 작성 시간 | 약 5분 | 약
관련 리소스관련 문서 |