MCP 클라이언트와 서버 아키텍처 이해하기

MCP(Model Context Protocol) 생태계 개요

MCP(Model Context Protocol)는 AI 모델, 외부 도구, 데이터 소스 간의 컨텍스트 정보를 주고받는 방식을 표준화하는 프로토콜입니다. 이 생태계는 크게 두 부분으로 나뉩니다: MCP ClientsMCP Servers.

MCP Clients

정의와 역할

MCP Client는 LLM(Large Language Model)을 호스팅하고 사용자 인터페이스를 제공하는 애플리케이션입니다. 이들은 MCP 프로토콜을 구현하여 MCP Server와 통신합니다.

  • 역할: MCP Server에 도구 사용 요청을 보내고, 리소스에 접근하며, 응답을 처리합니다.
  • 특징: 사용자와의 상호작용을 관리하고, 컨텍스트를 유지하며, 적절한 MCP Server에 요청을 라우팅합니다.
  • MCP Client의 예시

  • Cline: VSCode 확장 프로그램으로 Claude를 통합
  • Claude Desktop: 독립 실행형 데스크톱 애플리케이션
  • MCP Chatbot: 간단한 CLI 챗봇
  • MCP CLI client: LLM 프롬프트를 실행하고 MCP 클라이언트를 구현하는 CLI
  • MCP Simple Slackbot: Slack에서 작동하는 봇
  • MCPOmni Connect: SSE를 통해 MCP 서버에 연결하는 클라이언트
  • Nerve: 에이전트 개발 키트 및 CLI
  • NextChat: Claude, DeepSeek, GPT4 등을 지원하는 AI 어시스턴트
  • oterm: Ollama용 터미널 클라이언트
  • Superinterface: 인앱 AI 어시스턴트 구축 플랫폼
  • SeekChat: AI 채팅 데스크톱 애플리케이션
  • Tester MCP Client: SSE를 통한 MCP 서버 테스트용 클라이언트
  • Windsurf: 에이전트 IDE
  • Witsy: AI 데스크톱 어시스턴트
  • y-cli: 터미널용 채팅 애플리케이션
  • Zed: 고성능 멀티플레이어 코드 에디터
  • MindPal: AI 에이전트 및 멀티에이전트 워크플로우 구축 플랫폼
  • MCP Servers

    정의와 역할

    MCP Server는 특정 기능이나 외부 시스템과의 통합을 제공하는 서버입니다. 이들은 도구(tools)와 리소스(resources)를 MCP Client에 노출합니다.

  • 역할: 특정 기능이나 외부 시스템에 대한 인터페이스를 제공하고, MCP Client의 요청을 처리합니다.
  • 특징: 도구(tools)와 리소스(resources)를 표준화된 방식으로 노출하며, 외부 API와의 통합을 관리합니다.
  • MCP Server의 예시

  • Slack MCP Server: Slack 워크스페이스와의 상호작용 지원
  • Browser-use MCP Server: 브라우저 자동화 기능 제공
  • Google Drive MCP Server: Google Drive 파일 검색 및 접근 지원
  • Google Docs MCP Server: Google Docs 문서 생성 및 편집 지원
  • Notion MCP Server: Notion 페이지 및 데이터베이스 관리 지원
  • Google Calendar MCP Server: 캘린더 이벤트 관리 지원
  • 기타 다양한 서버들 (GitHub, GitLab, Puppeteer 등)
  • 호스트 vs. 클라이언트

  • 호스트 애플리케이션(Host Application): Cline이나 Claude Desktop과 같은 사용자 인터페이스와 LLM 핸들러를 제공하는 애플리케이션입니다.
  • MCP Client: 호스트 애플리케이션 내에 포함된 컴포넌트로, MCP 프로토콜을 구현하여 MCP Server와 통신합니다.
  • cline_mcp_settings.json

    `cline_mcp_settings.json` 파일은 MCP Client(Claude/Cline)가 어떤 MCP Server에 연결할지, 어떻게 시작할지, 어떤 환경 변수가 필요한지 등을 정의하는 설정 파일입니다. 이 파일 자체는 MCP Client가 아니라 설정 파일입니다.

    이 파일은 다음과 같은 정보를 포함합니다:

  • 연결할 MCP Server 목록
  • 각 서버를 시작하는 명령과 인자
  • 각 서버에 필요한 환경 변수
  • 권한 설정(autoApprove 목록)
  • MCP 아키텍처 다이어그램

    ┌─────────────────────────────────┐
    │ 호스트 애플리케이션                  │
    │ (Cline 또는 Claude Desktop)      │
    │                                 │
    │  ┌─────────────────────────┐    │
    │  │ Claude (MCP Client)     │    │
    │  └─────────────────────────┘    │
    └─────────────────────────────────┘
                  ▲
                  │ MCP 프로토콜
                  ▼
    ┌─────────────────────────────────┐
    │ MCP Servers                     │
    │ (Slack, Browser-use, GDrive...) │
    └─────────────────────────────────┘
                  ▲
                  │ 외부 API
                  ▼
    ┌─────────────────────────────────┐
    │ 외부 시스템                        │
    │ (Slack API, 웹 브라우저 등)        │
    └─────────────────────────────────┘

    MCP 아키텍처의 작동 방식

  • 호스트 애플리케이션(Cline/Claude Desktop)은 사용자 인터페이스를 제공하고 LLM을 호스팅합니다.
  • 호스트 애플리케이션 내의 MCP Client(Claude)는 MCP 프로토콜을 사용하여 MCP Server와 통신합니다.
  • MCP Server는 외부 시스템(Slack API, 웹 브라우저, Google Drive 등)과 통신하여 특정 기능을 제공합니다.
  • cline_mcp_settings.json 파일은 MCP Client가 어떤 MCP Server에 연결할지 구성합니다.
  • 이 아키텍처를 통해 Claude는 외부 시스템과 상호작용하여 기능을 확장할 수 있습니다. 예를 들어, Slack 메시지 보내기, 브라우저 자동화, Google Drive 파일 검색 등의 작업을 수행할 수 있습니다.

    결론

    MCP Client는 호스트 애플리케이션(Cline, Claude Desktop 등)에 내장된 컴포넌트로, MCP 프로토콜을 통해 MCP Server와 통신합니다. 사용자 인터페이스와 LLM 핸들러를 제공하는 호스트 애플리케이션이 MCP Client를 포함하고 있는 구조입니다.

    MCP 생태계는 표준화된 프로토콜을 통해 AI 모델이 다양한 외부 시스템과 상호작용할 수 있게 함으로써, AI의 기능과 활용 범위를 크게 확장합니다. 이는 마치 웹의 HTTP 프로토콜이나 하드웨어의 USB 표준과 유사한 역할을 하며, AI 상호작용의 미래를 형성하는 중요한 기술입니다.

    Host 없이 Client만 존재할 수 있는가?

    MCP 생태계에서 Host와 Client의 관계를 살펴보면, 이론적으로는 Host 없이 Client만 존재할 수 있습니다. 그러나 실제 구현에서는 몇 가지 고려해야 할 점이 있습니다:

  • 독립형 MCP Client: 이론적으로 MCP 프로토콜만 구현하는 독립형 클라이언트를 만들 수 있습니다. 이 경우 LLM 기능이 없는 순수한 MCP 클라이언트가 됩니다. 예를 들어, MCP Server와 통신하여 특정 작업을 수행하는 CLI 도구나 라이브러리가 이에 해당할 수 있습니다.
  • 실용적 측면: MCP의 주요 목적은 LLM이 외부 시스템과 상호작용할 수 있게 하는 것입니다. LLM 없이 MCP Client만 있다면, 단순히 외부 API를 호출하는 일반 클라이언트와 큰 차이가 없을 수 있습니다. MCP의 가치는 LLM과 외부 시스템 간의 표준화된 통신에 있습니다.
  • 현재 구현 사례: 현재 대부분의 MCP Client는 호스트 애플리케이션(Cline, Claude Desktop, NextChat 등)에 내장되어 있습니다. 이는 LLM과 MCP 프로토콜을 함께 활용하는 것이 가장 효과적이기 때문입니다.
  • 테스트 도구: 'Tester MCP Client'와 같은 도구는 LLM 없이 MCP Server를 테스트하기 위한 목적으로 사용될 수 있습니다. 이런 경우 Host 없이 Client만 존재하는 예시라고 볼 수 있습니다.
  • 결론적으로, Host 없이 Client만 존재할 수 있지만, MCP의 주요 가치인 LLM과 외부 시스템 간의 통합이라는 측면에서는 제한적인 활용 사례를 가집니다. 대부분의 실용적인 구현에서는 LLM을 호스팅하는 애플리케이션(Host)과 MCP Client가 함께 존재하는 형태가 일반적입니다.

    ← Go home