AI 비서에게 “내 구글 캘린더 확인해서 이번 주 미팅 정리해줘”라고 말하면, AI는 어떻게 내 캘린더에 접근할까? 데이터베이스에서 특정 데이터를 끌어오거나, GitHub 이슈를 생성하거나, 스마트홈 기기를 제어하는 건 어떻게 가능한 걸까?

지금까지는 이런 기능 하나하나를 AI 플랫폼마다 개별적으로 개발해야 했다. Claude용 캘린더 연동, ChatGPT용 캘린더 연동, Copilot용 캘린더 연동… 같은 걸 세 번, 네 번 만드는 거다. 개발자 입장에선 지옥이지.

MCP(Model Context Protocol)는 바로 이 문제를 해결하기 위해 등장했다. Anthropic이 만든 오픈소스 프로토콜로, AI 앱과 외부 시스템을 연결하는 표준 규격이다.

MCP Connection

USB-C 비유가 딱이다

MCP 공식 문서에서 쓰는 비유가 있는데, 이게 정말 직관적이다.

“MCP는 AI 애플리케이션을 위한 USB-C 포트 같은 거다.”

USB-C 나오기 전을 생각해보자. 노트북 충전기, 스마트폰 충전기, 태블릿 충전기 다 달랐다. 제조사마다, 기기마다 다른 케이블과 포트. 가방에 케이블만 몇 개씩 들고 다녔던 그 시절.

지금은? USB-C 하나면 끝이다. 노트북도, 스마트폰도, 태블릿도, 심지어 모니터까지 하나의 포트로 연결된다.

MCP도 마찬가지다. AI 앱이 데이터베이스든, API든, 로컬 파일이든 하나의 프로토콜로 연결할 수 있게 해준다. 개발자는 MCP 서버 하나만 만들면, Claude든 ChatGPT든 VS Code든 어디서든 쓸 수 있는 거다.

솔직히 이건 꽤 혁신적이라고 봅니다. 2026년 현재, AI가 단순 챗봇을 넘어서 실제 도구(tool)로 자리잡으려면 이런 표준화가 필수거든요.

왜 MCP가 필요했을까?

N×M 문제

기존 방식의 문제점을 간단한 수식으로 표현하면:

AI 플랫폼 N개 × 외부 시스템 M개 = N×M개의 통합 코드

예를 들어:

  • AI 플랫폼: Claude, ChatGPT, Gemini, Copilot (4개)
  • 외부 시스템: Google Calendar, Notion, PostgreSQL, GitHub, Slack (5개)

총 20개의 통합 코드를 작성하고 유지보수해야 한다는 뜻이다. 미친 짓이지.

MCP의 해결책: N+M

MCP는 이걸 N+M 문제로 줄여준다.

┌─────────────┐       ┌──────────────┐       ┌─────────────────┐
│             │       │              │       │                 │
│   Claude    │◄──────┤              │       │  Google Cal     │
│             │       │              │       │  MCP Server     │
└─────────────┘       │              │       └─────────────────┘
                      │   MCP        │
┌─────────────┐       │   Protocol   │       ┌─────────────────┐
│             │       │              │       │                 │
│  ChatGPT    │◄──────┤              │       │    Notion       │
│             │       │              │       │  MCP Server     │
└─────────────┘       │              │       └─────────────────┘
                      │              │
┌─────────────┐       │              │       ┌─────────────────┐
│             │       │              │       │                 │
│   VS Code   │◄──────┤              │◄──────┤   PostgreSQL    │
│             │       │              │       │  MCP Server     │
└─────────────┘       └──────────────┘       └─────────────────┘

이제 개발자는:

  • MCP 서버 하나만 만들면 → 모든 AI 플랫폼에서 사용 가능
  • MCP 클라이언트 하나만 구현하면 → 모든 데이터 소스에 접근 가능

4개 AI × 5개 시스템 = 9개 구현으로 끝난다. 20개에서 9개로. 이게 바로 표준의 힘이다.

MCP 아키텍처 — 어떻게 동작하는가

MCP는 기본적으로 클라이언트-서버 아키텍처다. 구조를 뜯어보면:

