WIPIVERSE

심시티 2000

개요

MCP(Model Context Protocol)는 LLM(대규모 언어 모델) 애플리케이션이 외부 데이터 소스와 도구에 연결될 수 있도록 하는 개방형 표준 프로토콜입니다. Anthropic에서 만들었으며, 2024년 11월에 오픈소스로 공개되었습니다.

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


왜 MCP가 필요한가? (M×N 문제 해결)

AI 애플리케이션(M)이 여러 외부 데이터 소스와 도구(N)에 접근해야 하는 상황에서, 표준 프로토콜 없이는 M×N 개의 커스텀 통합이 필요합니다. 이는 다음과 같은 문제를 야기합니다:

  • 중복된 개발 노력
  • 복잡한 통합 계층
  • 유지보수 부담

MCP는 이를 M+N으로 단순화합니다. 즉, 애플리케이션용 M개의 클라이언트와 도구용 N개의 서버만 만들면 됩니다.


핵심 아키텍처

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

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

주요 구성 요소

구성 요소 설명
MCP Host AI 애플리케이션 (Claude Desktop, VS Code, IDE 등). 여러 MCP 클라이언트를 생성하고 관리
MCP Client 호스트 내부에서 각 서버와 1:1 연결을 유지하는 컴포넌트
MCP Server 특정 기능(도구, 리소스, 프롬프트)을 노출하는 프로그램. 로컬 또는 원격으로 실행 가능

3가지 핵심 프리미티브(Primitives)

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

1. 🛠️ Tools (도구)

  • 기능: AI 모델이 실행할 수 있는 함수
  • 비유: POST/PUT 엔드포인트
  • 예시: 파일 검색, DB 쿼리, API 호출, 이메일 전송
  • 제어 주체: 모델 (AI가 필요에 따라 호출 결정)

2. 📄 Resources (리소스)

  • 기능: 읽기 전용 데이터 소스
  • 비유: GET 엔드포인트
  • 예시: 파일 내용, DB 스키마, API 문서
  • 제어 주체: 애플리케이션 (호스트가 데이터를 가져와서 모델에 제공)

3. 💬 Prompts (프롬프트)

  • 기능: 재사용 가능한 템플릿
  • 비유: 워크플로우 레시피
  • 예시: "휴가 계획 세우기", "회의 요약하기"
  • 제어 주체: 사용자 (명시적 호출 필요)

통신 방식

MCP는 JSON-RPC 2.0을 기반으로 합니다:

메시지 타입 설명
Request 작업 요청 (고유 ID 포함)
Response 요청에 대한 응답 (결과 또는 에러)
Notification 응답이 필요 없는 단방향 메시지

주요 메서드

메서드 목적
tools/list 사용 가능한 도구 목록 조회
tools/call 특정 도구 실행
resources/list 리소스 목록 조회
resources/read 리소스 내용 읽기
prompts/list 프롬프트 목록 조회
prompts/get 프롬프트 상세 정보 조회

전송 계층 (Transport Layer)

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

  1. Stdio Transport: 표준 입출력 스트림 사용 (로컬 프로세스 간 통신, 성능 최적)
  2. Streamable HTTP Transport: HTTP POST + Server-Sent Events (원격 서버 통신, OAuth 인증 지원)

보안 원칙

MCP는 프로토콜 수준에서 다음 원칙을 강조합니다:

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

공식 SDK

언어 저장소
Python modelcontextprotocol/python-sdk
TypeScript modelcontextprotocol/typescript-sdk
C# modelcontextprotocol/csharp-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"안녕하세요, {name}님!"

단 15줄로 완전한 MCP 서버를 만들 수 있습니다. 타입 힌트만으로 JSON 스키마가 자동 생성됩니다.


현재 생태계

  • GitHub Stars: Python SDK 23,500+ ⭐
  • 공식 문서: modelcontextprotocol.io
  • Hugging Face MCP 코스: 무료 온라인 강좌 제공
  • 지원 클라이언트: Claude Desktop, VS Code, Cursor, Continue 등
  • 주요 통합: Elasticsearch, GitHub, Slack, Sentry, Cloudflare 등

요약

MCP는 AI 애플리케이션과 외부 도구/데이터 간의 표준화된 연결 프로토콜입니다. LSP(Language Server Protocol)가 개발 도구 생태계에 가져온 혁신을 AI 생태계에 적용한 것으로, 개발자는 단 한 번의 MCP 서버 구현으로 모든 MCP 호환 클라이언트에서 사용할 수 있게 됩니다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기