MCP란 무엇인가? Model Context Protocol 설명

AI 모델을 도구, 파일 및 서비스에 연결하는 오픈 표준 — AI 통합을 위한 USB-C라고 생각하세요

8분 읽기 업데이트: 2026년 4월

🔌 MCP란?

The Model Context Protocol(MCP) 은 2024년 12월 Anthropic에서 발표한 오픈 스탠다드로, AI 모델을 외부 도구, 데이터 소스 및 서비스에 연결하기 위한 보편적 인터페이스를 정의합니다. MCP 이전에는 모든 AI 통합이 맞춤형 일회성 구현이었습니다. MCP는 AI 클라이언트가 외부 역량과 통신하는 방식을 표준화하여 하나의 통합이 호환 가능한 모든 AI 시스템에서 작동하도록 합니다.

MCP는 클라이언트-서버 프로토콜입니다: MCP 클라이언트 는 외부 역량을 사용하려는 AI 시스템(예: Claude, Cursor, VS Code with Copilot)입니다. MCP 서버 는 이러한 역량을 표준화된 API를 통해 노출하는 서비스(GitHub, 데이터베이스, 파일 시스템, 웹 브라우저)입니다. 어떤 MCP 클라이언트든 이를 소비할 수 있습니다.

💡 핵심 인사이트: MCP는 AI를 더 똑똑하게 만들지 않습니다 — 대신 AI를 더 잘 연결되게 합니다. 인텔리전스는 모델 내부에 남아 있고; MCP는 그 인텔리전스가 실제 데이터와 서비스에 작용할 수 있도록 배관을 제공합니다.

🔋 USB-C 은유

USB-C 이전에는 각 장치가 고유의 독점 커넥터를 사용했습니다 — 휴대폰 충전기는 노트북에서 작동하지 않았고, 디스플레이 케이블은 저장 장치와 작동하지 않았습니다. USB-C는 하나의 포트, 하나의 케이블로 무한한 장치를 연결하는 보편적 표준으로 이를 해결했습니다.

MCP 이전의 AI 통합도 같은 혼란이었습니다. Claude를 GitHub에 연결하려면 맞춤 코드가 필요했습니다. GPT-4를 같은 GitHub API에 연결하려면 다른 맞춤 코드가 필요했습니다. 새 도구를 추가하면 각 AI 플랫폼마다 통합을 처음부터 다시 구축해야 했습니다.

MCP는 AI를 위한 USB-C입니다. 하나의 표준:

  • MCP 서버를 한 번 구축하면 — 어떤 MCP 클라이언트든 이를 사용할 수 있습니다
  • 새 AI 모델을 채택해도 — 기존 MCP 서버는 즉시 작동합니다
  • MCP 서버 생태계는 AI 모델 개발과 독립적으로 성장합니다

⚙️ MCP 작동 방식

MCP는 전송 계층 위에서 동작하는 JSON-RPC 2.0 프로토콜을 사용합니다(stdio는 로컬 서버용, HTTP/SSE는 원격 서버용). 통신은 초기화, 역량 발견, 요청 처리의 수명주기를 따릅니다.

세 가지 핵심 원시 요소

Primitive무엇을 노출하는가Example
Tools AI가 호출할 수 있는 함수들(모델 제어) search_github_issues, run_sql_query, send_email
Resources AI가 읽을 수 있는 데이터(애플리케이션 제어) file:///workspace/src, db://customers/schema
Prompts 재사용 가능한 프롬프트 템플릿(사용자 제어) code-review, summarize-pr, explain-error

통신 흐름

  1. 초기화: 클라이언트가 서버에 연결하고 프로토콜 버전과 역량을 교환합니다
  2. 발견: 클라이언트가 사용 가능한 도구, 리소스 및 프롬프트 목록을 요청합니다
  3. 호출: AI 모델이 도구를 호출하기로 결정하면; 클라이언트가 요청을 서버로 전송합니다
  4. 반환: 서버가 동작을 실행하고 구조화된 결과를 클라이언트에 반환합니다
  5. 계속: AI 모델이 결과를 통합하고 추론을 계속합니다

전송 옵션

Transport권장 사용 사례Notes
stdio 로컬 도구, CLI 통합 Client launches server as subprocess; simplest setup
HTTP + SSE 원격/클라우드 서비스, 공유 팀 환경 Server runs independently; supports auth headers
WebSocket 실시간 양방향(초안) 스트리밍 사용 사례를 위해 제안됨

🔄 MCP vs Function Calling

Function calling(도구 사용)은 OpenAI, Anthropic, Google과 같은 특정 AI API에 내장된 기능으로, 모델이 호출할 수 있는 커스텀 함수를 정의할 수 있게 합니다. MCP는 function calling의 위 또는 옆에서 동작하는 레이어로서 이것을 표준화합니다 그 함수들이 어떻게 발견되고 연결되는지.

