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 (예: 사내 깃허브)

메시지는 JSON-RPC 2.0 형식을 쓰며, 요청은 상태를 갖지 않고(stateless) 매 요청이 필요한 정보를 스스로 담아 보낸다.

핵심 기능

서버가 클라이언트에 제공하는 세 가지:

클라이언트가 서버에 제공하는 한 가지:

핵심 프로토콜 밖에는 옵트인 확장(Extensions)이 따로 있다. 클라이언트·서버 양쪽이 초기화 과정에서 명시적으로 지원을 선언해야 켜진다.

트레이드오프

주의사항

공식 스펙은 보안·신뢰 원칙을 세 가지로 못박는다.

스펙 자체는 이 원칙들을 프로토콜 레벨에서 강제하지 못한다. 동의·인가 흐름을 실제로 구현하는 책임은 호스트 쪽에 있다.

핵심 정리

참고

CSLOG에서 보기