MCP모델 컨텍스트 프로토콜
Model Context Protocol
쉽게 이해하기
MCP의 출발점은 AI 앱 통합이 너무 빠르게 복잡해졌다는 점입니다. 모델 하나에 DB, 파일 시스템, SaaS, 내부 API, 검색 도구를 붙일 때마다 별도 커넥터를 만들면 조합 수가 늘어나고 보안 검토도 반복됩니다. MCP는 이 문제를 "호스트-클라이언트-서버" 구조로 나눕니다. 사용자가 대화하는 앱이 호스트이고, 호스트 안의 MCP 클라이언트가 서버별 연결을 맡고, MCP 서버는 자신이 제공할 수 있는 도구·리소스·프롬프트를 표준 메시지로 노출합니다.
핵심은 "모델이 외부 시스템을 직접 만지는 것"이 아니라 "호스트가 중간에서 허용된 기능만 연결한다"는 점입니다. 서버는 tools/list, resources/read, prompts/get 같은 primitive를 제공하고, 호스트는 사용자 승인·권한·정책을 확인한 뒤 호출합니다. 원격 서비스는 Streamable HTTP로, 로컬 도구는 STDIO로 붙을 수 있습니다. 그래서 MCP는 RAG, function calling, 내부 자동화, 에이전트 도구 생태계 사이에서 공통 접속 규격 역할을 합니다.
비유와 예시
-
사내 데이터 조회: HR 데이터베이스를 MCP 서버로 감싸면 AI 앱은 임의 SQL을 직접 실행하지 않고, 서버가 허용한 리소스와 도구만 호출한다.
-
개발 도구 연결: 로컬 파일 분석 서버는 STDIO로 붙고, 이슈 트래커나 문서 시스템은 Streamable HTTP로 붙어 같은 호스트 안에서 함께 쓰인다.
-
프롬프트 템플릿 공유: 팀이 자주 쓰는 리뷰 템플릿을 MCP prompt로 노출하면, 앱마다 프롬프트를 복붙하지 않고 서버에서 버전 관리할 수 있다.
한눈에 비교
| MCP | Function Calling | OpenAPI | |
|---|---|---|---|
| 초점 | AI 앱과 도구/데이터/프롬프트의 표준 연결 | 모델이 함수 인자를 생성 | HTTP API 계약 문서화 |
| 구성 | Host, Client, Server 세션 | 모델 API와 호스트 실행 로직 | 서버 엔드포인트와 스키마 |
| 주요 primitive | resources, tools, prompts, sampling, elicitation | function/tool call | paths, methods, schemas |
| 전송 | STDIO, Streamable HTTP | 모델 API 내부 | HTTP 중심 |
| 보안 경계 | 호스트가 동의·권한·감사 중재 | 호스트 구현에 의존 | API 인증/인가에 의존 |
MCP는 function calling을 대체한다기보다, 여러 도구와 데이터 소스를 장기적으로 관리하기 위한 접속 계층을 표준화한다.
어디서 왜 중요한가
-
도구 생태계 확장: 각 앱이 모든 도구를 직접 통합하는 대신, MCP 서버를 재사용해 통합 비용을 줄일 수 있다.
-
권한 경계 명확화: 모델이 아니라 호스트가 사용자 동의, 도구 실행 승인, 감사 로그를 관리한다.
-
컨텍스트 주입 비용 절감: 필요한 리소스를 필요할 때 읽기 때문에 큰 문서를 프롬프트에 통째로 넣는 방식을 줄인다.
-
로컬/원격 동시 지원: 로컬 개발 도구는 STDIO, 원격 서비스는 Streamable HTTP로 같은 프로토콜 아래 묶을 수 있다.
자주 하는 오해
-
오해: MCP 서버를 붙이면 모델이 모든 데이터에 접근한다 → 실제: 서버가 노출한 기능과 호스트 정책이 접근 범위를 제한한다.
-
오해: MCP는 OpenAPI의 AI 버전일 뿐이다 → 실제: MCP는 prompts, resources, tools, sampling, elicitation처럼 대화형 AI 흐름을 직접 다룬다.
-
오해: MCP는 보안을 자동 해결한다 → 실제: 권한 스코프, 사용자 동의, tool poisoning 방지, 감사 로그는 별도로 설계해야 한다.
대화에서는 이렇게
-
"이 DB는 MCP resource로 읽기 전용만 열고, 수정 작업은 별도 tool로 승인 플로우를 넣읍시다."
-
"원격 서버는 Streamable HTTP로 붙이고, 로컬 개발 도구는 STDIO 서버로 유지하는 게 낫겠습니다."
-
"tool 설명이 모델에게 보이는 입력이므로 prompt injection 검사를 배포 게이트에 넣어야 합니다."
-
"sampling 요청은 호스트 정책을 통과한 경우에만 허용하고, 어떤 서버가 요청했는지 감사 로그에 남기죠."
함께 읽으면 좋은 용어
참고 자료
- Overview - Model Context Protocol Specification
호스트·클라이언트·서버, JSON-RPC, capability negotiation을 정의하는 공식 개요.
- Transports - Model Context Protocol Specification
STDIO와 Streamable HTTP 전송, 프로토콜 버전 헤더를 다루는 공식 전송 명세.
- Tools - Model Context Protocol Specification
MCP 서버의 도구 검색과 실행 계약을 정의하는 공식 문서.
- Resources - Model Context Protocol Specification
클라이언트와 모델에 제공되는 컨텍스트 데이터 리소스 모델.
- Prompts - Model Context Protocol Specification
MCP 서버가 노출하는 프롬프트 템플릿 primitive.
- Sampling - Model Context Protocol Specification
서버가 호스트를 통해 모델 생성을 요청하는 client-side sampling 흐름.
- Elicitation - Model Context Protocol Specification
서버가 클라이언트를 통해 사용자에게 추가 정보를 요청하는 elicitation 흐름.
- MCP Security Best Practices
동의, 권한, 도구 안전성, 배포 보안을 다루는 공식 보안 가이드.