WIPIVERSE

병신과 머저리

MCP (Model Context Protocol) — 모델 컨텍스트 프로토콜

개요

MCP는 대규모 언어 모델(LLM) 애플리케이션이 외부 데이터 소스 및 도구와 표준화된 방식으로 통합될 수 있게 해주는 개방형 프로토콜입니다. 2024년 11월 25일 Anthropic이 발표했으며, 이후 OpenAI, Google DeepMind 등 주요 AI 기업들이 채택했습니다. 2025년 12월에는 Anthropic이 MCP를 Linux Foundation 산하 Agentic AI Foundation(AAIF)에 기부했습니다.

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


배경

MCP 이전에는 각 데이터 소스나 도구마다 개발자가 커스텀 커넥터를 직접 구축해야 했습니다. 이는 Anthropic이 표현한 "N×M 데이터 통합 문제"를 야기했습니다. MCP는 Language Server Protocol(LSP)의 메시지 흐름 아이디어를 차용하여 이 문제를 해결합니다.


아키텍처

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

구성 요소 설명
MCP Host (호스트) AI 애플리케이션(예: Claude Desktop, VS Code, IDE)으로, 하나 이상의 MCP 클라이언트를 생성하고 관리
MCP Client (클라이언트) 호스트 내에서 각 MCP 서버와 1:1 연결을 유지하는 컴포넌트
MCP Server (서버) 특정 기능(도구, 리소스, 프롬프트)을 노출하는 프로그램. 로컬 또는 원격으로 실행 가능
MCP Host (AI Application)
  ├── MCP Client 1 ──── MCP Server A (로컬: 파일시스템)
  ├── MCP Client 2 ──── MCP Server B (로컬: 데이터베이스)
  └── MCP Client 3 ──── MCP Server C (원격: Sentry API)

계층 구조

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

1. 데이터 계층 (Data Layer)

  • JSON-RPC 2.0 기반 프로토콜
  • 라이프사이클 관리: 연결 초기화, 기능 협상, 연결 종료
  • 서버 프리미티브: Tools, Resources, Prompts
  • 클라이언트 프리미티브: Sampling, Roots, Elicitation
  • 유틸리티: 알림, 진행 추적, 로깅

2. 전송 계층 (Transport Layer)

  • Stdio 전송: 표준 입출력 사용, 로컬 프로세스 간 통신
  • Streamable HTTP 전송: HTTP POST + Server-Sent Events, 원격 통신 지원, OAuth 인증 가능

핵심 프리미티브

서버가 제공하는 기능

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

클라이언트가 제공하는 기능

프리미티브 설명
Sampling (샘플링) 서버가 클라이언트의 LLM에게 완성 요청
Roots (루트) 서버가 작업할 URI/파일시스템 경계 탐색
Elicitation (elicitation) 서버가 사용자에게 추가 정보 요청

동작 흐름 예시

  1. 초기화: 클라이언트가 initialize 요청으로 프로토콜 버전과 기능 협상
  2. 도구 발견: 클라이언트가 tools/list로 서버의 도구 목록 조회
  3. 도구 실행: 클라이언트가 tools/call로 특정 도구 호출
  4. 알림: 서버가 notifications/tools/list_changed로 변경 사항 실시간 통지

보안 원칙

  1. 사용자 동의 및 통제: 모든 데이터 접근과 작업에 명시적 동의 필요
  2. 데이터 프라이버시: 사용자 데이터 보호, 무단 전송 금지
  3. 도구 안전성: 도구 실행 전 사용자 승인 필요
  4. LLM 샘플링 통제: 샘플링 요청 시 사용자 승인 필수

SDK 지원 언어

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

참고 서버 구현 (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 활용

참고 자료

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기