WIPIVERSE

도쿄 디즈니 리조트

MCP (Model Context Protocol)은 Anthropic이 2024년 11월 25일에 발표한 개방형 프로토콜로, AI 애플리케이션(특히 LLM)이 외부 데이터 소스와 도구에 표준화된 방식으로 연결될 수 있도록 설계되었습니다. 흔히 "AI를 위한 USB-C" 라고 비유됩니다.


1. 배경 및 탄생

  • 개발자: Anthropic의 엔지니어 David Soria Parra와 Justin Spahr-Summers
  • 동기: AI 시스템이 다양한 데이터 소스(파일, DB, API 등)와 통합될 때마다 맞춤형 커넥터를 개발해야 하는 "N×M 데이터 통합 문제" 해결
  • 영감: Language Server Protocol (LSP)의 메시지 흐름 아이디어를 차용
  • 2025년 12월, Anthropic은 MCP를 Linux Foundation 산하 Agentic AI Foundation (AAIF) 에 기증

2. 핵심 아키텍처

MCP는 클라이언트-호스트-서버 3계층 구조를 따릅니다.

┌─────────────────────────────────┐
│         MCP Host (AI App)       │  ← Claude Desktop, IDE, AI 도구
│  ┌──────────┐ ┌──────────┐     │
│  │ Client 1 │ │ Client 2 │ ...  │  ← 각 서버와 1:1 연결
│  └────┬─────┘ └────┬─────┘     │
└───────┼────────────┼───────────┘
        │            │
   ┌────▼────┐  ┌────▼────┐
   │ Server A│  │ Server B│       ← 파일시스템, DB, GitHub, Slack 등
   └─────────┘  └─────────┘
구성 요소 설명
Host LLM 애플리케이션 (Claude Desktop, VS Code, ChatGPT 등). 여러 Client 인스턴스를 생성/관리
Client Host 내부에서 각 Server와 1:1 연결을 유지하는 프로토콜 클라이언트
Server 특정 기능(파일 접근, DB 쿼리, API 호출 등)을 제공하는 경량 프로그램. 로컬 또는 원격 실행 가능

3. 전송 계층 (Transport Layer)

MCP는 두 가지 전송 방식을 지원합니다:

방식 설명
STDIO 표준 입출력 스트림을 통한 로컬 프로세스 간 통신 (고성능, 네트워크 오버헤드 없음)
Streamable HTTP HTTP POST + Server-Sent Events(SSE)를 통한 원격 통신. OAuth, Bearer Token 등 인증 지원

4. 데이터 계층 (Data Layer) - 핵심 프리미티브

MCP는 JSON-RPC 2.0 기반으로 통신하며, 서버가 노출할 수 있는 3가지 핵심 프리미티브가 있습니다:

🛠️ Tools (도구)

  • LLM이 능동적으로 호출할 수 있는 실행 가능한 함수
  • 파일 쓰기, DB 쿼리, API 호출, 이메일 전송 등 동작 수행
  • tools/list → tools/call 순서로 사용
  • 예: searchFlights(), createCalendarEvent(), sendEmail()

📄 Resources (리소스)

  • 읽기 전용 데이터 소스로, AI 애플리케이션이 컨텍스트로 활용
  • 파일 내용, DB 스키마, API 문서 등
  • resources/list → resources/read
  • URI 기반 (예: file:///path/to/doc.md, weather://forecast/{city})

💬 Prompts (프롬프트)

  • 재사용 가능한 템플릿으로, 사용자가 명시적으로 호출
  • 특정 도메인의 워크플로우나 상호작용 패턴 정의
  • prompts/list → prompts/get
  • 예: "Plan a vacation" 프롬프트 (목적지, 기간, 예산 입력)

클라이언트 측 프리미티브

기능 설명
Sampling 서버가 클라이언트의 LLM에게 완성(completion)을 요청
Roots 서버가 작업할 URI/파일시스템 경계를 질의
Elicitation 서버가 사용자에게 추가 정보 입력 요청

5. 생명주기 (Lifecycle)

  1. 초기화 (Initialize): 클라이언트-서버 간 프로토콜 버전 협상 및 Capability Negotiation (지원 기능 선언)
  2. 준비 완료 (Initialized Notification): notifications/initialized 전송
  3. 운영: Tool 호출, Resource 읽기, Notification 수신 등
  4. 종료: 세션 종료

6. 채택 현황

기업/플랫폼 내용
OpenAI 2025년 3월 MCP 채택 발표, ChatGPT 데스크톱 앱에 통합
Google DeepMind 2025년 4월 MCP 채택
Microsoft Semantic Kernel, Azure OpenAI와 통합
Cloudflare MCP 서버 배포 지원
Salesforce Headless 360 플랫폼에서 MCP 기반 라우팅 (4.5M+ 호출 처리)
Replit, Sourcegraph AI 코딩 어시스턴트에 MCP 적용

7. SDK 지원 언어

언어 저장소
Python github.com/modelcontextprotocol/python-sdk
TypeScript github.com/modelcontextprotocol/typescript-sdk
Java github.com/modelcontextprotocol/java-sdk
Kotlin, C#, Go, PHP, Perl, Ruby, Rust, Swift 커뮤니티 및 공식 지원

8. 보안 고려사항

MCP는 강력한 기능(임의 코드 실행, 데이터 접근)을 제공하므로 다음 원칙이 중요합니다:

  • 사용자 동의 및 통제: 모든 데이터 접근과 작업에 명시적 동의 필요
  • 데이터 프라이버시: 호스트는 사용자 데이터를 서버에 노출하기 전 동의 획득
  • 도구 안전성: 도구는 임의 코드 실행으로 간주, 사용자 승인 필요
  • LLM 샘플링 제어: 샘플링 요청 시 사용자 승인 필수

2025년 4월 보안 연구에서는 프롬프트 인젝션 및 중독된 도구를 통한 데이터 유출 가능성이 보고되었습니다.


9. 간단한 예시 (Python SDK v2)

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}!"

단 15줄로 완전한 MCP 서버 완성. 타입 힌트만으로 JSON Schema가 자동 생성됩니다.


10. 요약

MCP는 AI 애플리케이션과 외부 세계를 연결하는 표준 프로토콜로, USB-C가 다양한 주변기기를 하나의 포트로 연결하듯, AI 모델이 다양한 데이터 소스와 도구에 표준화된 방식으로 접근할 수 있게 합니다. Anthropic이 시작했지만 현재는 OpenAI, Google, Microsoft 등 주요 AI 기업들이 모두 채택한 업계 표준으로 자리잡고 있습니다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기