Model Context Protocol (MCP)

문한성·2025년 4월 27일
0

1. 소개

2024년 말, Anthropic이 발표한 Model Context Protocol (MCP)는 LLM(대형 언어 모델)과 외부 서비스(데이터베이스, 파일 시스템, API 등)를 표준 방식으로 연결하기 위한 오픈 프로토콜입니다. 기존에는 모델과 시스템을 1:1 또는 N:M 형태로 직접 연결해야 했지만, MCP를 통해 하나의 통신 규격만 정의하면 수십 개의 툴과 데이터를 유연하게 다룰 수 있습니다. (anthropic.com)

핵심 포인트:


2. 주요 구성 요소 (Architecture)

MCP는 세 가지 컴포넌트로 구성됩니다: Host, Client, Server. (modelcontextprotocol.io)

  1. Host
    • LLM 애플리케이션(예: Claude, GPT 기반 에이전트)
    • 내부 MCP Client를 통해 서버와 통신
  2. MCP Client
    • Host에 내장되어 JSON-RPC 메시지를 생성·파싱
    • 여러 서버와 연결해 기능 호출 요청을 관리
  3. MCP Server
    • 외부 API, 데이터베이스, 시스템 리소스와 실제 연동
    • JSON-RPC 응답을 통해 결과 반환

3. 메시지 포맷 (JSON-RPC 2.0)

모든 MCP 메시지는 JSON-RPC 2.0 규격을 따릅니다. (modelcontextprotocol.io)

3.1 Request

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "tool": "list_loki_label_names",
    "args": { "datasourceUid": "abcd1234" }
  }
}

3.2 Response

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": ["service", "pod", "container", ...]
}

3.3 Error Handling

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32601,
    "message": "Method not found",
    "data": null
  }
}

3.4 Notification

{
  "jsonrpc": "2.0",
  "method": "notifications/tools/updated",
  "params": { "tool": "promtail" }
}
  • ID 없이 전송, 클라이언트가 수신만 가능

4. 전송 계층 (Transports)

MCP는 메시지 포맷과 별도로, 다양한 트랜스포트 방식을 지원합니다. (modelcontextprotocol.io)

방식설명예시
HTTPPOST /rpc/v1 엔드포인트로 요청 전송curl -X POST http://.../rpc/v1 ... (modelcontextprotocol.io)
StdIO로컬 프로세스 간 stdin/stdout 스트림 교환로컬 데스크톱 앱(Claude Desktop) (anthropic.com)
SSEServer-Sent Events로 알림(Notification) 수신/rpc/v1/stream 구독 (modelcontextprotocol.io)

5. 실사용 예시 (Practical Example)

아래 예시는 Loki 서버에서 라벨 목록을 조회하는 HTTP JSON-RPC 호출입니다.

curl -X POST http://localhost:8000/rpc/v1 \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 42,
    "method": "list_loki_label_names",
    "params": { "datasourceUid": "abcd1234" }
  }'

응답 예시:

{
  "jsonrpc": "2.0",
  "id": 42,
  "result": ["service", "pod", "container", "level", "namespace"]
}

6. 버전 관리 및 기능 협상 (Versioning & Capability Negotiation)

  • 사양 내 Versioning 섹션 제공: 구현 라이브러리 간 호환성 확보 (modelcontextprotocol.io)
  • Capability Negotiation: 클라이언트가 지원하는 툴/메서드를 서버에 질의 가능

7. 보안 및 인증 (Security & Authorization)

  1. OAuth 2.1 기반 권한 부여 (Auth0 안내)
    • API 키, Bearer 토큰, OAuth 플로우 지원 (auth0.com)
  2. Cloudflare Agents 권고사항
  3. Microsoft Entra ID 연동
    • 온-비헬프-오브 토큰 교환, 클라이언트 자격 증명 흐름 (den.dev)

8. 확장성 및 에코시스템 (Extensibility & Ecosystem)


9. 고급 사례: MCP Guardian (보안 강화)

  • MCP Guardian 프레임워크 소개: 인증, 레이트 리밋, 로깅, WAF 연동으로 MCP 보안 레이어 강화 (arxiv.org)

10. 뉴스 및 전망 (News & Outlook)

  • AI 앱·툴 통합 가속: Axios 기사 “Hot new protocol glues together AI and apps” (axios.com)
  • 산업 채택 확대: OpenAI, Google 지원 선언, 주요 프로젝트 도입 가속화

11. 참고 링크

MCP를 활용하면 LLM과 외부 시스템 간의 연결을 완전 표준화하여 개발 복잡도를 최소화하고, 보안·확장성까지 확보할 수 있습니다.

profile
기록하고 공유하려고 노력하는 DevOps 엔지니어

0개의 댓글