MCP(Model Context Protocol)는 AI가 여러 서비스의 tool을 하나의 공통 방식으로 쓰게 해 주는 규약이다. Anthropic이 2024년에 open standard로 공개했고 [1], 서비스가 이 규약에 맞춘 server를 열어 두면 AI client는 상대가 어떤 서비스든 같은 방식으로 tool을 찾아 호출한다 [2].
backend와 API, iOS·Android 앱을 만들면서 외부 서비스를 붙일 일이 많았다. 결제, 지도, 푸시, 메시징. 붙일 때마다 문서를 새로 읽고 인증 방식과 request 형식, error 규칙을 서비스별로 따로 맞췄다. API가 “내부는 감추고 약속된 창구로만 주고받게 하는 계약”이라면, 문제는 그 창구 모양이 서비스마다 다르다는 데 있다. 사람 개발자는 문서를 읽고 맞추면 되지만, AI가 직접 tool을 쓰게 하려면 이 차이가 그대로 비용이 된다. MCP는 그 비용을 겨냥한 규약이다.
universal adapter라는 비유
해외에 나가면 나라마다 콘센트 모양이 달라서 adapter가 필요하다. universal adapter가 하나 있으면 어느 나라에서든 그냥 꽂는다.
서비스별 API가 그 콘센트다. 모양이 조금씩 다르고, AI 입장에서는 서비스마다 다른 사용법을 따로 익혀야 했다. MCP는 그 사이에 끼는 universal adapter다. 서비스가 MCP라는 공통 규약을 지키면 AI는 어떤 서비스든 같은 방식으로 쓴다 [2].
다른 비유로는 AI assistant에게 출입증과 업무 매뉴얼을 같이 쥐여 주는 것이다. 출입증이 있으니 필요한 tool에 들어가고, 매뉴얼이 있으니 거기서 무엇을 할 수 있는지 안다. MCP는 이 둘을 표준 형식으로 정해 둔 것에 가깝다.
구조: host, client, server
엔지니어 입장에서 풀면 구조는 단순하다. 사용자가 쓰는 AI 앱이 host이고, host 안의 client가 MCP server 하나와 연결을 맺는다. server는 자기가 제공하는 것을 정해진 형식으로 내놓는다. 대표적인 게 AI가 호출하는 함수인 tool, 읽어 가는 데이터인 resource, 재사용하는 prompt 템플릿이다. 메시지는 JSON-RPC 2.0 형식으로 오간다 [2].
내가 보기에 핵심은 discovery다. client는 연결한 뒤 server에 무엇을 할 수 있는지를 묻고, server는 tool마다 이름과 설명, input schema를 돌려준다. AI는 그 설명을 읽고 언제 어떤 tool을 어떤 인자로 부를지 정한다 [2]. 서비스마다 SDK를 따로 붙이던 일이, 규약 하나를 구현한 server를 띄우는 일로 바뀐다.
무엇이 달라지나
지금까지 AI를 쓰는 방식은 대개 이랬다. AI에게 글이나 아이디어를 받고, 그걸 copy해서 다른 tool에 paste한다. AI는 말을 하고 실행은 사람이 했다.
그림 1. copy-and-paste 방식에서는 사람이 결과를 옮겼고, MCP에서는 AI가 tool을 직접 호출한다.
| 구분 | copy-and-paste 방식 | MCP 방식 |
|---|---|---|
| 실행 주체 | 사람이 결과를 옮김 | AI가 tool을 직접 호출 |
| 진행 확인 | 사람이 화면을 오가며 확인 | AI가 확인하고 알려 줌 |
| 적용 범위 | tool마다 사용법을 따로 익혀야 함 | MCP 규약을 지키는 곳이면 같은 방식 |
MCP가 바꾸는 건 실행 주체다. 결과물을 손으로 옮기던 흐름이 AI가 tool을 직접 움직이는 흐름으로 바뀐다. open standard라서 특정 모델에 묶이지 않고, Claude 외에 ChatGPT, Grok 같은 다른 AI 쪽에서도 지원한다.
오래 걸리는 작업을 tool로 열 때
server를 만드는 쪽에서 먼저 부딪히는 문제는 시간이다. 조회 한 번은 바로 끝나지만 영상 렌더링이나 대용량 리포트 생성처럼 몇 분씩 걸리는 작업도 있다. 이걸 tool 하나로 열어 두고 끝날 때까지 붙잡고 있으면 대화 전체가 같이 멈춘다.
나는 이런 작업을 API에서 async job을 다루던 방식 그대로 tool 몇 개로 쪼갠다. 작업을 시작하고 job id를 돌려주는 tool, 그 id로 진행 상태를 묻는 tool, 끝난 결과를 가져오는 tool. 사람이 버튼을 누르고 진행 표시를 보다가 결과를 받던 흐름을 AI가 대신 밟는다. 사용자는 “이 자료로 리포트 만들어 줘”라고만 말하고, AI가 작업을 시작하고 상태를 확인하고 결과 링크를 가져온다.
연결할 때 챙길 것
연결이라고 하면 계정이 통째로 열리는 게 아닌가 하는 걱정이 먼저 나온다. 그 걱정이 현실이 되지 않게 하는 건 server를 만드는 쪽의 몫이다. 내가 server를 열 때 지키는 기준은 세 가지다.
- credential 범위 제한. AI가 쓰는 key는 그 사용자의 workspace 안에서만 동작하고 다른 tenant의 데이터에는 닿지 않게 한다.
- 즉시 해제. 사용자가 설정에서 연결을 끊으면 그 key로는 바로 아무것도 못 하게 한다.
- key 원문 비보관. key는 발급할 때 한 번만 보여 주고, 서버에는 원문 대신 hash로 저장한다.
AI가 tool을 직접 실행한다는 건 사람이 중간에서 한 번 거르던 단계가 빠진다는 뜻이기도 하다. 그래서 나는 tool 하나하나가 할 수 있는 범위를 좁게 잡는 걸 편의보다 앞에 둔다.