┌──────────────────────────────────────────────────────┐
│                      Host                            │
│  (AI Application: Claude Desktop, VS Code, etc.)     │
│                                                       │
│  ┌────────────────────────────────────────────────┐  │
│  │           MCP Client                           │  │
│  │  - Connection Management                       │  │
│  │  - Protocol Handling                           │  │
│  │  - Request/Response Routing                    │  │
│  └───────────────┬────────────────────────────────┘  │
└──────────────────┼───────────────────────────────────┘
                   │
                   │ JSON-RPC 2.0
                   │ (STDIO or HTTP)
                   │
┌──────────────────┼───────────────────────────────────┐
│  ┌───────────────▼────────────────────────────────┐  │
│  │           MCP Server                           │  │
│  │  - Tools (함수 호출)                            │  │
│  │  - Resources (데이터 읽기)                      │  │
│  │  - Prompts (프롬프트 템플릿)                    │  │
│  └────────────────────────────────────────────────┘  │
│                                                       │
│                Context Provider                      │
│  (Database, API, File System, Smart Home, etc.)      │
└──────────────────────────────────────────────────────┘

구성 요소

  1. Host (호스트)
    AI 애플리케이션 그 자체. Claude Desktop, VS Code, Cursor, Claude Code 같은 것들.

  2. Client (클라이언트)
    Host 내부에서 MCP 연결을 관리하는 레이어. 요청을 보내고 응답을 받아 처리한다.

  3. Server (서버)
    실제 컨텍스트를 제공하는 프로그램. 데이터베이스 쿼리, API 호출, 파일 읽기 등의 작업을 수행.

통신 방식

MCP는 JSON-RPC 2.0 프로토콜을 사용한다. 요청과 응답이 JSON 형태로 오가는 방식이다.

전송 레이어는 두 가지:

  1. STDIO (Standard Input/Output)
    로컬 프로세스 간 통신. 파이프로 데이터 주고받는 방식. 빠르고 간단해서 로컬 개발 환경에 적합.

  2. Streamable HTTP
    원격 서버와 통신할 때 사용. SSE(Server-Sent Events) 기반으로 실시간 스트리밍 지원.

// 예시: MCP 요청 (JSON-RPC 2.0)
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {
      "city": "Seoul"
    }
  }
}

3가지 핵심 기능 — Tools, Resources, Prompts

MCP는 세 가지 주요 기능을 제공한다. 각각 역할이 명확히 다르다.

1. Tools (도구)

AI가 능동적으로 실행할 수 있는 함수다. “날씨 조회”, “DB 쿼리 실행”, “파일 생성” 같은 작업들.

// MCP Tool 정의 예시
{
  name: "query_database",
  description: "PostgreSQL 데이터베이스에 쿼리 실행",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "SQL 쿼리" },
      params: { type: "array", description: "쿼리 파라미터" }
    },
    required: ["query"]
  }
}

AI가 이 tool을 “호출”하면, MCP 서버가 실제로 DB에 쿼리를 날리고 결과를 돌려준다.

2. Resources (리소스)

AI가 읽을 수 있는 데이터다. 파일, API 응답, 데이터베이스 레코드 등. Tool과 달리 “실행”이 아니라 “조회”가 목적이다.

// MCP Resource 예시
{
  uri: "file:///home/user/notes/meeting-notes.md",
  name: "Meeting Notes",
  mimeType: "text/markdown",
  description: "팀 미팅 기록"
}

AI가 context를 파악할 때 이런 resource를 읽어서 판단에 활용한다.

3. Prompts (프롬프트)

재사용 가능한 프롬프트 템플릿이다. 자주 쓰는 지시사항을 미리 정의해두는 것.

// MCP Prompt 예시
{
  name: "code_review",
  description: "코드 리뷰 프롬프트",
  arguments: [
    { name: "language", description: "프로그래밍 언어", required: true },
    { name: "code", description: "리뷰할 코드", required: true }
  ]
}

이걸 호출하면 미리 짜둔 코드 리뷰 프롬프트가 자동으로 채워진다. 일종의 매크로 같은 거다.

실제 사용 사례

MCP로 뭘 할 수 있는지 구체적으로 보자.

날씨 조회

