WIPIVERSE

네모 (포켓몬스터)

개요

MCP(Model Context Protocol)는 Anthropic이 2024년 11월 25일에 발표한 오픈 표준 프로토콜로, 대규모 언어 모델(LLM) 애플리케이션이 외부 데이터 소스 및 도구와 원활하게 통합될 수 있도록 하는 규격입니다. 흔히 "AI를 위한 USB-C 포트"에 비유되며, 다양한 AI 애플리케이션과 외부 시스템 간의 표준화된 연결 방식을 제공합니다.

2025년 12월, Anthropic은 MCP를 Linux Foundation 산하 AAIF(Agentic AI Foundation)에 기부했으며, Block, OpenAI 등이 공동 창립에 참여했습니다.


배경 및 필요성

LLM은 본질적으로 강력한 추론 엔진이지만, 학습 데이터의 시점에 종속되어 정적인 지식만 가지고 있으며, 실시간 데이터 접근이나 외부 시스템에서의 작업 실행 능력이 부족합니다. 전통적으로는 각 애플리케이션마다 외부 도구의 API를 직접 통합하는 방식(Custom API Integration)이 사용되었는데, 이는 M×N 문제를 야기했습니다:

  • M개의 AI 애플리케이션 × N개의 데이터 소스 = M×N개의 개별 커넥터 필요
  • 중복 개발, 유지보수 부담, 취약한 통합 구조

MCP는 이를 M+N 구조로 단순화합니다. 즉, M개의 클라이언트와 N개의 서버만 구축하면 모든 조합이 가능해집니다.


아키텍처

MCP는 클라이언트-서버 아키텍처를 따르며, 세 가지 주요 참여자로 구성됩니다:

1. MCP Host (호스트)

  • LLM 애플리케이션 자체 (예: Claude Desktop, VS Code, Cursor, IDE 등)
  • 여러 MCP 클라이언트 인스턴스를 생성하고 관리
  • 보안 정책, 사용자 동의, 컨텍스트 집계를 조정

2. MCP Client (클라이언트)

  • 호스트 내에서 각 MCP 서버와 1:1 연결을 유지하는 컴포넌트
  • 프로토콜 협상, 기능 협상, 메시지 라우팅 처리
  • 각 서버 연결 간 보안 경계 유지

3. MCP Server (서버)

  • 특정 기능(파일 시스템, 데이터베이스, API 등)을 노출하는 경량 프로그램
  • Tools, Resources, Prompts 등의 프리미티브를 통해 기능 제공
  • 로컬 프로세스(stdio transport) 또는 원격 서비스(HTTP transport)로 동작 가능
┌─────────────────────────────────┐
│        MCP Host (AI App)        │
│  ┌────────┐ ┌────────┐ ┌──────┐ │
│  │Client 1│ │Client 2│ │Client3│ │
│  └───┬────┘ └───┬────┘ └──┬───┘ │
└──────┼──────────┼──────────┼─────┘
       │          │          │
  ┌────▼──┐  ┌───▼────┐ ┌──▼────┐
  │Server │  │Server  │ │Server │
  │  A    │  │  B     │ │  C    │
  │(Local)│  │(Local) │ │(Remote)│
  └───────┘  └────────┘ └───────┘

프로토콜 계층

MCP는 두 가지 계층으로 구성됩니다:

데이터 계층 (Data Layer)

  • JSON-RPC 2.0 기반 메시지 교환
  • 생명주기 관리(초기화, 기능 협상, 종료)
  • 핵심 프리미티브(Tools, Resources, Prompts)
  • 알림(Notifications) 시스템

전송 계층 (Transport Layer)

두 가지 전송 메커니즘 지원:

  1. Stdio Transport: 표준 입출력 스트림을 통한 로컬 프로세스 간 통신 (저지연, 네트워크 오버헤드 없음)
  2. Streamable HTTP Transport: HTTP POST + Server-Sent Events(SSE)를 통한 원격 통신, OAuth 인증 지원

핵심 프리미티브 (Core Primitives)

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

1. Tools (도구)

항목 설명
기능 LLM이 능동적으로 호출하여 실행할 수 있는 함수
비유 HTTP POST/PUT 엔드포인트
예시 파일 쓰기, DB 쿼리, API 호출, 이메일 전송, 검색
제어 주체 모델(LLM) - 필요시 자동 호출 결정
프로토콜 메서드 tools/list (도구 목록 조회), tools/call (도구 실행)

2. Resources (리소스)

항목 설명
기능 LLM이 참조할 수 있는 읽기 전용 데이터
비유 HTTP GET 엔드포인트
예시 파일 내용, DB 스키마, API 문서, FAQ
제어 주체 애플리케이션 - 컨텍스트 제공 방식 결정
프로토콜 메서드 resources/list, resources/read, resources/subscribe

