AI

Model Context Protocol (MCP) Anthropic 개발 방법

마시멜로를찾아서 2025. 4. 2. 15:07
반응형

**Model Context Protocol (MCP)**는 Anthropic이 주도하여 설계한 AI와 외부 시스템 간의 상호작용을 위한 오픈 프로토콜입니다. 이 프로토콜은 특히 LLM이 외부 도구·리소스와 안전하고 일관된 방식으로 상호작용할 수 있게 해줍니다.

아래는 MCP 개발 배경, 구조, 작동 방식, 개발 방법 및 예시까지 자세하게 정리한 내용입니다.


🧠 MCP란 무엇인가?

**MCP (Model Context Protocol)**는:

  • LLM이 외부 세계에 안전하게 연결되도록 설계된 표준 통신 프로토콜입니다.
  • 클라이언트 ↔ 서버 (LLM ↔ Tool) 구조에서 모델이 서버에게 도구 사용 요청을 보낼 수 있습니다.
  • JSON-RPC 기반 메시지 규격을 따르며, 다양한 리소스, 툴, 프롬프트, 샘플링을 통합 관리할 수 있습니다.

🏗️ MCP의 주요 구성 요소

 

Clients Claude, GPT 등 LLM 또는 클라이언트 앱 (예: Claude Desktop)
Servers 외부 시스템, API, DB, 문서, 코드 리포지토리 등
Tools LLM이 호출 가능한 기능들 (예: fetch_issues, translate, sql_query 등)
Resources LLM이 참조 가능한 문서, 코드, URL, JSON 데이터 등
Prompts 재사용 가능한 프롬프트 템플릿 (명령어, 질의 형식)
Sampling LLM이 특정 응답 생성을 요청하거나 받을 수 있음
Transports 통신 방법 (예: HTTP, WebSocket 등)

🧭 작동 흐름 (Client ↔ Server)

🌐 기본 순서:

  1. Client (LLM): 서버에 "사용 가능한 tool 목록", "resource 목록" 요청
  2. Server: 사용 가능한 tool/resource 목록 반환
  3. Client: 특정 tool 실행 요청 (tool.call)
  4. Server: 해당 tool 실행 후 결과를 tool.result로 응답
  5. Client: 결과 기반 reasoning 지속 → 반복 가능

🛠️ 개발 시 주요 JSON-RPC 메시지 타입

{
  "jsonrpc": "2.0",
  "method": "tool.call",
  "params": {
    "tool": "get_user_profile",
    "arguments": {
      "user_id": "u_123"
    }
  },
  "id": "req-001"
}

이와 같은 메시지를 통해 LLM이 외부 시스템의 기능을 직접 호출할 수 있습니다.


🎯 Anthropic 스타일의 개발 방법

Anthropic은 다음 방식으로 MCP 생태계를 설계 및 개발합니다:

1. 서버 구축 (MCP-compatible)

  • RESTful 또는 WebSocket 기반
  • tool.list, resource.list, tool.call, sampling.prompt 등의 핸들러 구현
  • 모든 메시지는 JSON-RPC 형식으로 처리
  • Python/Node.js 기반이 가장 흔함

2. tool 정의 예시

{
  "name": "search_docs",
  "description": "사용자 질문에 기반하여 문서 검색",
  "parameters": {
    "type": "object",
    "properties": {
      "query": { "type": "string" }
    },
    "required": ["query"]
  }
}

3. resource 정의 예시

{
  "type": "text",
  "name": "hr_policy",
  "content": "모든 직원은 연 15일의 연차를 가질 수 있습니다..."
}

🧩 아키텍처 예시

아래와 같은 구조를 가질 수 있습니다:

Claude (Client)
   |
   |--- tool.list  ⟶  MCP Server
   |--- resource.list  ⟶  MCP Server
   |--- tool.call("fetch_logs") ⟶ Tool Backend
   |<-  tool.result ← MCP Server


🚀 실제 적용 예시

예: Claude가 GitHub 이슈 검색하는 툴 사용

  1. Claude가 search_github_issues 툴을 호출
  2. MCP 서버가 GitHub API에 요청 전송
  3. 검색 결과를 tool.result로 LLM에 전달
  4. Claude는 결과 기반으로 응답 생성

🧪 개발에 필요한 것들


MCP 서버 구현체 자체 구현 가능 (예: FastAPI, Express 등)
JSON-RPC 메시지 스키마 MCP GitHub 문서 제공
도구 명세 정의 파일 (tool list) JSON 또는 YAML로 관리
보안 LLM이 실행 가능한 함수 제한, 인증 토큰 관리 필요
통신 채널 HTTP(S), WebSocket, gRPC 가능

📚 참고 자료

반응형

'AI' 카테고리의 다른 글

Claude × Model Context Protocol (MCP) 연동 개발 가이드  (1) 2025.04.02
Model Context Protocol (MCP)란?  (0) 2025.04.02
Java식 협업 API 스타일이란?(FastAPI)  (0) 2025.03.28
FastAPI vs Flask  (0) 2025.03.28
SHAP이란?  (0) 2025.03.27