WIPIVERSE

종의 기원

개요

MCP(Model Context Protocol)는 Anthropic이 개발한 오픈 프로토콜로, LLM(대규모 언어 모델) 애플리케이션과 외부 데이터 소스 및 도구 간의 원활한 통합을 가능하게 합니다. 마치 USB-C 포트가 다양한 주변기기를 표준화된 방식으로 연결하듯, MCP는 AI 모델을 다양한 데이터 소스와 도구에 연결하는 표준화된 인터페이스를 제공합니다.


왜 MCP가 필요한가?

AI 애플리케이션(M)이 다양한 외부 데이터 소스와 도구(N)에 접근해야 하는 상황에서, 표준화된 프로토콜이 없다면 M×N 개의 개별 통합이 필요합니다. MCP는 이를 M+N으로 단순화하여 개발자들이 매번 새로운 API를 배우고 유지보수할 필요 없이, 한 번의 구현으로 모든 호환 시스템과 연결할 수 있게 합니다.


핵심 아키텍처

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

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

주요 구성 요소

구성 요소 설명
MCP Host Claude Desktop, VS Code, IDE 등 AI 애플리케이션
MCP Client 호스트 내에서 각 서버와 1:1 연결을 유지하는 프로토콜 클라이언트
MCP Server 특정 기능(파일 접근, DB 쿼리, API 호출 등)을 제공하는 경량 프로그램

3대 핵심 프리미티브 (Primitives)

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

1. 🛠️ Tools (도구)

  • LLM이 능동적으로 호출할 수 있는 실행 가능한 함수
  • 파일 쓰기, DB 쿼리, API 호출 등 액션 수행
  • 예: searchFlights(), createCalendarEvent(), sendEmail()

2. 📄 Resources (리소스)

  • 읽기 전용 데이터 소스로 AI에 컨텍스트 제공
  • 파일 내용, DB 스키마, API 문서 등
  • 고정 URI(file:///doc.md) 또는 동적 템플릿(weather://{city}) 지원

3. 💬 Prompts (프롬프트)

  • 재사용 가능한 템플릿으로 상호작용 구조화
  • 특정 도메인에 최적화된 워크플로우 제공
  • 예: "여행 계획 세우기", "회의 요약하기"

통신 방식

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

전송 방식 설명
STDIO 표준 입출력 스트림을 통한 로컬 프로세스 간 통신 (고성능)
Streamable HTTP HTTP POST + SSE를 통한 원격 서버 통신 (OAuth 인증 지원)

주요 특징

  1. 표준화된 통합: 모든 MCP 호환 클라이언트가 모든 MCP 서버와 통신 가능
  2. 보안 중심: 사용자 동의 기반, 데이터 프라이버시 보호, 도구 실행 승인 절차
  3. 확장성: 필요에 따라 기능을 점진적으로 추가 가능
  4. 양방향 통신: 서버가 클라이언트에 샘플링 요청, 사용자 입력 요청 가능
  5. 실시간 업데이트: 알림(Notification)을 통한 동적 변경 사항 전파

공식 SDK

언어 저장소
Python modelcontextprotocol/python-sdk
TypeScript modelcontextprotocol/typescript-sdk

간단한 예제 (Python SDK)

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

활용 사례

  • AI 기반 IDE (VS Code, Cursor 등)에서 코드베이스 접근
  • 데이터베이스 쿼리 도구
  • GitHub, Slack, Notion 등 서드파티 서비스 연동
  • 파일 시스템 접근 및 관리
  • 검색 엔진 (Elasticsearch 등) 통합

참고 자료

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기