AI 시대가 오면서 다양한 용어들이 나오는데 그 중 AI를 위한 USB-C라고 하는 MCP에 대해 알아보겠습니다.

https://youtu.be/ukWiwYWODFI?si=UXyCDnQ-o4G9Mf1Y
#1 기초학습
https://youtu.be/7T9JSCkVGYI?si=l0o7sWhtZ5elxP-S
#2 심화학습
**MCP(Model Context Protocol)**는 고립되어 있던 AI 모델(LLM)이 외부 데이터나 도구와 소통할 수 있도록 연결해 주는 표준화된 개방형 통신 규약입니다. 초보자들도 이해하기 쉽도록 흔히 'AI 세계의 만능 어댑터' 또는 **'AI를 위한 USB-C'**라고 불립니다.
과거에는 AI 애플리케이션이 특정 데이터베이스나 로컬 파일에 접근하려면 각각 맞춤형 연결 코드를 짜야 하는 'N × M의 복잡성 병목 현상'이 있었습니다. MCP는 이를 하나의 표준으로 묶어, 한 번만 서버를 구축하면 어떤 AI 호스트 앱이든 즉시 연결할 수 있도록 구조를 단순화했습니다.
MCP의 작동 원리를 이해하기 위해서는 3가지 주요 구성 요소와 **3가지 핵심 기능(Primitives)**을 알아야 합니다.
1. MCP의 3대 구성 요소 (아키텍처)
정보가 사용자와 AI, 그리고 데이터 사이에서 어떻게 흐르는지 결정하는 세 가지 주요 역할이 있습니다.
- MCP 호스트 (Host): 사용자가 직접 대화하고 명령을 내리는 AI 애플리케이션입니다(예: Claude Desktop, Cursor, ChatGPT 등). 사용자의 요청을 해석하고, 언제 어떤 도구가 필요한지 모델에게 전달하는 전반적인 경험을 관리합니다.
- MCP 클라이언트 (Client): 호스트 앱 내부에 위치하며, 외부 서버와의 안전한 연결을 관리하는 중개자 역할을 합니다.
- MCP 서버 (Server): 특정 외부 시스템(데이터베이스, 파일, 외부 API 등)에 대한 실제 접근을 제공하는 가벼운 프로그램입니다. 어떤 AI가 자신을 호출하는지 몰라도 되며, 단순히 자신이 가진 기능을 제공하기만 하면 됩니다.
2. AI와 소통하는 3가지 핵심 기능 (Primitives)
MCP는 AI가 외부 시스템과 상호작용하는 모든 방식을 다음 세 가지 요소로 규격화합니다.
- 리소스 (Resources - 앱 제어): AI 모델이 작업을 수행하기 전 읽어볼 수 있는 '읽기 전용' 데이터입니다. 고객의 주문 내역, 회사 정책 문서, 시스템 로그 등 AI에게 풍부한 배경 정보를 제공합니다.
- 도구 (Tools - 모델 제어): AI가 상황에 맞춰 직접 선택하고 실행할 수 있는 **'행동'**입니다. 파일 작성하기, 데이터베이스에 쿼리 실행하기, 이메일 보내기 등과 같이 외부 환경에 직접적인 변화를 일으키거나 복잡한 작업을 수행할 때 쓰입니다.
- 프롬프트 (Prompts - 사용자 제어): 사용자가 AI에게 매번 길고 복잡한 지시를 내리지 않아도 되도록, 서버 측에서 미리 만들어둔 명령어 템플릿입니다. 이를 통해 AI의 답변 형식을 일관되게 유지할 수 있습니다.
3. 어떻게 작동하나요?
사용자가 호스트 앱(예: AI 챗봇)에 "다음 주 런던발 뉴욕행 항공편을 예약해 줘"라고 요청하면, 다음 과정을 거칩니다.
- AI의 판단: 호스트의 AI 모델이 요청을 해석하고, 외부 예약 시스템에 연결된 'MCP 클라이언트'를 통해 예약 서버와 소통을 시작합니다.
- 데이터 교환 (JSON-RPC): 클라이언트와 서버는 가벼운 메시지 형식인 JSON-RPC 2.0을 사용해 통신합니다. 이 통신은 내 컴퓨터 안에서 직접 이루어질 수도 있고(stdio 방식), 인터넷을 통해 원격 클라우드 서버와 이루어질 수도 있습니다(HTTP 방식).
- 도구 실행 및 결과 반환: 서버가 자신이 가진 리소스(항공사 데이터베이스)를 조회하고, 도구(항공편 검색 및 결제 실행)를 호출하여 결과를 클라이언트로 다시 보냅니다.
- 최종 응답: 호스트 앱이 이 데이터를 바탕으로 사용자에게 자연스러운 언어로 결과를 답변합니다.
요약하자면, MCP는 AI 모델이라는 '두뇌'가 세상의 다양한 도구와 데이터를 안전하고 일관된 방식으로 사용할 수 있게 해주는 만능 통신 인터페이스입니다.
그럼 기존에 API(Application Programming Interface)와는 무슨 차이가 있는거지? 라는 궁금즘이 생깁니다.
**API(Application Programming Interface)**와 **MCP(Model Context Protocol)**는 서로 다른 소프트웨어 시스템을 연결해 준다는 점에서 목적이 유사해 보이지만, 소통 대상, 표준화 방식, 작동 구조에서 다음과 같은 근본적인 차이가 있습니다.
1. 설계 대상의 차이: 기계용 vs AI 에이전트용
- **전통적인 API(예: REST API)**는 결정론적(deterministic)인 동작을 수행하도록 설계되었습니다. 즉, 인간 개발자가 작성한 프로그램 코드에 의해 미리 정의된 특정 엔드포인트를 고정된 순서로 호출하는 기계 대 기계(software-to-software) 간의 소통 방식입니다.
- MCP는 처음부터 AI 에이전트(AI-to-tool)를 위해 설계되었습니다. AI 에이전트가 어떤 도구를 사용할 수 있는지 스스로 파악하고(Dynamic Tool Discovery), 주어진 상황과 컨텍스트에 맞춰 자율적으로 도구 사용 순서를 결정하고 연쇄적으로 실행할 수 있도록 지원합니다.
2. 소통 방식의 차이: 엄격한 데이터 규격 vs 자연어 기반 스키마
- API를 사용하려면 개발자가 해당 API 규격에 맞춰 파라미터 이름, 데이터 타입, 전송 주소를 엄격하게 코딩으로 매칭해 주어야 합니다. AI 모델은 복잡하고 다중으로 중첩된 API 명세를 실시간으로 정확하게 해석하고 제어하는 데 한계를 보입니다.
- MCP는 규격화된 JSON 스키마 내에 **자연어로 작성된 설명(Description)**을 포함합니다. "이 도구가 무슨 일을 하고, 어떤 인수가 왜 필요한지" 자연어로 설명해 두면, AI 모델이 이 설명을 직접 읽고 이해해 필요할 때 알아서 알맞은 값을 대입해 도구를 호출합니다.
3. 통합(Integration)의 복잡도 해결: N × M vs N + M
- 기존 API 방식: N개의 AI 어플리케이션과 M개의 데이터 소스/도구(Slack, Notion, DB 등)를 직접 연동하려면 총 N × M개의 고유한 연동 코드를 개발자가 일일이 짜고 유지보수해야 했습니다.
- MCP 방식: AI를 위한 만능 어댑터(일종의 USB-C) 역할을 하여 복잡도를 N + M으로 획기적으로 낮춥니다. 개발자가 제공하려는 기능(예: DB 조회)을 하나의 표준화된 MCP 서버로 만들어두면, MCP 프로토콜을 지원하는 모든 AI 호스트(클로드, 커서, ChatGPT 등)가 추가 개발 없이 즉시 해당 서버와 연결하여 그 기능을 활용할 수 있습니다.
4. 흐름의 차이: 단방향 vs 양방향(Bidirectional) 워크플로우
- 기존 API는 클라이언트가 요청을 보내면 서버가 단순히 응답을 돌려주는 단방향 형태가 지배적입니다.
- MCP는 실행 도중에 서버가 클라이언트(AI)에게 역으로 필요한 추가 정보를 묻거나 새로운 추론을 요청할 수 있는 양방향 다회전(Multi-round-trip) 상호작용을 네이티브하게 지원합니다.
5. API와 MCP의 관계: 상호 보완성
- MCP가 기존의 API를 쓸모없게 만들거나 완전히 대체하는 기술은 아닙니다. 대다수의 MCP 서버는 **기존에 구축된 REST API나 데이터베이스를 내부적으로 랩핑(wrap)**하여, AI 에이전트가 이해하고 조작하기 편리한 '에이전트 친화적 포맷'으로 가공해 주는 다리 역할을 수행합니다.
MCP가 나왔다고 해서 API가 없어지는 것은 아닙니다.
다만 AI가 이해할 수 있고 사용할 수 있도록 진화됐다고 보시면 됩니다.
사용예제를 가지고 한번 보겠습니다.
인공지능 모델(LLM)은 이미 학습이 완료된 상태로 데이터가 고정되어 있기 때문에, "오늘 서울 날씨 어때?"와 같은 실시간 질문에는 스스로 답하지 못하고 그럴싸한 거짓말(할루시네이션)을 지어내게 됩니다. 실시간 날씨를 정확하게 알려주려면 기상청 등 외부 날씨 정보 서비스(도구)와 연결할 수 있는 다리를 놓아주어야 합니다.
이 다리를 놓는 두 가지 방법인 전통적인 API 방식과 최신의 MCP 방식을 가장 쉬운 비유와 코드로 비교해 드리겠습니다.
1. API 방식: 기상청 직원과 직접 수동 전화를 연결하는 방식
API 방식은 개발자가 기상청의 주소와 데이터 전송 규칙을 일일이 확인하고 맞춰가며 중간에서 코드로 일일이 직접 연결해 주는 방식입니다.
# [API 방식 예제 - FastAPI]
from fastapi import FastAPI
app = FastAPI()
# 개발자가 기상청의 특정 웹 주소(/weather)를 고정하고,
# 영어 변수명(city)을 엄격한 규칙으로 지정하여 문을 열어두어야 합니다.
@app.post("/weather")
def get_weather(city: str):
# 정해진 규칙대로 들어온 데이터에 맞춰 결과를 기계적으로 반환합니다.
return {"city": city, "weather": "맑음", "temperature": "24°C"}
- 한계: AI가 이 날씨 API를 쓰게 하려면 개발자가 매번 중간에서 "만약 날씨 질문이 들어오면 /weather 경로로 데이터를 요청하고 받아오렴" 하고 작동 흐름을 일일이 수동 코딩으로 조율해 주어야 합니다.
2. MCP 방식: 날씨 서비스 뒤에 '만능 USB-C' 포트를 꽂아두는 방식
MCP 방식은 날씨 서비스 뒤에 'AI용 만능 어댑터(USB-C)' 포트를 탑재하는 것과 같습니다.
이렇게 해두면 개발자가 AI와 도구를 억지로 이어주는 복잡한 다리 코드를 짤 필요가 없습니다. 단순히 날씨 도구의 이름과 **자연어 설명(Docstring)**만 적어두면, AI가 포트를 통해 설명을 직접 읽고 이해해 알아서 가져다 씁니다.
# [MCP 방식 예제 - FastMCP]
from mcp.server.fastmcp import FastMCP
# 날씨 서비스를 제공하는 MCP 서버를 만듭니다
mcp = FastMCP("Weather Server")
# 데코레이터만 달아주면 AI가 마음대로 껐다 켤 수 있는 '도구(Tool)'로 등록됩니다.
@mcp.tool()
def check_city_weather(city: str) -> str:
"""지정된 도시(city)의 현재 날씨와 온도를 알려주는 날씨 조회 도구입니다.
AI 모델은 사용자가 실시간 날씨를 물어볼 때 이 도구를 사용합니다.
"""
# AI는 위의 한글 설명을 직접 읽고 해석하여 스스로 도시명을 대입해 실행합니다.
return f"현재 {city}의 날씨는 맑고 온도는 24°C입니다."
💡 아주 쉽게 보는 상호작용 차이
- API를 쓸 때: 사용자가 *"서울 날씨 어때?"*라고 물어보면, AI는 이 API를 어떻게 다뤄야 하는지 스스로 알지 못합니다. 개발자가 미리 AI에게 *"사용자가 날씨를 물어보면 /weather 주소에 영어로 서울(seoul)을 집어넣어 전화를 걸어라"*라고 정적인 사용법을 일일이 프로그래밍해 학습시켜 주어야 작동합니다.
- MCP를 쓸 때: 사용자가 *"서울 날씨 어때?"*라고 물어보면, AI는 포트에 연결된 MCP 서버에 "너 무슨 능력을 갖추고 있어?" 하고 물어봅니다. MCP 서버가 들고 있는 도구 설명서(check_city_weather의 "도시의 날씨와 온도를 알려주는 도구")를 훑어본 AI는, "아! 서울(seoul)이라는 값을 집어넣어 이 도구를 스스로 실행하면 되겠구나!" 하고 동적으로 도구를 판단하여 JSON-RPC 통신을 통해 서울 날씨를 알아서 가져옵니다.
요약하자면, API는 연결할 때마다 전용 전선 코드를 새로 납땜하는 복잡한 수동 작업이고, MCP는 표준 USB-C 포트에 날씨 모듈을 '딸깍' 꽂아두기만 하면 AI가 알아서 사용 설명서를 읽고 사용하는 만능 어댑터입니다.

'바이브코딩' 카테고리의 다른 글
| 프론트엔드 빌드 툴 webpack 부터 vite 까지 (0) | 2026.07.03 |
|---|---|
| 디지털 집 짓기 바이브코딩 해설 (0) | 2026.07.03 |
| 브라우저에서 바로 이미지를 PDF로 — SvelteKit 기반 Image to PDF 제작기 (0) | 2026.07.01 |
| 나만의 실시간 주식 대시보드 by Google Antigravity (0) | 2026.07.01 |
| 클로드 AI를 이용해 만들어 본 이미지 번역 브라우저 확장앱 (0) | 2025.03.12 |