AI VIDEO BRIEFING
MCP(모델 컨텍스트 프로토콜) 크래시 코스: 서버·클라이언트 직접 구축
MCP가 무엇인지, 서버를 이루는 도구·리소스·프롬프트·샘플링 네 요소와 전송 방식, 그리고 TypeScript SDK로 MCP 서버와 클라이언트를 직접 만드는 과정을 정리했습니다.

핵심 메시지
쉽게 이해하기
MCP는 요즘 가장 화제인 주제이지만, 정작 작동 방식을 깊이 설명하는 자료는 드물다. 이 영상은 MCP가 무엇인지 개념부터 정리하고, 어떤 클라이언트에도 연결할 수 있는 자신만의 MCP 서버와, 어떤 서버에도 연결되는 클라이언트를 직접 만드는 과정을 보여준다. MCP는 결국 하나의 프로토콜로, REST API나 GraphQL처럼 서버와 클라이언트가 메시지를 주고받는 규약이다. 클라이언트 하나가 원하는 만큼 여러 MCP 서버에 연결할 수 있다.
MCP 서버는 네 가지 요소로 구성된다. '도구'는 클라이언트가 서버의 코드를 호출하는 통로로, 예컨대 엑셀 서버에 '엑셀 시트 생성' 도구를 두면 AI가 그 도구를 불러 시트를 만든다. '리소스'는 데이터베이스·파일·이미지처럼 서버가 접근을 제공하는 데이터 묶음이다. '프롬프트'는 서버가 클라이언트에 내려주는, 잘 다듬어진 사전 작성 프롬프트다. '샘플링'은 반대 방향으로, 서버가 클라이언트의 AI에게 프롬프트 실행을 요청해 그 결과를 받아오는 것이다. 이 중 도구와 리소스가 가장 많이 쓰이며, 도구가 단연 활용도가 높다.
구현은 밑바닥부터 하지 않아도 된다. MCP 공식 사이트는 대부분의 언어용 SDK를 제공하며, 영상에서는 TypeScript SDK를 쓴다. 서버는 이름·버전·기능(capabilities)을 지정한 McpServer 객체로 만들고, 도구·리소스·프롬프트를 기능으로 선언한다. 샘플링은 클라이언트 쪽 기능이라 서버 기능으로 선언하지 않는다. 전송 방식은 로컬에서 같은 기기끼리 쓰는 표준 입출력(stdio)과, 원격 웹 애플리케이션용 HTTP 스트리밍이 있으며(서버 전송 이벤트 방식은 폐기되어 HTTP 스트리밍으로 대체됨), 로컬이냐 원격이냐에 따라 선택할 뿐 나머지 코드는 대체로 같다.
만든 서버는 인스펙터(@modelcontextprotocol/inspector) 도구로 점검한다. MCP용 포스트맨과 같아서 서버에 핑을 보내고 도구 목록을 조회하며 도구를 실제로 실행해볼 수 있다. 도구를 정의할 때는 이름과 설명, 매개변수(JSON 스키마보다 Zod가 다루기 편하다), 그리고 AI에게 힌트를 주는 주석(읽기 전용·파괴적 여부·멱등성·외부 접근 여부 등, 모두 선택 사항)을 지정하고, 실행 함수는 텍스트 형태의 content 배열을 돌려준다. 리소스는 URI와 MIME 타입을 지정하며, users/{id}처럼 동적 매개변수를 받는 리소스 템플릿도 만들 수 있다.
주요 인사이트
- 도구는 '무언가를 하는' 함수 호출, 리소스는 '데이터를 제공'하는 통로다. AI 챗봇에서 도구는 직접 호출하거나 자연어로 요청해 사용하고, 리소스는 컨텍스트로 첨부해 활용한다.
- 도구 주석의 읽기 전용·파괴적·멱등성·외부 접근 힌트는 선택 사항이지만, AI가 도구를 안전하고 정확하게 쓰도록 돕는다. 예컨대 파괴적 작업이면 AI가 사용자에게 경고를 띄울 수 있다.
- VS Code Copilot에서는 MCP 서버를 stdio 방식으로 추가하면 .vscode/mcp.json에 설정이 저장되고, '#'로 도구를 부르거나 리소스를 컨텍스트로 붙일 수 있다. 다만 새 도구·리소스를 추가하면 서버나 편집기를 다시 시작해야 인식된다.
- 샘플링은 도구 안에서 server.request의 sampling/createMessage로 클라이언트 AI에 프롬프트를 실행시켜, 그 결과(예: 가짜 사용자 데이터)를 받아 다시 서버 로직에 활용하는 방식이며 클라이언트의 승인이 필요하다.
- 클라이언트는 Client 객체와 StdioClientTransport(node로 build/server.js 실행)로 서버에 연결한 뒤 도구·프롬프트·리소스·리소스 템플릿 목록을 받아오며, 영상에서는 inquirer 프롬프트로 CLI를 만들고 무료 등급인 Gemini를 AI로 연결한다.
자주 묻는 질문
MCP는 정확히 무엇인가요?
모델 컨텍스트 프로토콜(Model Context Protocol)의 약자로, REST API나 GraphQL처럼 MCP 서버와 클라이언트가 서로 메시지를 주고받는 방식을 정한 프로토콜입니다. 클라이언트 하나가 원하는 만큼 여러 서버에 연결할 수 있습니다.
MCP 서버를 이루는 요소는 무엇인가요?
도구(tools), 리소스(resources), 프롬프트(prompts), 샘플링(sampling) 네 가지입니다. 도구는 클라이언트가 서버 코드를 호출하는 통로, 리소스는 데이터 묶음, 프롬프트는 사전 작성된 프롬프트, 샘플링은 서버가 클라이언트 AI에 프롬프트 실행을 요청하는 반대 방향 기능입니다. 이 중 도구와 리소스가 가장 많이 쓰입니다.
표준 입출력(stdio)과 HTTP 스트리밍 전송은 언제 쓰나요?
표준 입출력은 클라이언트와 서버가 같은 기기에서 로컬로 돌 때 적합하고, HTTP 스트리밍은 같은 네트워크에 있지 않은 원격 웹 애플리케이션에 스트리밍할 때 적합합니다. 전송 방식만 다를 뿐 나머지 코드는 대체로 동일합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