패스노트
← 블로그 목록
기술 해설

MCP 서버 완전 해설: Model Context Protocol 이해하기

MCP(Model Context Protocol)는 AI 모델을 외부 데이터와 도구에 연결하는 개방형 표준입니다. "AI용 USB-C"라는 비유로 자주 소개되는데, 한 번 서버를 만들어 두면 MCP를 지원하는 어떤 클라이언트에서든 재사용할 수 있다는 점이 핵심입니다. 이 글에서는 아키텍처와 세 가지 기본 요소, 그리고 실제 연결 방법을 살펴봅니다.

왜 MCP인가

MCP 이전에는 모델에 도구를 연결하려면 애플리케이션마다 통합 코드를 따로 작성해야 했습니다. 데이터 소스가 N개, 클라이언트가 M개면 N×M개의 통합이 필요했던 셈입니다. MCP는 이 사이에 표준 프로토콜을 끼워 넣어 N+M으로 줄입니다. GitHub용 MCP 서버를 하나 만들면 Claude Code, Claude 데스크톱 앱, 그 밖의 MCP 클라이언트가 모두 같은 서버를 씁니다.

아키텍처: 호스트, 클라이언트, 서버

호스트 (Claude Code, Claude 앱 등)
  └─ MCP 클라이언트 ←─ JSON-RPC ─→ MCP 서버 A (GitHub)
  └─ MCP 클라이언트 ←─ JSON-RPC ─→ MCP 서버 B (사내 DB)
  • 호스트(host): 사용자가 쓰는 애플리케이션입니다. 여러 서버 연결을 관리합니다.
  • 클라이언트(client): 호스트 안에서 서버 하나와 1:1로 통신하는 커넥터입니다.
  • 서버(server): 데이터나 기능을 표준 형식으로 노출하는 프로그램입니다. 로컬 프로세스(stdio)로 띄울 수도, 원격 HTTP 엔드포인트로 둘 수도 있습니다.

전송 방식은 두 가지가 대표적입니다. 로컬 개발 도구는 stdio(표준 입출력)를, 조직 공용 서비스는 스트리밍 가능한 HTTP를 주로 씁니다.

세 가지 기본 요소

MCP 서버가 노출할 수 있는 것은 크게 셋입니다.

1. 툴 (Tools)

모델이 호출해서 무언가를 실행하는 기능입니다. 이슈 생성, 쿼리 실행, 메시지 발송처럼 부수 효과가 있을 수 있습니다. 각 툴은 이름, 설명, JSON Schema 입력 정의를 갖습니다.

{
  "name": "create_issue",
  "description": "지정한 저장소에 GitHub 이슈를 생성한다",
  "inputSchema": {
    "type": "object",
    "properties": {
      "repo": { "type": "string" },
      "title": { "type": "string" }
    },
    "required": ["repo", "title"]
  }
}

2. 리소스 (Resources)

모델이 읽을 수 있는 데이터입니다. 파일 내용, DB 스키마, 문서처럼 부수 효과 없이 조회만 하는 대상이며 URI로 식별됩니다. "실행"이 아니라 "참조"라는 점이 툴과의 차이입니다.

3. 프롬프트 (Prompts)

서버가 제공하는 재사용 가능한 프롬프트 템플릿입니다. 예를 들어 코드 리뷰 서버가 "이 diff를 보안 관점으로 리뷰"라는 템플릿을 노출하면, 사용자는 클라이언트에서 그 템플릿을 선택해 쓸 수 있습니다.

Claude Code에 서버 연결하기

로컬 stdio 서버는 명령 한 줄로 등록합니다.

claude mcp add github -- npx -y @modelcontextprotocol/server-github

등록하면 해당 서버의 툴들이 mcp__github__* 형태의 이름으로 세션에 나타납니다. 원격 서버는 URL과 인증 방식을 지정해 연결하며, OAuth 흐름을 지원하는 서버라면 브라우저 인증을 거칩니다.

설계할 때 주의할 점

  • 툴 개수를 아끼세요: 서버가 툴 50개를 노출하면 모든 정의가 컨텍스트를 차지하고 선택 정확도도 떨어집니다. 자주 쓰는 핵심 동작 위주로 좁히는 편이 좋습니다.
  • 설명이 인터페이스입니다: 모델은 설명문을 읽고 툴을 고릅니다. "어떤 상황에 쓰는 툴인지"를 설명에 명시하세요.
  • 신뢰 경계를 의식하세요: 서버가 돌려주는 데이터는 외부 입력입니다. 서버 출력에 지시문이 섞여 있어도 그대로 따르면 안 되는 프롬프트 주입(prompt injection) 위험을 항상 고려해야 합니다.

MCP는 빠르게 표준으로 자리 잡았고, 시험에서도 서버·클라이언트 구분, 세 요소의 차이, 전송 방식 선택을 묻는 문제가 꾸준히 나옵니다. 직접 서버 하나를 만들어 연결해 보는 것이 가장 빠른 학습법입니다.

CCAR-F 시험을 준비 중이신가요?

무료 커리큘럼과 모의시험으로 지금 시작하세요.

커리큘럼 보기