API / SDK / MCP는 모두 “외부 시스템과 소통하기 위한 층위”이지만,
그 역할과 사용 주체, 목적, 작동 방식이 전혀 다릅니다.
아래는 세 가지를 구조적으로 비교·설명한 자료입니다 👇
by chatgpt
🧠 API · SDK · MCP 개념 총정리
1️⃣ 핵심 개념 요약
| 구분 |
API (Application Programming Interface) |
SDK (Software Development Kit) |
MCP (Model Context Protocol) |
| 정의 |
서로 다른 소프트웨어가 통신할 수 있도록 만든 표준화된 접속 규칙·문 |
특정 API를 더 쉽게 쓰기 위한 개발 도구 세트 (라이브러리, 코드, 예제 포함) |
AI 모델이 외부 도구(API, DB, 앱 등)를 표준 방식으로 호출·이해하게 하는 프로토콜(약속) |
| 주 사용 주체 |
👩💻 사람(개발자) |
👩💻 사람(개발자) |
🤖 AI 모델 (Claude, GPT, Cursor 등) |
| 주된 목적 |
서비스 간 데이터 교환 |
API를 쉽게 쓰도록 지원 |
AI가 외부 시스템을 스스로 사용하게 함 |
| 작동 형태 |
네트워크 요청 (REST, GraphQL 등) |
코드 내 함수 호출 (client.method()) |
AI ↔ MCP 서버 간 표준 통신 (JSON-RPC, WebSocket 등) |
| 결과 형태 |
JSON / XML 응답 |
코드 내 값 (객체, 문자열 등) |
AI가 이해할 수 있는 Tool Result(JSON) |
| 예시 |
POST https://api.openai.com/v1/completions |
openai.chat.completions.create() |
browser-tools-mcp, notion-mcp, figma-mcp |
2️⃣ 작동 구조 비교 (흐름도)
🧩 API
내 앱 ──(HTTP 요청)──> 외부 서비스
<──(응답 JSON)──
- 내가 직접 네트워크 요청을 작성
- 예: “/v1/messages” 엔드포인트로 Claude에게 POST 요청
🧰 SDK
내 앱 ──(SDK 코드 내부에서 API 호출)──> 외부 서비스
- API 호출 과정을 SDK가 자동 처리
- 예:
const res = await client.messages.create({ ... })
- 내부적으로 API를 대신 호출함 (API wrapper 역할)
🧠 MCP
AI 모델 ⇄ MCP 서버 ⇄ 외부 API / SDK
- AI가 스스로 도구를 요청 (“notion-mcp: get tasks”)
- MCP 서버가 실제 API/SDK 호출 수행
- 결과를 표준화된 JSON 형식으로 AI에 반환
3️⃣ 핵심 차이 포인트
| 항목 |
API |
SDK |
MCP |
| 누가 호출? |
개발자 |
개발자 |
AI 모델 |
| 역할 |
통신 규약 |
통신 도우미 |
AI용 도구 인터페이스 |
| 위치 |
외부 서버 |
내 코드 내부 |
별도 MCP 서버 (AI와 연결됨) |
| 복잡도 |
가장 낮음 (기초 단위) |
중간 (편의 레이어) |
가장 높음 (AI 협업용 표준) |
| 구성 요소 |
Endpoints, Methods |
API Wrapper, Helper, Docs |
Protocol Spec, JSON Schema, Tool Handlers |
| 예시 |
RESTful API, GraphQL |
@anthropic-ai/sdk, @notionhq/client |
browser-tools-mcp, playwright-mcp, context7 |
| 대상 |
서비스 ↔ 개발자 |
SDK ↔ 개발자 |
AI 모델 ↔ 외부 도구 |
4️⃣ 쉽게 비유하자면 🚕
| 역할 |
비유 |
설명 |
| API |
📞 “전화로 택시 부르는 법을 알려주는 안내문” |
‘전화번호’, ‘명령어’, ‘응답 방식’만 있음 |
| SDK |
📱 “버튼 한 번으로 택시 부르는 앱” |
내부에서 API 호출을 알아서 처리 |
| MCP |
🤖 “AI가 직접 앱을 눌러 택시를 부르는 자동 비서” |
AI가 SDK·API를 직접 쓰지 않아도 MCP를 통해 요청 가능 |
5️⃣ Claude / OpenAI 환경으로 본 실제 예시
| 목적 |
API 사용 |
SDK 사용 |
MCP 사용 |
| Claude에게 텍스트 생성 요청 |
POST /v1/messages HTTP 요청 직접 작성 |
client.messages.create() |
Cursor의 Claude MCP가 대화 중 자동 호출 |
| Notion 데이터 조회 |
fetch('https://api.notion.com/v1/pages') |
notion.pages.query() |
AI → notion-mcp → 내부에서 SDK 호출 → 응답 전달 |
| 웹 크롤링 실행 |
직접 Playwright 스크립트 작성 |
Playwright SDK 호출 |
AI → playwright-mcp → 브라우저 자동 탐색 |
6️⃣ 관계 구조 한눈에 보기
┌───────────────┐
│ 외부 서비스 │ (OpenAI, Notion, Figma 등)
└──────┬────────┘
│
┌──────▼───────┐
│ API │ ← 기본 통신 규칙
└──────┬───────┘
│
┌──────▼───────┐
│ SDK │ ← 사람이 쉽게 쓰게 한 라이브러리
└──────┬───────┘
│
┌──────▼───────┐
│ MCP │ ← AI가 자동으로 쓰게 한 표준 프로토콜
└──────────────┘
✅ 한 줄 요약
- API = “서비스와 대화하는 문(규칙)”
- SDK = “그 문을 사람이 쉽게 열게 해주는 도구 세트”
- MCP = “그 문을 AI가 스스로 열 수 있게 만든 표준 언어”