반응형
**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)
🌐 기본 순서:
- Client (LLM): 서버에 "사용 가능한 tool 목록", "resource 목록" 요청
- Server: 사용 가능한 tool/resource 목록 반환
- Client: 특정 tool 실행 요청 (tool.call)
- Server: 해당 tool 실행 후 결과를 tool.result로 응답
- 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 이슈 검색하는 툴 사용
- Claude가 search_github_issues 툴을 호출
- MCP 서버가 GitHub API에 요청 전송
- 검색 결과를 tool.result로 LLM에 전달
- 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 |