리소스는 직접 리소스(고정 URI)와 리소스 템플릿(동적 URI, 예: weather://forecast/{city}/{date})으로 구분됩니다.

3. Prompts (프롬프트)

항목 설명
기능 재사용 가능한 상호작용 템플릿
비유 워크플로우 레시피
예시 "휴가 계획 세우기", "회의 요약", "이메일 초안 작성"
제어 주체 사용자 - 명시적 호출 필요
프로토콜 메서드 prompts/list, prompts/get

클라이언트 측 프리미티브

서버가 클라이언트에 요청할 수 있는 기능도 있습니다:

  • Sampling: 서버가 클라이언트의 LLM을 통해 추론(completion)을 요청 (에이전트적 동작)
  • Roots: 서버가 URI/파일시스템 경계를 탐색할 수 있도록 클라이언트가 정보 제공
  • Elicitation: 서버가 사용자에게 추가 정보를 요청

생명주기 (Lifecycle)

MCP는 상태 저장 프로토콜(stateful protocol)로, 연결 초기화 시 기능 협상(Capability Negotiation)이 이루어집니다:

  1. 클라이언트 → 서버: initialize 요청 (프로토콜 버전, 지원 기능, 클라이언트 정보)
  2. 서버 → 클라이언트: initialize 응답 (프로토콜 버전, 서버 기능)
  3. 클라이언트 → 서버: notifications/initialized (준비 완료 알림)

이 과정에서 양측이 지원하는 기능(Tools, Resources, Prompts, 알림 등)을 명시적으로 선언합니다.


보안 및 신뢰 원칙

MCP는 강력한 기능(임의 데이터 접근, 코드 실행)을 가능하게 하므로, 다음과 같은 보안 원칙을 강조합니다:

  1. 사용자 동의 및 통제: 모든 데이터 접근과 작업 실행에 명시적 동의 필요
  2. 데이터 프라이버시: 사용자 데이터는 동의 없이 외부로 전송 금지
  3. 도구 안전성: 도구 호출은 임의 코드 실행에 해당하므로 주의 필요
  4. LLM 샘플링 통제: 샘플링 요청 시 사용자의 명시적 승인 필요

SDK 및 구현

Anthropic은 공식 SDK를 제공합니다:

언어 저장소
Python modelcontextprotocol/python-sdk
TypeScript modelcontextprotocol/typescript-sdk
Java/Kotlin modelcontextprotocol/java-sdk
C# modelcontextprotocol/csharp-sdk
Go Community SDK
Rust Community SDK

Python SDK 예시 (15줄 서버)

from mcp.server import MCPServer

mcp = MCPServer("Demo")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
    """Greet someone by name."""
    return f"Hello, {name}!"

채택 현황

  • OpenAI (2025년 3월): MCP 공식 채택, ChatGPT 데스크톱 앱에 통합
  • Google DeepMind (2025년 4월): MCP 채택 발표
  • VS Code, Cursor, Replit, Sourcegraph 등 주요 IDE 및 개발 도구에서 채택
  • Cloudflare: MCP 서버 배포 지원
  • Microsoft Semantic Kernel, Azure OpenAI: MCP 통합
  • Elasticsearch: 자체 MCP 서버 제공 (버전 9.3+)
  • Salesforce Headless 360: MCP 기반 라우팅 (2026년 4월 기준 450만 건의 MCP 호출 처리)

MCP Apps (공식 확장)

MCP Apps는 MCP의 공식 확장으로, 텍스트 및 구조화된 데이터를 넘어 대화형 UI(대시보드, 폼, 데이터 시각화)를 MCP 서버에서 호스트 애플리케이션(Claude, ChatGPT 등)으로 전달할 수 있게 합니다.


한계 및 보안 이슈

  • 프롬프트 인젝션(Prompt Injection): 악의적인 프롬프트를 통한 데이터 유출 가능성
  • 중독된 도구(Poisoned Tools): 신뢰할 수 없는 서버의 도구 설명이 악용될 위험
  • 프로토콜 자체가 보안을 강제할 수 없으므로, 구현체 차원의 주의가 필요

요약

MCP는 AI 애플리케이션 생태계에서 표준화된 통합 계층을 제공하여, 개발자가 각 도구/데이터 소스마다 개별 커넥터를 만들 필요 없이 한 번의 구현으로 모든 호환 클라이언트와 연결될 수 있게 합니다. 이는 LSP(Language Server Protocol)가 개발 도구 생태계에 가져온 혁신을 AI 도메인에 적용한 것으로 평가받고 있습니다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기