MCP
MCP(Model Context Protocol)는 Anthropic의 개방형 프로토콜입니다. 개발자는 이를 통해 데이터 소스와 AI 기반 도구 간의 안전한 양방향 연결을 구축합니다.
MCP 서버로 데이터를 제공하거나, AI 애플리케이션(MCP 클라이언트)을 개발할 수 있습니다.
MCP의 등장 이유
모델의 한계
모델의 훈련 데이터는 특정 기간의 정보만 가지고 있기에 최신 정보나 애플리케이션 내부 정보를 알 수 없었고, 새로운 데이터 소스마다 전용 맞춤 구현을 요구했습니다.
외부 서비스와 상호작용이 불가능하며 전문 도구 및 서비스를 이용할 수 없었습니다.
Anthropic에서는 이를 해결하기 위해 MCP를 만들었으며, 이로 인해서 LLM 모델들은 다양한 일을 할 수 있게 되었습니다.
MCP의 구성 요소
MCP 호스트(Host)
일반적으로 연결을 시작하는 LLM 애플리케이션(예: Claude Desktop 또는 기타 AI 도구)으로, MCP 클라이언트와 서버 간의 연결을 관리합니다.
MCP 클라이언트(Client)
호스트 애플리케이션 내부에서 서버와 1:1 연결을 유지하며 프로토콜 통신을 담당합니다. AI와 MCP 서버 간의 소통을 책임집니다.
MCP 서버(Server)
경량 프로그램으로, 특정 데이터 소스 또는 도구 기능을 노출하고 표준화된 프로토콜을 통해 클라이언트와 상호작용합니다. 로컬 데이터베이스에서 출력할 내용 지시를 관리하며, 클라이언트가 자체 지시를 선택하여 작동할 수 있도록 합니다.
MCP의 통신
MCP의 통신은 JSON-RPC 2.0을 기반으로 하며, 요청, 응답 및 알림 세 가지 메시지 유형을 지원하여 통신의 표준화와 일관성을 보장합니다.
전체 프로세스는 다음과 같습니다:
사용자가 AI 애플리케이션을 통해 요청 전송
AI 애플리케이션(호스트)이 MCP 클라이언트를 통해 MCP 서버에 요청 전송
MCP 서버가 요청을 처리하고 해당 데이터 소스에 접근하거나 도구 기능 실행
서버가 결과를 클라이언트에 반환
클라이언트가 정보를 AI 모델에 전달
AI 모델이 이 정보를 기반으로 응답 생성
MCP의 핵심 기능
1. 리소스(Resources)
리소스는 MCP 서버가 클라이언트에 제공하려는 모든 유형의 데이터를 나타내며, 다음을 포함할 수 있습니다:
- 파일 내용
- 데이터베이스 기록
- API 응답
- 실시간 시스템 데이터
- 스크린샷 및 이미지
- 로그 파일
- 각 리소스는 고유한 URI로 식별되며 텍스트 또는 바이너리 데이터를 포함할 수 있습니다.
2. 프롬프트(Prompts)
MCP의 프롬프트는 미리 정의된 템플릿으로 다음을 수행할 수 있습니다:
- 동적 매개변수 수락
- 컨텍스트 포함
- 여러 상호작용 연결
- 특정 워크플로우 안내
- UI 요소(예: 슬래시 명령)로 표면화
3. 도구(Tools)
MCP의 도구는 서버가 클라이언트가 호출할 수 있는 실행 가능한 함수를 공개할 수 있도록 합니다. 도구의 주요 측면은 다음과 같습니다:
- 발견(tools/list): 클라이언트가 사용 가능한 도구 목록을 얻을 수 있음
- 호출(tools/call): 서버가 요청된 작업을 실행하고 결과 반환
- 유연성: 도구 범위는 간단한 계산에서 복잡한 API 상호작용까지 다양
4. 샘플링(Sampling)
샘플링은 MCP의 강력한 기능으로, 서버가 클라이언트를 통해 LLM 완성을 요청할 수 있게 하여 복잡한 에이전트 행동을 구현하면서도 보안과 프라이버시를 유지할 수 있도록 합니다. 이러한 인간-기계 상호작용 설계는 사용자가 LLM이 보는 내용과 생성하는 내용을 제어할 수 있도록 보장합니다.
MCP로 인해 가능해진 것들
- 최신 웹 정보를 직접 조회하여 답변 제공
- 사용자가 업로드한 문서 및 데이터 분석
- 로컬에 직접 파일을 생성하고 읽음
- 다양한 애플리케이션에 접근하여 업무 향상
이 외에도 다양한 형태로 적용이 가능하며 표준 기술 중 하나로 자리 잡을 것 같아 필히 익혀야 할 기술 중 하나일 것 같습니다.