MCP
LLM을 호출하는 애플리케이션(호스트)이 외부 데이터와 툴을 붙이는 방식을 표준화한 개방형 프로토콜로, Host-Client-Server 구조로 JSON-RPC 메시지를 주고받는다. 기준 시점: 2026-11
왜 필요한가
에이전트가 쓸 툴을 서비스마다 각자 다른 방식으로 통합하면, 통합 코드가 "호스트 종류 × 붙이려는 서비스 종류"만큼 늘어난다. MCP 공식 스펙은 이 문제를 Language Server Protocol에 빗댄다 — LSP가 에디터와 언어별 분석기 사이를 표준화해 "에디터 종류 × 언어 종류"의 조합 폭발을 없앤 것처럼, MCP는 "AI 애플리케이션 종류 × 외부 서비스 종류"의 조합 폭발을 없애는 걸 목표로 한다. 서버 하나를 한 번 만들어 두면 그 서버를 지원하는 모든 호스트에서 재사용할 수 있다.
구조
Host (LLM 애플리케이션, 예: IDE·채팅 앱)
│
├─ Client A ──JSON-RPC──▶ Server A (예: 로컬 파일시스템)
└─ Client B ──JSON-RPC──▶ Server B (예: 사내 깃허브)
- Host — 연결을 시작하는 LLM 애플리케이션. 사용자 동의와 권한을 최종적으로 책임진다.
- Client — 호스트 안에서 서버 하나와 1:1로 붙는 커넥터. 실제 연결과 메시지 송수신을 맡는다.
- Server — 컨텍스트와 기능을 제공하는 서비스. 로컬 프로세스(stdio)로도, 원격 HTTP 서비스로도 띄울 수 있다.
메시지는 JSON-RPC 2.0 형식을 쓰며, 요청은 상태를 갖지 않고(stateless) 매 요청이 필요한 정보를 스스로 담아 보낸다.
핵심 기능
서버가 클라이언트에 제공하는 세 가지:
- Tools — AI 모델이 실행할 수 있는 함수. 함수 호출의 스키마 정의·호출 흐름과 같은 개념이다.
- Resources — 사용자나 모델이 참고할 컨텍스트·데이터.
- Prompts — 사용자를 위해 미리 만들어 둔 템플릿화된 메시지·워크플로.
클라이언트가 서버에 제공하는 한 가지:
- Elicitation — 서버가 작업 중 사용자에게 추가 정보를 되묻는 기능.
핵심 프로토콜 밖에는 옵트인 확장(Extensions)이 따로 있다. 클라이언트·서버 양쪽이 초기화 과정에서 명시적으로 지원을 선언해야 켜진다.
- Tasks — 폴링과 실행 중 입력을 지원하는 장시간 비동기 작업.
- Skills over MCP — MCP로 찾아 쓰는 에이전트 워크플로용 구조화된 지침.
- MCP Apps — 대화 안에 인라인으로 뜨는 상호작용 UI.
트레이드오프
- 서버를 한 번만 만들면 여러 호스트에서 재사용할 수 있지만, 스펙이 요구하는 동의·권한 흐름은 각 호스트가 직접 구현해야 하는 부담으로 남는다.
- 프로토콜이 상태를 갖지 않는 쪽으로 가면(2026-07-28 개정판에서 완전한 스테이트리스로 전환 — MCP의 스테이트리스 전환) 서버를 여러 대 띄우는 운영은 쉬워지지만, 호출 간 상태가 필요한 서버는 그 상태 관리를 스스로 구현해야 한다.
주의사항
공식 스펙은 보안·신뢰 원칙을 세 가지로 못박는다.
- 사용자 동의와 통제 — 모든 데이터 접근과 작업 실행에 사용자가 명시적으로 동의해야 한다.
- 데이터 프라이버시 — 호스트는 사용자 데이터를 서버에 노출하기 전에 명시적 동의를 받아야 하고, 동의 없이 리소스를 다른 곳으로 보내면 안 된다.
- 툴 안전성 — 툴 호출은 임의 코드 실행과 같으므로 신중히 다뤄야 한다. 툴의 동작 설명(annotation)은 신뢰할 수 있는 서버에서 온 것이 아니면 신뢰할 수 없는 정보로 취급해야 하고, 호스트는 툴을 호출하기 전 명시적 동의를 받아야 한다.
스펙 자체는 이 원칙들을 프로토콜 레벨에서 강제하지 못한다. 동의·인가 흐름을 실제로 구현하는 책임은 호스트 쪽에 있다.
핵심 정리
- MCP는 Host(LLM 애플리케이션)–Client(1:1 커넥터)–Server(기능 제공자)로 역할을 나누고 JSON-RPC로 통신하는 개방형 프로토콜이다
- 서버는 Tools·Resources·Prompts를, 클라이언트는 Elicitation을 상대에게 제공하며, Tasks·Skills over MCP·MCP Apps는 옵트인 확장이다
- LSP가 에디터×언어 조합 폭발을 없앤 것처럼, MCP는 AI 애플리케이션×외부 서비스 조합 폭발을 없애는 걸 목표로 한다
- 서버가 신뢰할 수 없는 소스일 수 있으므로, 동의·프라이버시·툴 안전성은 프로토콜이 아니라 호스트 구현이 책임져야 한다