Model Context Protocol(MCP) 개념 정리
AI 모델과 외부 리소스를 연결하는 오픈 프로토콜 MCP의 통신 방식, 구조, 전송 방식, 보안 모델을 최신 스펙(2025-06-18) 기준으로 정리한다. Serena·Codex 등 구현체별 사용은 별도 글 참고.
관련: AI 로드맵의 MCP 갈래 · 구현체는 Serena 기본 가이드, 여러 서버 붙이기는 MCP 서버 더 붙이기
MCP란
MCP(Model Context Protocol) 는 Anthropic이 2024년 11월에 공개한 오픈 프로토콜로, AI 모델과 외부 리소스(파일, DB, API 등)가 표준화된 방식으로 상호작용하도록 한다.
기존에는 도구마다 커스텀 통합을 만들어야 했고(N × M 문제), 모델·도구 양쪽이 늘어날수록 통합 부담이 폭증했다. MCP는 그 사이에 공통 인터페이스를 끼워넣어 도구 하나만 구현하면 MCP를 지원하는 모든 모델에서 쓸 수 있게 만든다.
공개 1년여 만에 OpenAI(Codex/Agents), Google, JetBrains, VS Code 등이 클라이언트로 채택하면서 사실상 “AI ↔ 도구 연결”의 업계 표준으로 자리 잡았다.
핵심 특징
| 항목 | 내용 |
|---|---|
| 통신 | JSON-RPC 2.0 기반 양방향 |
| 전송 | stdio(로컬) · Streamable HTTP(원격) |
| 구조 | 클라이언트(모델) ↔ MCP 서버(리소스 제공자) |
| 노출 단위 | tools · resources · prompts |
| 보안 | 로컬은 사용자 승인, 원격은 OAuth 2.1 기반 접근 |
| 활용 | 파일 읽기, API 호출, DB 조회, 코드베이스 분석 등 |
기본 구조
1
2
3
4
5
6
7
8
9
+--------------+ JSON-RPC +--------------+
| Claude/LLM | <------------------> | MCP Server |
| (클라이언트) | | (리소스 노출) |
+--------------+ +--------------+
|
v
+-----------------------+
| Files / DB / APIs ... |
+-----------------------+
서버는 자기가 노출할 도구(tools)·리소스(resources)·프롬프트(prompts)를 선언하고, 클라이언트는 모델 결정을 따라 그것들을 호출한다. 호출마다 사용자 승인을 받는 흐름이 표준이다.
전송 방식(Transport)
MCP는 같은 JSON-RPC 메시지를 두 가지 전송 계층 위에서 주고받는다.
| 전송 | 용도 | 특징 |
|---|---|---|
| stdio | 로컬 서버 | 클라이언트가 서버를 자식 프로세스로 띄우고 표준 입출력으로 통신. 설정이 단순해 로컬 도구의 기본값 |
| Streamable HTTP | 원격 서버 | HTTP POST/GET 기반, 필요 시 SSE로 스트리밍. 원격·다중 사용자 서비스에 적합 |
참고: 초기 스펙의 원격 전송이던
HTTP+SSE는 2025-03-26 개정에서 Streamable HTTP로 대체됐다. 새로 서버를 만든다면 Streamable HTTP를 쓰는 게 맞다.
보안 모델
MCP 서버는 클라이언트와 같은 권한 컨텍스트에서 동작한다. 그래서 보안이 프로토콜의 핵심 관심사다.
- 로컬(stdio): 호출 단위로 사용자 승인을 받는 게 표준.
read_only같은 옵션을 지원하는 서버라면 켜고 시작하는 게 안전하다. - 원격(Streamable HTTP): 2025-06-18 스펙은 MCP 서버를 OAuth 2.1 Resource Server로 분류한다. 서버는
.well-known엔드포인트로 자신의 Authorization Server 위치를 알리고, 클라이언트는 발급받은 토큰을 제시해 인증·인가를 받는다. 토큰 탈취·confused deputy·세션 하이재킹 등에 대한 보안 베스트 프랙티스가 별도 문서로 정리돼 있다.
스펙 버전 흐름
MCP 스펙은 날짜 기반으로 개정된다. 클라이언트·서버는 핸드셰이크에서 프로토콜 버전을 협상한다.
| 개정 | 주요 변화 |
|---|---|
2024-11-05 | 최초 공개 |
2025-03-26 | Streamable HTTP 전송 도입(HTTP+SSE 대체), OAuth 2.1 인가 프레임워크, 도구 어노테이션 |
2025-06-18 (현재 안정) | 구조화 출력(structuredContent), elicitation(서버가 대화 중 사용자 입력 요청), resource links, MCP 서버를 OAuth Resource Server로 분류, JSON-RPC 배칭 제거, MCP-Protocol-Version 헤더 필수화 |
다음 버전(
2026-07-28)은 릴리스 후보 단계로, 무상태(stateless) 운영을 표준화해 로드밸런서 뒤 수평 확장을 매끄럽게 만드는 방향이 핵심이다.
장점과 주의사항
장점
- 통합 비용이
N × M에서N + M으로 줄어든다. - 도구 추가가 모델 코드 수정 없이 가능 — 설정 파일에 등록만 하면 된다.
- 표준 권한 모델로 위험한 호출을 사용자가 통제할 수 있다.
주의사항
- MCP 서버는 클라이언트와 같은 권한 컨텍스트에서 돈다. 잘못된 서버 등록은 곧 LLM이 파일을 마음대로 만지는 결과로 이어진다.
- 원격 서버를 붙일 때는 신뢰할 수 있는 출처인지, OAuth 스코프가 과하지 않은지 확인한다.
- 전역 설정(
servers.json등)은 모든 세션에 적용되므로 경로/명령 오타 하나가 전체 에러로 번질 수 있다.
구현체 예시
- Serena MCP — 코드베이스 의미 기반 검색·편집을 제공하는 MCP 서버. 설치·등록·Codex 연동은 Serena 기본 가이드 참고.
- Anthropic 공식 MCP 서버 목록 — filesystem, github, postgres, slack, sqlite 등 레퍼런스 구현 다수.
요약
| 구분 | 설명 |
|---|---|
| MCP | 모델 ↔ 외부 리소스 통신 표준 프로토콜 |
| 통신 | JSON-RPC 2.0 양방향 |
| 전송 | stdio(로컬) · Streamable HTTP(원격) |
| 보안 | 로컬은 사용자 승인, 원격은 OAuth 2.1 |
| 현재 스펙 | 2025-06-18 |
| 효과 | 통합 비용 N × M → N + M, 도구 추가 = 설정 파일 한 줄 |
한마디로: MCP는 “AI 모델을 외부 리소스와 연결하는 표준 인터페이스”다. 어떤 서버를 붙이느냐는 그 다음 문제다.