WIPIVERSE

잠재된 동성애

MCP는 Model Context Protocol의 약자로, LLM(대규모 언어 모델) 애플리케이션이 외부 데이터 소스와 도구에 표준화된 방식으로 연결될 수 있게 해주는 개방형 프로토콜입니다. Anthropic에서 개발했으며, AI 애플리케이션을 위한 USB-C 포트와 같은 역할을 합니다.


🎯 MCP가 필요한 이유

LLM은 기본적으로 훈련 시점에 고정된 지식만 가지고 있어 실시간 데이터 접근이나 외부 시스템과의 상호작용이 불가능합니다. 전통적으로는 각 도구마다 커스텀 API 통합이 필요했지만, MCP는 이를 표준화하여 개발 복잡성을 획기적으로 줄입니다.

  • M×N 문제 해결: M개의 AI 앱 × N개의 도구 → M+N 개의 연결만 필요
  • 재사용성: 한 번 만든 MCP 서버로 모든 호환 클라이언트에서 사용 가능
  • 보안: 명확한 권한 경계와 사용자 동의 체계 내장

🏗️ 아키텍처

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

┌─────────────────────────────────┐
│  MCP Host (AI 애플리케이션)       │
│  ┌─────────┐ ┌─────────┐       │
│  │Client 1 │ │Client 2 │  ...  │
│  └────┬────┘ └────┬────┘       │
└───────┼───────────┼────────────┘
        │           │
   ┌────▼────┐ ┌────▼────┐
   │Server A │ │Server B │  ...
   │(파일시스템)│ │(DB)     │
   └─────────┘ └─────────┘
구성 요소 설명
Host Claude Desktop, VS Code, IDE 등 AI 앱
Client Host 내에서 각 서버와 1:1 연결을 유지
Server 특정 기능(파일, DB, API 등)을 노출하는 경량 프로그램

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

프리미티브 기능 비유 설명
Tools 🛠️ 실행 가능한 함수 POST/PUT LLM이 파일 쓰기, API 호출, DB 쿼리 등 액션 수행
Resources 📄 데이터 소스 GET 문서, DB 스키마, API 응답 등 컨텍스트 제공 (읽기 전용)
Prompts 📝 템플릿 워크플로 레시피 재사용 가능한 상호작용 템플릿

🔌 통신 방식

  • JSON-RPC 2.0 기반 메시지 형식
  • Stdio Transport: 로컬 프로세스 간 통신 (표준 입출력)
  • Streamable HTTP Transport: 원격 서버 통신 (HTTP POST + SSE)
  • 생명주기 관리: 초기화 → 기능 협상 → 세션 유지 → 종료

💻 간단한 예제 (Python SDK)

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가 자동 생성됩니다.


🔐 보안 원칙

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

🌐 생태계

MCP는 LSP(Language Server Protocol)에서 영감을 받아, AI 애플리케이션 생태계 전체에 표준화된 컨텍스트 통합 방식을 제공합니다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기