// 날씨 MCP 서버
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "get_weather") {
    const city = request.params.arguments.city;
    const weather = await fetchWeatherAPI(city);
    
    return {
      content: [{
        type: "text",
        text: `${city} 날씨: ${weather.temp}°C, ${weather.condition}`
      }]
    };
  }
});

AI: “서울 날씨 어때?”
→ MCP Tool 호출: get_weather("Seoul")
→ 서버가 날씨 API 호출
→ AI가 결과 받아서 답변: “서울은 현재 15°C, 맑음입니다.”

데이터베이스 쿼리

# PostgreSQL MCP 서버
@server.call_tool()
async def query_database(query: str, params: list = None):
    async with db_pool.acquire() as conn:
        result = await conn.fetch(query, *params)
        return {"rows": [dict(row) for row in result]}

AI: “지난달 매출 상위 10개 제품 보여줘”
→ AI가 SQL 생성
→ MCP를 통해 DB 쿼리
→ 결과를 테이블로 정리해서 보여줌

GitHub 연동

Issue 생성, PR 코멘트, 코드 검색 등을 MCP 서버로 구현하면, AI가 직접 GitHub를 조작할 수 있다.

“이 버그 수정하고 PR 만들어줘” → AI가 코드 수정 + GitHub API 호출 + PR 자동 생성.

스마트홈 제어

“거실 불 꺼줘”, “온도 23도로 맞춰줘” 같은 명령을 MCP를 통해 IoT 기기와 연결.

사실 이 부분은 아직 초기 단계지만, 가능성은 무궁무진하다고 본다. AI가 물리적 세계와 연결되는 인터페이스가 표준화되면, 진짜 “AI 비서”가 현실이 될 수 있다.

Architecture

지원 클라이언트

2026년 2월 현재, MCP를 지원하는 주요 클라이언트는:

  • Claude Desktop — Anthropic 공식 데스크톱 앱
  • Claude Code — CLI 기반 코딩 어시스턴트 (내가 지금 쓰고 있는 것)
  • VS Code MCP Extension — Visual Studio Code 확장
  • Cursor — AI 코드 에디터
  • Zed — 차세대 코드 에디터

그리고 개발자라면 직접 클라이언트를 만들 수도 있다. Anthropic이 공식 SDK를 TypeScript, Python으로 제공한다.

# TypeScript
npm install @modelcontextprotocol/sdk

# Python
pip install mcp

내가 보는 MCP의 미래

개인적으로 MCP는 AI 생태계에서 게임 체인저가 될 가능성이 크다고 본다.

왜냐면:

  1. 표준의 힘 — USB-C가 전자기기 업계를 바꿨듯, MCP도 AI 통합의 판도를 바꿀 수 있다.
  2. 오픈소스 — Anthropic이 만들었지만, 오픈 프로토콜이다. 누구나 쓸 수 있고, 기여할 수 있다.
  3. 타이밍 — 2024년부터 AI가 단순 챗에서 “Agent” 단계로 넘어가고 있는데, 딱 필요한 시점에 나왔다.

물론 한계도 있다:

  • 아직 초기 단계라 서버 생태계가 부족함
  • 보안 이슈 (AI가 DB나 파일에 접근한다는 건 민감한 문제)
  • 기업 환경에서 도입하려면 거버넌스, 감사 로그 등 고려할 게 많음

하지만 방향성은 확실히 옳다. AI가 진짜 유용한 도구가 되려면, 현실 세계와 연결되어야 하고, 그 연결이 표준화되어야 한다.

다음 편 예고

이번 글에서는 MCP가 뭔지, 왜 필요한지, 어떻게 동작하는지 전체 그림을 그려봤다.

다음 편(2편)에서는 직접 MCP 서버를 만들어볼 거다. TypeScript로 간단한 날씨 조회 서버를 구현하고, Claude Desktop에서 실제로 써보는 실습 포스트가 될 예정이다.

3편에서는 실전 레벨로 들어가서, PostgreSQL 연동, 파일 시스템 접근, 그리고 보안 이슈까지 다룰 계획이다.

MCP에 관심 있다면 다음 편도 기대해주시길!


MCP 시리즈 전체 링크


참고 자료: