본문 바로가기
AI/AI Agents

🏗️ MCP 아키텍처 완전 정리 — Host, Client, Server— 컨텍스트가 오가는 구조를 이해하면, MCP가 보인다!

by 데이터 벌집 2025. 4. 1.
반응형

🏗️ MCP 아키텍처 완전 정리 — Host, Client, Server— 컨텍스트가 오가는 구조를 이해하면, MCP가 보인다!

🧱 1. MCP의 전체 구조 요약

MCP는 AI 모델에게 필요한 컨텍스트(문맥)를 가져오기 위해 만들어진 표준 프로토콜입니다.
MCP는 크게 세 가지 역할로 구성됩니다:

구성요소 설명 예시
🧠 Host 전체 프로세스를 관리하고 연결을 조율하는 컨테이너 Claude Desktop, Cursor
🤝 Client MCP 서버에 연결하여 데이터를 요청하거나 명령을 내리는 역할 Claude Agent, Cursor 내부 MCP 모듈
🛠 Server 툴/리소스/프롬프트를 제공하는 외부 시스템 DB MCP 서버, Git MCP 서버, 로그 MCP 서버 등

 

MCP의 전체 구조 요약


🧭 2. Host의 역할

Host는 MCP 아키텍처의 중앙 통제실이라고 할 수 있습니다. 모든 Client는 Host 안에서 실행됩니다.

🔧 Host가 하는 일

  • 클라이언트(Client) 생성 및 관리
  • 연결 권한 및 보안 정책 적용
  • 사용자 동의 흐름(UI 제공)
  • 다양한 서버의 응답을 취합 및 정제
  • LLM(예: Claude, GPT)과 통합

🧑‍💻 예시

  • Claude Desktop 앱이 Host가 될 수 있음
  • Cursor는 여러 MCP 서버를 연결할 수 있도록 Host 역할 수행

🔌 3. Client의 역할과 예시

Client는 MCP 서버와 직접 대화하는 역할을 합니다.
Host가 만든 Client가 1:1로 특정 서버와 연결되어 작동합니다.

📦 Client가 하는 일

  • 서버와 연결을 초기화
  • 서버의 capabilities(툴, 리소스 등) 요청
  • 명령 전송, 응답 수신
  • 사용자의 명령을 정리해서 서버에 전달

🔍 대표 예시

MCP Client설명

 

Claude Code Claude 앱 안에서 코딩 툴 서버와 연결
Cursor Editor 편집기에서 MCP 서버로 코드/파일 요청
Windsurf (Codium) 코드 분석, 추천 등 MCP 기능 포함

📡 4. Server의 역할

Server는 AI가 사용할 수 있는 기능을 툴(Tools), 리소스(Resources), 프롬프트(Prompts)로 노출합니다.

🔨 Server가 제공하는 기능

구성요소 설명 예시
🛠 Tools 실행 가능한 기능 (API 호출, 계산 등) run_backtest, place_order
📂 Resources AI가 참고할 수 있는 데이터 price_data.csv, trade_history.json
🧠 Prompts 사용자 정의 명령 템플릿 "기술적 분석 전략 생성해줘"

MCP 서버는 로컬(내 컴퓨터) 또는 원격(웹 서버) 어디든 존재 가능
예: GitHub MCP 서버, Supabase Vector DB MCP 서버


🔄 5. 클라이언트 ↔ 서버 간 메시지 흐름 (JSON-RPC)

MCP는 JSON-RPC 2.0이라는 통신 프로토콜을 기반으로 동작합니다.
이 프로토콜은 메시지를 아래와 같은 세 가지로 구분합니다:

유형설명
📨 Request 요청 메시지 (응답 필요)
📬 Response 요청에 대한 응답
🔔 Notification 알림 (응답 불필요)

🔁 메시지 흐름 예시

백테스트 툴을 실행하는 경우

  1. Client → Server:
{
  "jsonrpc": "2.0",
  "method": "tools/run_backtest",
  "params": {
    "strategy": "mean_reversion",
    "period": "30d"
  },
  "id": 1
}

 

2. Server → Client:

{
  "jsonrpc": "2.0",
  "result": {
    "sharpe_ratio": 1.8,
    "pnl": 12.5
  },
  "id": 1
}
 
json
CopyEdit
{ "jsonrpc": "2.0", "method": "log", "params": { "message": "Backtest completed" } }

 


📊 JSON-RPC 도식화

sequenceDiagram
    participant User
    participant Host
    participant Client
    participant Server

    User->>Host: 실행 요청 (ex: "백테스트 해줘")
    Host->>Client: 프롬프트/리소스 전달
    Client->>Server: JSON-RPC Request 전송
    Server-->>Client: JSON-RPC Response 수신
    Client-->>Host: 결과 반환
    Host-->>User: 응답 표시

 

 


요약

  • Host는 연결을 조율하고 보안을 책임지는 중앙 제어소
  • Client는 서버와 직접 통신하며, 사용자 명령을 전달
  • Server는 툴, 리소스, 프롬프트를 통해 AI가 쓸 수 있는 능력을 제공
  • JSON-RPC로 통일된 메시지 구조를 사용해 신뢰성 높고 표준화된 통신 가능
반응형