MCP 학습 로드맵: 제로에서 히어로까지
MCP 학습 로드맵: 제로에서 히어로까지
이 로드맵은 MCP를 단계별로 익히고 싶은 완전 초보자를 위해 설계되었습니다. AI나 프로토콜 경험이 없어도 시작할 수 있습니다.
🗺️ 학습 여정 개요
flowchart TD
A["🎓 레벨 1: 이해<br/>(1-2시간)"] --> B["🔧 레벨 2: 활용<br/>(2-3시간)"]
B --> C["👨💻 레벨 3: 구축<br/>(4-6시간)"]
C --> D["🚀 레벨 4: 숙련<br/>(지속)"]
A --> A1["MCP란?"]
A --> A2["왜 중요한가?"]
A --> A3["핵심 개념"]
B --> B1["Claude Desktop 설치"]
B --> B2["첫 서버 연결"]
B --> B3["서버 갤러리 둘러보기"]
C --> C1["간단한 서버 만들기"]
C --> C2["커스텀 도구 추가"]
C --> C3["실제 데이터 다루기"]
D --> D1["프로덕션 배포"]
D --> D2["고급 패턴"]
D --> D3["커뮤니티 기여"]
🎓 레벨 1: MCP 이해하기 (1-2시간)
단계 1.1: MCP란 무엇인가요? (15분)
목표: 기술 용어 없이 핵심 개념을 이해합니다.
MCP를 이렇게 생각해 보세요:
- 전통적인 AI: 인터넷이나 도구 없이 방 안에 갇힌 똑똑한 사람
- MCP를 쓰는 AI: 내 디지털 생활 전체를 조작할 수 있는 만능 리모컨을 그 사람에게 쥐여준 것
현실 세계 비유:
🏠 내 집(데이터 & 도구)
├── 📁 파일과 문서
├── 💾 데이터베이스
├── 🌐 웹 서비스
├── 📧 이메일 시스템
└── 🔧 각종 도구
🎮 MCP = 만능 리모컨
├── 🔌 무엇이든 연결
├── 🔒 안전한 접근 제어
├── 📋 표준화된 인터페이스
└── 🔄 어떤 AI와도 동작✅ 이해도 체크:
- MCP를 한 문장으로 친구에게 설명할 수 있나요?
- AI가 왜 외부 연결이 필요한지 이해했나요?
단계 1.2: MCP가 왜 중요한가요? (20분)
목표: 큰 그림과 실제 효익을 파악합니다.
MCP 이전(문제):
flowchart LR
AI1["AI 앱 1"] -.-> |커스텀 코드| DB[("데이터베이스")]
AI2["AI 앱 2"] -.-> |서로 다른 코드| DB
AI3["AI 앱 3"] -.-> |또 다른 방식| DB
AI1 -.-> |커스텀 API| WEB[("웹 서비스")]
AI2 -.-> |서로 다른 API| WEB
AI3 -.-> |또 다른 방식| WEB
문제점: 혼란, 보안 취약, 유지보수 어려움, 벤더 락인
MCP 적용(해결):
flowchart LR
AI1["AI 앱 1"] --> MCP["🎮 MCP 서버"]
AI2["AI 앱 2"] --> MCP
AI3["AI 앱 3"] --> MCP
MCP --> DB[("데이터베이스")]
MCP --> WEB[("웹 서비스")]
MCP --> FILES[("파일")]
효과: 깔끔함, 안전함, 재사용 가능, 미래 대응
✅ 이해도 체크:
- MCP가 해결하는 문제를 3가지 나열할 수 있나요?
- 본인의 업무에서 적용 가능한 유스케이스가 떠오르나요?
단계 1.3: 핵심 개념 (25분)
목표: 꼭 필요한 용어를 익힙니다.
MCP 구성 요소:
🏠 MCP Host(Claude Desktop)
├── 요청을 만드는 "두뇌"
├── 예: Claude, IDE, 커스텀 앱
└── MCP 프로토콜로 서버와 통신
🔧 MCP Server(도우미)
├── 특정 기능을 제공
├── 예: 파일 접근, DB 쿼리, 웹 검색
└── 호스트의 요청에 응답
📡 MCP Protocol(언어)
├── 호스트와 서버가 통신하는 방식
├── 표준화된 메시지 포맷
└── AI 통합을 위한 HTTP 같은 것핵심 기능:
- 🛠️ Tools(도구): AI가 수행할 수 있는 동작(파일 읽기, 이메일 보내기 등)
- 📚 Resources(리소스): AI가 접근할 수 있는 데이터(문서, DB 레코드 등)
- 💭 Prompts(프롬프트): 특정 작업을 위한 사전 작성 지침
- 🤖 Sampling(샘플링): 서버가 AI 완성(completion)을 요청할 수 있게 함
✅ 이해도 체크:
- 호스트와 서버의 차이를 설명할 수 있나요?
- 도구(tools)와 리소스(resources)가 무엇인지 알고 있나요?
🔧 레벨 2: MCP 활용하기 (2-3시간)
단계 2.1: 첫 MCP 경험 만들기 (30분)
목표: Claude Desktop에서 MCP 서버를 실제로 동작시킵니다.
준비물:
- 컴퓨터(Windows/Mac)
- 인터넷 연결
- 15분의 인내심
단계별 설정:
Claude Desktop 다운로드
🌐 접속: https://claude.ai/download 📥 OS에 맞는 버전 다운로드 ⚙️ 안내에 따라 설치설치 확인
- Claude Desktop 실행
- 설정 메뉴(⚙️) 확인
- “Developer” 섹션 찾기
첫 서버 추가
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Desktop" ] } } }동작 테스트
- Claude Desktop 재시작
- 채팅 화면에서 망치 아이콘(🔨) 확인
- 질문: “내 데스크톱에 어떤 파일이 있어?”
✅ 성공 신호:
- Claude에 망치 아이콘이 표시됨
- Claude가 데스크톱 파일 목록을 보여줌
- 가능한 시나리오가 떠올라서 설렘
단계 2.2: 다양한 서버 유형 탐색 (45분)
목표: 여러 서버를 직접 써 보며 MCP의 범용성을 체감합니다.
서버 뷔페(아래 중 2-3개만 골라서 시도):
🗂️ 파일 관리:
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/safe/folder"]
}시도해 보기: “쇼핑 목록 파일을 만들어줘”, “다운로드 폴더를 정리해줘”
🔍 웹 검색:
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {"BRAVE_API_KEY": "your-api-key"}
}시도해 보기: “MCP 튜토리얼을 찾아줘”, “최근 AI 뉴스를 찾아줘”
🧠 메모리:
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}시도해 보기: “나는 JavaScript보다 Python을 선호한다는 걸 기억해줘”, “나에 대해 무엇을 기억하고 있어?”
✅ 탐색 목표:
- 최소 2가지 서버 유형을 실제로 사용
- 서버마다 어떤 능력이 추가되는지 관찰
- 내가 만들고 싶은 통합이 무엇인지 생각해 보기
단계 2.3: 서버 갤러리 깊게 보기 (45분)
목표: 생태계를 이해하고, 내 요구에 맞는 서버를 찾는 감각을 익힙니다.
공식 서버 카테고리:
📊 데이터 & 분석:
- PostgreSQL, SQLite: 데이터베이스 접근
- Memory: 지속형 AI 메모리
- 유스케이스: “매출 데이터를 분석해줘”, “고객 선호를 기억해줘”
🔧 개발자 도구:
- GitHub, Git: 코드 저장소 접근
- Sentry: 오류 모니터링
- 유스케이스: “최근 커밋을 리뷰해줘”, “프로덕션 오류를 확인해줘”
🌐 웹 & 커뮤니케이션:
- Slack: 팀 메시징
- Fetch: 웹 스크래핑
- 유스케이스: “팀 업데이트를 보내줘”, “경쟁사 사이트를 모니터링해줘”
🎨 크리에이티브 & 특화:
- EverArt: AI 이미지 생성
- Sequential Thinking: 복잡한 추론
- 유스케이스: “마케팅 이미지를 만들어줘”, “여러 단계 문제를 풀어줘”
✅ 발견 실습:
- 전체 서버 목록을 둘러보기
- 흥미로운 서버 3개 고르기
- 내 업무에 어떻게 적용할지 상상해 보기
👨💻 레벨 3: 직접 만들어 보기 (4-6시간)
단계 3.1: 첫 커스텀 서버 만들기 (90분)
목표: 간단하지만 실제로 동작하는 MCP 서버를 처음부터 만듭니다.
프로젝트: 개인 작업(Task) 관리자 서버
구현할 기능:
- 작업을 목록에 추가
- 작업을 완료 처리
- 전체 작업 목록 출력
- 완료된 작업 삭제
개발 환경 준비:
# Create project folder
mkdir my-first-mcp-server
cd my-first-mcp-server
# Initialize Node.js project
npm init -y
# Install MCP SDK
npm install @modelcontextprotocol/sdk-typescript서버 만들기(단계별):
- 기본 구조 만들기:
// server.ts
import { Server } from '@modelcontextprotocol/sdk-typescript';
const server = new Server({
name: 'personal-tasks',
version: '1.0.0'
});
// We'll add functionality here
server.start();- 작업 저장소 추가:
// Simple in-memory storage
let tasks: Array<{id: number, text: string, done: boolean}> = [];
let nextId = 1;- 첫 도구(tool) 추가:
server.tool('add-task', 'Add a new task', {
text: { type: 'string', description: 'Task description' }
}, async (args) => {
const task = {
id: nextId++,
text: args.text,
done: false
};
tasks.push(task);
return `Added task: ${task.text}`;
});- 서버 실행 테스트:
npx tsx server.ts✅ 마일스톤 체크:
- 서버가 오류 없이 실행됨
- Claude를 통해 작업을 추가할 수 있음
- 내가 만든 것이 동작한다는 성취감
단계 3.2: 기능 확장하기 (90분)
목표: 도구를 추가해 서버의 기능을 확장합니다.
도구 더 추가하기:
// List all tasks
server.tool('list-tasks', 'Show all tasks', {}, async () => {
if (tasks.length === 0) return 'No tasks yet!';
return tasks.map(t =>
`${t.id}. [${t.done ? '✅' : '⭐'}] ${t.text}`
).join('\n');
});
// Complete a task
server.tool('complete-task', 'Mark task as done', {
id: { type: 'number', description: 'Task ID' }
}, async (args) => {
const task = tasks.find(t => t.id === args.id);
if (!task) return 'Task not found!';
task.done = true;
return `Completed: ${task.text}`;
});
// Clear completed tasks
server.tool('clear-completed', 'Remove all completed tasks', {}, async () => {
const completedCount = tasks.filter(t => t.done).length;
tasks = tasks.filter(t => !t.done);
return `Cleared ${completedCount} completed tasks`;
});영속 저장소 추가하기:
import fs from 'fs';
const TASKS_FILE = 'tasks.json';
// Load tasks on startup
function loadTasks() {
try {
const data = fs.readFileSync(TASKS_FILE, 'utf8');
tasks = JSON.parse(data);
nextId = Math.max(...tasks.map(t => t.id), 0) + 1;
} catch {
tasks = [];
nextId = 1;
}
}
// Save tasks after changes
function saveTasks() {
fs.writeFileSync(TASKS_FILE, JSON.stringify(tasks, null, 2));
}✅ 확장 목표:
- CRUD가 모두 동작
- 재시작 후에도 작업이 유지됨
- 오류 처리가 자연스럽고 안전함
단계 3.3: 실전 통합 (120분)
목표: 실제 데이터/서비스와 연결해 실전 감각을 익힙니다.
선택지:
옵션 A: 파일 기반 노트
// Add note-taking capability
server.tool('save-note', 'Save a note to file', {
title: { type: 'string' },
content: { type: 'string' }
}, async (args) => {
const filename = `notes/${args.title.replace(/\s+/g, '-')}.md`;
fs.writeFileSync(filename, args.content);
return `Note saved: ${filename}`;
});옵션 B: API 통합
// Weather integration example
server.tool('get-weather', 'Get current weather', {
city: { type: 'string' }
}, async (args) => {
const response = await fetch(
`https://api.openweathermap.org/data/2.5/weather?q=${args.city}&appid=${API_KEY}`
);
const data = await response.json();
return `Weather in ${args.city}: ${data.weather[0].description}`;
});옵션 C: 데이터베이스 연결
import sqlite3 from 'sqlite3';
// Simple database integration
server.tool('query-db', 'Query database', {
query: { type: 'string' }
}, async (args) => {
return new Promise((resolve, reject) => {
db.all(args.query, (err, rows) => {
if (err) reject(err);
else resolve(JSON.stringify(rows, null, 2));
});
});
});✅ 통합 성공 기준:
- 서버가 외부 데이터/서비스에 연결됨
- 네트워크 오류에 대한 처리 포함
- MCP의 진짜 힘이 체감됨
🚀 레벨 4: MCP 숙련하기 (지속)
탐색할 고급 주제
🏗️ 프로덕션 배포:
- Docker 컨테이너화
- 환경 구성
- 모니터링과 로깅
- 보안 모범 사례
🔧 고급 패턴:
- 리소스 스트리밍
- 배치 작업
- 커스텀 전송(transport) 계층
- 프로토콜 확장
🌟 커뮤니티 기여:
- 서버를 오픈소스로 공개
- MCP 생태계에 기여
- 다른 학습자 돕기
- 유스케이스 공유
지속 학습 리소스
📚 심화 문서:
🤝 커뮤니티 참여:
🎯 학습 로드맵 완료
자기 점검 체크리스트
레벨 1 - 이해 ✅
- MCP를 쉬운 말로 설명할 수 있음
- 가치 제안을 이해함
- 핵심 용어를 알고 있음
레벨 2 - 활용 ✅
- Claude Desktop에서 MCP를 성공적으로 설정함
- 여러 서버 유형을 사용해 봄
- 새 서버를 찾고 평가할 수 있음
레벨 3 - 구축 ✅
- 커스텀 MCP 서버를 만들었음
- 여러 도구와 기능을 추가했음
- 실제 데이터/서비스와 통합했음
레벨 4 - 숙련 🚀
- 프로덕션 고려사항을 이해함
- 커뮤니티에 적극적으로 기여함
- 다른 사람들이 MCP를 배우도록 돕고 있음
다음은 무엇을 하면 좋을까요?
성장을 계속하기 위해:
- 서버를 더 만들어 보기: 프로젝트마다 새로운 패턴을 배웁니다.
- 커뮤니티에 참여하기: 학습 내용을 공유하고 피드백을 받습니다.
- 업데이트를 따라가기: MCP는 빠르게 진화합니다.
- 다른 사람을 가르치기: 지식을 굳히는 가장 좋은 방법입니다.
커리어 기회:
- AI 통합 전문가
- MCP 서버 개발자
- 엔터프라이즈 AI 아키텍트
- 개발자 관계(DevRel, MCP 생태계)
📞 도움이 필요하신가요?
막히는 단계가 있나요? 걱정하지 마세요. 누구나 한 번쯤 겪는 과정입니다.