WIPIVERSE

교수님을 빚는 중

개요

MCP(Model Context Protocol)는 2024년 11월 25일 Anthropic이 발표한 개방형 프로토콜(open protocol)로, 대규모 언어 모델(LLM) 애플리케이션이 외부 데이터 소스 및 도구와 연결되는 방식을 표준화한다. 흔히 "AI를 위한 USB-C 포트"에 비유되며, 다양한 AI 모델과 외부 시스템 간의 표준화된 연결 인터페이스를 제공한다.

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


배경 및 필요성

LLM은 본질적으로 정적인 지식(학습 시점 기준)을 가지며, 외부 데이터나 실시간 정보에 접근할 수 있는 기본 기능이 없다. 전통적으로는 각 애플리케이션-데이터 소스 쌍마다 커스텀 API 통합이 필요했는데, 이는 M×N 통합 문제(M개의 AI 앱 × N개의 데이터 소스)를 야기했다.

MCP는 이 문제를 M+N 구조로 단순화한다. 즉, 개발자는 M개의 클라이언트(자신의 앱용)와 N개의 서버(도구용)만 구축하면 된다.


아키텍처

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

1. MCP 호스트 (Host)

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

2. MCP 클라이언트 (Client)

  • 호스트 내부에서 각 MCP 서버와 1:1 전용 연결을 유지하는 컴포넌트
  • 프로토콜 협상, 메시지 라우팅, 알림 처리 담당

3. MCP 서버 (Server)

  • 특정 기능(파일 시스템, 데이터베이스, API 등)을 노출하는 경량 프로그램
  • 로컬(stdio transport) 또는 원격(Streamable HTTP transport)으로 실행 가능
┌─────────────────────────────┐
│   MCP 호스트 (AI 애플리케이션)   │
│  ┌─────────┐ ┌─────────┐    │
│  │Client 1 │ │Client 2 │ ...│
│  └────┬────┘ └────┬────┘    │
└───────┼───────────┼─────────┘
        │           │
   ┌────▼────┐ ┌───▼──────┐
   │Server A │ │Server B  │ ...
   │(로컬)    │ │(원격)     │
   └─────────┘ └──────────┘

프로토콜 계층

1. 데이터 계층 (Data Layer)

  • JSON-RPC 2.0 기반 메시지 교환
  • 생명주기 관리: 연결 초기화, 기능 협상(capability negotiation), 종료
  • 서버 프리미티브: Tools, Resources, Prompts
  • 클라이언트 프리미티브: Sampling, Elicitation, Logging

2. 전송 계층 (Transport Layer)

  • Stdio transport: 로컬 프로세스 간 표준 입출력 통신
  • Streamable HTTP transport: 원격 서버 통신, HTTP POST + Server-Sent Events, OAuth 인증 지원

핵심 프리미티브 (Primitives)

서버 측

프리미티브 설명 예시
Tools LLM이 호출할 수 있는 실행 가능한 함수 (Action) 파일 읽기, DB 쿼리, API 호출
Resources LLM에 컨텍스트를 제공하는 데이터 소스 (읽기 전용) 문서 내용, DB 스키마, API 응답
Prompts 상호작용을 구조화하는 재사용 가능한 템플릿 시스템 프롬프트, few-shot 예제

클라이언트 측

프리미티브 설명
Sampling 서버가 클라이언트의 LLM에게 추론(completion)을 요청
Elicitation 서버가 사용자에게 추가 정보를 요청
Logging 서버가 클라이언트에 로그 메시지 전송

통신 흐름 예시

1. 초기화 (Lifecycle Management)

// 클라이언트 → 서버
{
  "jsonrpc": "2.0", "id": 1, "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": { "elicitation": {} },
    "clientInfo": { "name": "example-client", "version": "1.0.0" }
  }
}

// 서버 → 클라이언트 (응답)
{
  "jsonrpc": "2.0", "id": 1,
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": { "tools": { "listChanged": true }, "resources": {} },
    "serverInfo": { "name": "example-server", "version": "1.0.0" }
  }
}

2. 도구 발견 및 실행

// 도구 목록 요청
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }

// 도구 실행
{
  "jsonrpc": "2.0", "id": 3, "method": "tools/call",
  "params": {
    "name": "weather_current",
    "arguments": { "location": "San Francisco", "units": "imperial" }
  }
}

SDK 지원 언어

MCP는 다양한 언어로 공식 SDK를 제공한다:

언어 저장소
Python @modelcontextprotocol/python-sdk
TypeScript @modelcontextprotocol/typescript-sdk
Java @modelcontextprotocol/java-sdk
Kotlin @modelcontextprotocol/kotlin-sdk
C# @modelcontextprotocol/csharp-sdk
Go @modelcontextprotocol/go-sdk
Ruby @modelcontextprotocol/ruby-sdk
Rust @modelcontextprotocol/rust-sdk
Swift @modelcontextprotocol/swift-sdk
PHP @modelcontextprotocol/php-sdk

참조 서버 구현 (Reference Servers)

공식 저장소(modelcontextprotocol/servers)에서 제공하는 참조 서버:

  • Everything - 테스트/참조 서버
  • Fetch - 웹 콘텐츠 가져오기
  • Filesystem - 안전한 파일 작업
  • Git - Git 저장소 읽기/검색/조작
  • Memory - 지식 그래프 기반 메모리 시스템
  • Sequential Thinking - 단계적 사고 추론
  • Time - 시간 및 시간대 변환

채택 현황

  • OpenAI (2025년 3월): MCP 공식 채택, ChatGPT 데스크톱 앱에 통합
  • Google DeepMind (2025년 4월): MCP 채택 발표
  • Microsoft: Semantic Kernel, Azure OpenAI와 통합
  • Cloudflare: MCP 서버 배포 지원
  • Salesforce: Headless 360 플랫폼에서 MCP 라우팅 (2026년 4월 기준 450만 건의 MCP 호출 처리)
  • Elastic: Elasticsearch MCP 서버 (호스티드 엔드포인트) 제공

보안 고려사항

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

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

2025년 4월, 보안 연구진은 MCP의 프롬프트 인젝션 및 중독된 도구를 통한 데이터 유출 가능성을 보고했다.


관련 프로젝트

  • Agent2Agent (A2A): AI 에이전트 간 통신을 위한 개방형 프로토콜 (Google)
  • MCP Apps: MCP의 공식 확장으로, 대화형 UI(대시보드, 폼, 데이터 시각화)를 MCP 서버에서 호스트 앱으로 전달
  • Language Server Protocol (LSP): MCP가 영감을 받은 프로토콜 (개발 도구용)

참고 자료

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기