Function CallingMCP
Scope API별, 요청 단위 크로스플랫폼, 표준화됨
Discovery API 호출에 하드코딩됨 동적 — 서버가 역량을 광고함
Portability 하나의 AI 제공자에 묶여 있음 어떤 MCP 호환 클라이언트와도 작동함
Resources 표준화되어 있지 않음 일급 원시(파일, DB, URI)
권장 사용 사례 단순한 단일 제공자 사용 사례 다중 도구, 다중 모델 생산 시스템

실무에서는 MCP 서버가 종종 내부적으로 function calling을 사용합니다 — MCP는 검색 및 연결 레이어를 제공하고, function calling은 실제 LLM-도구 호출을 처리합니다.

🏢 누가 MCP를 지원하나

MCP 채택은 2024년 12월 출시 이후 빠르게 증가했습니다. 2026년 4월 기준 생태계에는:

MCP를 지원하는 AI 클라이언트

  • Claude (Anthropic) — Claude.ai 및 Claude Code에서의 네이티브 MCP 지원
  • Cursor — 코드 인식 AI 지원을 위한 MCP 서버
  • VS Code (GitHub Copilot) — 에이전트 모드에서의 MCP 통합
  • Windsurf (Codeium) — MCP 서버 지원
  • Continue.dev — MCP 기반 오픈소스 IDE 어시스턴트

인기 있는 MCP 서버들

  • Filesystem — 읽기/쓰기 로컬 파일(공식 Anthropic)
  • GitHub — 리포지토리, PR, 이슈, 코드 검색
  • PostgreSQL / SQLite — 데이터베이스 쿼리 및 스키마 탐색
  • Brave Search / Exa — API 키 없이 웹 검색
  • Puppeteer / Playwright — 브라우저 자동화
  • Slack / Linear / Notion — 생산성 도구 통합
📦 MCP 서버 찾기: The 공식 MCP 서버 저장소 및 mcp.so와 같은 커뮤니티 레지스트리는 수백 개의 사용 가능한 서버를 나열합니다.

🚀 MCP 시작하기

옵션 1: 기존 MCP 서버 사용(5분)

MCP를 가장 빠르게 경험하는 방법은 사전 구축된 서버와 함께 Claude Desktop을 사용하는 것입니다. Claude Desktop 구성은 다음에서 편집하십시오 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
    }
  }
}

옵션 2: MCP 서버 구축(30분)

공식 SDK는 TypeScript, Python, Kotlin용으로 제공됩니다:

// TypeScript MCP server example
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({ name: "my-server", version: "1.0.0" });

server.setRequestHandler("tools/list", async () => ({
  tools: [{
    name: "get_weather",
    description: "Get current weather for a city",
    inputSchema: {
      type: "object",
      properties: { city: { type: "string" } },
      required: ["city"]
    }
  }]
}));

server.setRequestHandler("tools/call", async (request) => {
  const { city } = request.params.arguments;
  // ... fetch weather data
  return { content: [{ type: "text", text: `Weather in ${city}: sunny, 22°C` }] };
});

const transport = new StdioServerTransport();
await server.connect(transport);

🔐 MCP 보안 고려사항

MCP의 힘 — AI 모델에 도구, 파일 및 서비스에 대한 액세스를 제공하는 것 — 은 개발자가 설계해야 하는 보안 위험도 함께 가져옵니다.

RiskDescriptionMitigation
MCP를 통한 프롬프트 인젝션 도구 결과의 악의적 콘텐츠가 AI를 조작함 도구 출력을 정화하십시오; 추론 모델과 행동 모델을 분리하여 사용하십시오
과도한 권한을 가진 서버 MCP 서버가 필요한 것보다 더 많은 권한을 가질 때 최소 권한 원칙; 가능하면 읽기 전용 사용
혼동된 대리(Confused deputy) AI가 사용자 인식 없이 공격자를 대신해 행동함 파괴적/되돌릴 수 없는 행동에 대한 HITL 확인
서버 공급망 악의적 서드파티 MCP 서버가 데이터를 탈취함 신뢰할 수 있고 감사된 서버만 사용; 서버 코드를 검토하십시오
⚠️ MCP 서버에 절대 개발자 인턴에게 주지 않을 액세스를 부여하지 마십시오. 만약 새 직원에게 임의의 데이터베이스 쿼리를 실행하도록 허용하지 않겠다면, MCP 서버에 무제한 데이터베이스 액세스를 주지 마십시오. MCP 서버의 권한을 설계할 때는 어떤 API를 설계할 때만큼 신중하게 설계하십시오.

MCP 도구 결과를 통해 프롬프트 인젝션이 어떻게 무기화될 수 있는지를 포함한 AI 보안 취약성에 대한 심층 분석은 우리의 가이드를 참조하십시오: 프롬프트 인젝션 설명.