WIPIVERSE

정성모

개요

MCP(Model Context Protocol)는 AI 애플리케이션(특히 LLM 기반 앱)이 외부 데이터 소스와 도구에 표준화된 방식으로 연결될 수 있게 해주는 개방형 프로토콜입니다. Anthropic이 주도하여 개발했으며, 2024년 11월에 처음 공개되었습니다.

비유하자면, MCP는 AI 애플리케이션을 위한 USB-C 포트와 같습니다. USB-C가 다양한 주변기기를 표준화된 방식으로 연결하듯, MCP는 AI 모델을 다양한 데이터 소스와 도구에 표준화된 방식으로 연결합니다.


왜 MCP가 필요한가?

LLM(대규모 언어 모델)은 본질적으로 정적인 지식을 가지고 있습니다(학습 시점 기준). 외부 데이터나 실시간 정보에 접근하거나 실제 행동(API 호출, 파일 쓰기 등)을 수행하려면 별도의 통합이 필요합니다.

기존 방식의 문제점:

  • 각 AI 애플리케이션(M)과 각 도구(N) 간에 M × N개의 개별 통합이 필요
  • 매번 커스텀 코드 작성 → 유지보수 비용 증가
  • 표준 부재로 인한 비효율성

MCP의 해결책:

  • M × N 문제를 M + N으로 단순화
  • 도구 제공자는 하나의 MCP 서버만 만들면 모든 MCP 호환 클라이언트가 사용 가능
  • AI 애플리케이션 개발자는 표준 MCP 클라이언트로 모든 서버에 접근

핵심 아키텍처

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

┌─────────────────────────────────┐
│         MCP Host (AI 앱)         │
│  ┌──────────┐  ┌──────────┐     │
│  │Client 1  │  │Client 2  │ ... │
│  └────┬─────┘  └────┬─────┘     │
└───────┼──────────────┼──────────┘
        │              │
  ┌─────▼─────┐  ┌─────▼─────┐
  │Server A   │  │Server B   │
  │(로컬 파일) │  │(DB, API)  │
  └───────────┘  └───────────┘

구성 요소

구성 요소 설명
Host MCP 클라이언트를 실행하는 AI 애플리케이션 (예: Claude Desktop, VS Code, IDE)
Client 호스트 내에서 각 서버와 1:1 연결을 유지하는 프로토콜 클라이언트
Server 특정 기능(도구, 리소스, 프롬프트)을 노출하는 경량 프로그램

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

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

1. Tools (도구) — LLM이 실행할 수 있는 함수

  • 역할: AI 모델이 능동적으로 호출하여 행동을 수행
  • 비유: POST/PUT 엔드포인트
  • 예시: 파일 쓰기, DB 쿼리, API 호출, 이메일 전송
  • 프로토콜 메서드: tools/list, tools/call

2. Resources (리소스) — 읽기 전용 데이터

  • 역할: AI 모델에 컨텍스트(맥락) 제공
  • 비유: GET 엔드포인트
  • 예시: 파일 내용, DB 스키마, API 문서, 검색 결과
  • 프로토콜 메서드: resources/list, resources/read

3. Prompts (프롬프트) — 재사용 가능한 템플릿

  • 역할: 특정 작업을 위한 구조화된 상호작용 템플릿
  • 비유: 워크플로 레시피
  • 예시: "휴가 계획 세우기", "회의 요약하기"
  • 프로토콜 메서드: prompts/list, prompts/get

통신 방식

MCP는 JSON-RPC 2.0을 기반으로 하며, 두 가지 전송(Transport) 방식을 지원합니다:

전송 방식 설명
STDIO 표준 입출력 스트림을 통한 로컬 프로세스 간 통신 (로컬 서버용)
Streamable HTTP HTTP POST + Server-Sent Events(SSE)를 통한 원격 통신

생명주기 (Lifecycle)

  1. 초기화(Initialize): 클라이언트와 서버가 서로의 Capabilities(기능) 을 협상
  2. 작동(Operation): 협상된 기능을 사용하여 도구 호출, 리소스 읽기 등 수행
  3. 종료(Terminate): 연결 종료

공식 SDK

MCP는 여러 언어로 공식 SDK를 제공합니다:


간단한 예제 (Python)

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 서버가 완성됩니다. 타입 힌트만으로 JSON Schema가 자동 생성되며, 프로토콜 처리는 SDK가 모두 처리합니다.


보안 원칙

MCP는 강력한 보안 원칙을 강조합니다:

  1. 사용자 동의 및 통제 — 모든 데이터 접근과 도구 실행에 사용자 동의 필요
  2. 데이터 프라이버시 — 사용자 데이터 보호
  3. 도구 안전성 — 도구 호출 시 주의 (임의 코드 실행 가능)
  4. LLM 샘플링 통제 — 서버가 LLM에 요청할 때 사용자 승인 필요

현재 생태계

MCP는 빠르게 성장하는 생태계를 가지고 있습니다:

  • Claude Desktop, VS Code, Cursor, Zed, Continue 등 다양한 호스트 지원
  • Elasticsearch, GitHub, Slack, Notion, PostgreSQL, Sentry 등 수많은 공식/커뮤니티 서버
  • Hugging Face에서 무료 MCP 코스 제공
  • OpenAI도 자사 제품에 MCP 지원 발표

요약

MCP는 AI 애플리케이션과 외부 도구/데이터 간의 표준화된 통신 프로토콜입니다. REST가 웹 API의 표준이 된 것처럼, MCP는 AI-도구 통합의 표준이 되기 위해 설계되었습니다. 이를 통해 개발자는 더 적은 코드로 더 강력한 AI 에이전트를 구축할 수 있습니다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기