WIPIVERSE

이란 호드로

MCP = Model Context Protocol


개요

MCP는 LLM(대규모 언어 모델) 애플리케이션과 외부 데이터 소스 및 도구 간의 표준화된 연결을 제공하는 오픈 프로토콜입니다. Anthropic(앤트로픽)이 주도하여 개발되었으며, AI 애플리케이션을 위한 USB-C 포트와 같은 역할을 합니다. 즉, 다양한 데이터 소스와 도구를 LLM에 표준화된 방식으로 연결해줍니다.


왜 MCP가 필요한가?

LLM은 기본적으로 정적인 지식(학습 시점 기준)만 가지고 있고, 외부 시스템에 접근하거나 실시간 데이터를 가져올 수 없습니다. 기존에는 각 애플리케이션마다 커스텀 API 통합을 직접 개발해야 했는데, 이는 M×N 문제(M개의 앱 × N개의 도구 = 엄청난 통합 작업)를 야기했습니다.

MCP는 이 문제를 M+N으로 단순화합니다. 즉, 한 번의 표준화된 연결로 모든 도구와 앱이 통신할 수 있습니다.


핵심 아키텍처

MCP는 클라이언트-서버 아키텍처를 따릅니다:

┌─────────────────────────────────┐
│         MCP Host (AI 앱)         │
│  ┌─────────┐  ┌─────────┐      │
│  │Client 1 │  │Client 2 │ ...   │
│  └────┬────┘  └────┬────┘      │
└───────┼─────────────┼──────────┘
        │             │
   ┌────▼────┐  ┌────▼────┐
   │Server A │  │Server B │  ... (로컬/원격)
   └─────────┘  └─────────┘

구성 요소

구성 요소 설명
Host (호스트) Claude Desktop, VS Code, IDE 등 LLM 애플리케이션
Client (클라이언트) 호스트 내에서 각 서버와 1:1 연결을 유지하는 컴포넌트
Server (서버) 특정 기능(도구, 리소스, 프롬프트)을 노출하는 프로그램

3가지 핵심 프리미티브 (Primitives)

MCP 서버는 다음 세 가지 기능을 노출할 수 있습니다:

1️⃣ Tools (도구)

  • LLM이 능동적으로 호출할 수 있는 실행 가능한 함수
  • 예: 파일 검색, DB 쿼리, API 호출, 이메일 전송
  • 프로토콜: tools/list → tools/call

2️⃣ Resources (리소스)

  • 읽기 전용 데이터 소스로, LLM에 컨텍스트를 제공
  • 예: 문서 내용, DB 스키마, API 문서
  • URI 기반 접근 (예: file:///path/to/doc.md)
  • 프로토콜: resources/list → resources/read

3️⃣ Prompts (프롬프트)

  • 재사용 가능한 템플릿으로, 특정 작업을 위한 상호작용 패턴 정의
  • 예: "휴가 계획하기", "회의 요약하기"
  • 프로토콜: prompts/list → prompts/get

통신 방식

  • JSON-RPC 2.0 기반 메시지 형식 사용
  • Request/Response/Notification 세 가지 메시지 타입
  • 수명 주기 관리: 초기화 → 기능 협상 → 세션 유지 → 종료
  • 전송 방식:
    • STDIO: 로컬 프로세스 간 통신 (표준 입출력)
    • Streamable HTTP: 원격 서버 통신 (HTTP POST + SSE)

클라이언트 기능 (서버 → 클라이언트)

기능 설명
Sampling (샘플링) 서버가 클라이언트의 LLM에 추론 요청 (에이전트 워크플로우)
Elicitation (정보 요청) 서버가 사용자에게 추가 정보 요청
Logging (로깅) 디버깅 및 모니터링을 위한 로그 메시지 전송

보안 원칙

  1. 사용자 동의 및 통제: 모든 데이터 접근과 도구 실행에 명시적 동의 필요
  2. 데이터 프라이버시: 사용자 데이터는 동의 없이 전송 금지
  3. 도구 안전성: 도구 실행은 임의 코드 실행으로 간주, 주의 필요
  4. LLM 샘플링 통제: 사용자가 샘플링 요청을 승인해야 함

실제 사용 예시 (Python SDK)

from mcp.server import MCPServer

mcp = MCPServer("Demo")

@mcp.tool()
def add(a: int, b: int) -> int:
    """두 숫자를 더합니다."""
    return a + b

@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
    """이름으로 인사합니다."""
    return f"Hello, {name}!"

단 15줄로 완전한 MCP 서버를 만들 수 있습니다!


생태계

  • 공식 SDK: Python, TypeScript
  • 지원 클라이언트: Claude Desktop, VS Code, Cursor, Continue 등
  • 레퍼런스 서버: Filesystem, GitHub, Slack, PostgreSQL, Elasticsearch 등
  • 학습 자료: Hugging Face MCP 코스, 공식 문서 (modelcontextprotocol.io)

요약

MCP는 AI 애플리케이션과 외부 도구/데이터 간의 표준화된 연결 프로토콜입니다. LSP(Language Server Protocol)가 개발 도구 생태계를 표준화한 것처럼, MCP는 AI 애플리케이션 생태계를 표준화합니다. 이를 통해 개발자는 한 번의 구현으로 다양한 AI 앱과 도구를 연결할 수 있으며, 유지보수 비용을 획기적으로 줄일 수 있습니다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기