:)

[MCP] Introduction to Model Context Protocol 본문

AI

[MCP] Introduction to Model Context Protocol

andre99 2025. 6. 30. 20:39

Introduction to Model Context Protocol (MCP)

문제점

  • 기존 LLM은 학습 데이터에 의존해 최신 정보를 반영하지 못함. 날씨, 환율처럼 실시간 변화에는 제대로 대응하지 못하는 문제.

해결책: MCP

  • Model Context Protocol은 LLM이 외부 도구나 실시간 데이터에 접근할 수 있도록 연결 인터페이스 역할 → 결과적으로 LLM의 실용성, 정확성 향상

Key Concepts and Terminology

  • 기존 방식(M×N): 각 모델, 툴마다 전부 따로 연결해야 함 → 연결 개수가 너무 많아짐
  • MCP 방식(M+N): 모델은 MCP 한 번만 연결하고, 툴도 MCP만 연결 → 모든 연결이 하나의 표준으로 통합됨

단일 모델과 tool 간의 개별 연결

⇒ 모델이 Database, Filesystem, Calculator에 직접 연결되어 있음. 각 툴마다 다른 방식의 API로 연결하고 있어서 각각 고유한 API로 연결되어야 함. 여기서는 툴이 3개뿐이지만, 이 모델이 다른 툴과도 연결하려면 그때마다 새로운 방식으로 또 연결해야 함 → 유지보수 어려움

 

여러 모델 ↔ 여러 툴 연결

⇒ 이렇게 연결이 늘어나면: 각각 인터페이스도 다르고 개발/테스트/유지보수가 매우 복잡해짐. 툴 하나만 바꿔도 3개 모델 다 수정해야 함

⇒MCP라는 표준 허브만 연결하면 다양한 도구를 통합적으로 사용할 수 있게 됨

 

MCP 도입 후 M+N 구조

⇒ 표준 인터페이스(MCP)를 중간에 둠. Model 2 → MCP만 연결. Database / Filesystem / Calculator → MCP 서버로만 연결

⇒ M×N 방식 → M+N 구조로 단순화

 

Components

Host 사용자가 직접 상호작용하는 앱
Client Host 내부에서 MCP Server와 메시지를 주고받는 중계자 역할
Server 외부 도구/데이터/서비스를 MCP 프로토콜로 제공하는 프로그램

⇒ Host와 Client는 종종 혼용되지만 Host ⊃ Client 관계

 

구성 요소

1. Host

  • 사용자와 상호작용하는 메인 애플리케이션. 전체 박스는 "Host". 안에는 Client가 2개.
  • 예시) Claude, Cursor

2. Client

  • 각각의 Client는 하나의 MCP Server와 연결되어있음.
  • Client는 MCP 프로토콜에 따라 요청을 만들고, 서버와 데이터를 주고받음.

3. Server

  • Server는 실제 외부 도구(ex: 날씨 API, 계산기, 파일시스템 등)를 MCP 프로토콜을 통해 제공하는 역할.
  • 그림 속에서는 두 개의 MCP Server가 각각 하나의 Tool을 감싸고 있음.

 

메시지 전달 방식

→ Request 클라이언트가 서버에 작업을 요청할 때
← Response 서버가 응답할 때
← Notification 서버가 응답 없이 클라이언트에게 알림을 보낼 때

MCP는 모든 메시지를 JSON-RPC 2.0 형식으로 주고받음. 읽기 쉽고, 언어에 상관없이 쓸 수 있는 표준 메시지 형식.

  • MCP 메시지 전송 방식
    • stdio: 표준 입출력 방식 (Client와 Server가 같은 컴퓨터에서 동작할 때)
    • HTTP + SSE (Server-Sent Events): Client와 Server가 다른 컴퓨터에서 동작할 때 HTTP 요청으로 시작 → SSE로 실시간 알림/스트리밍

 

MCP 제공 기능

MCP 서버가 외부 기능을 AI 모델에게 제공하는 네 가지 방식

Capability    제어  방향 사용자 승인 주용도
Tools 모델(LLM) Client → Server 필요 메시지 전송, API 호출 등 실행형 기능
Resources 애플리케이션 Client → Server 필요 X 문서 읽기, DB 조회 등 정보 제공
Prompts 사용자 Server → Client 필요 X 작업 유도 템플릿 제공
Sampling 서버 Server → Client → Server 필요 LLM에게 추가 처리 요청 (에이전트 행동)

 

1. Tools: LLM이 직접 "행동"을 요청할 수 있는 기능들

2. Resources: AI가 읽기 전용 정보를 불러올 수 있는 기능들

3. Prompts: 사용자 UI에서 선택 가능한 작업 템플릿

4. Sampling: 서버가 클라이언트에게 “LLM을 호출해달라”고 요청

 

예시) LLM이 “날씨 알려줘”라고 판단하면 → MCP Client가 tools/call을 서버에 보내고 결과를 받아서 LLM이 사용자에게 알려줌

def get_weather(location: str) -> dict:
    return {
        "temperature": 72,
        "conditions": "Sunny"
    }

MCP SDK, Clients

  • MCP SDKPython SDK 예시: FastMCP
  • MCP 서버를 쉽게 만드는 공식 개발 도구
  • MCP Clients구성: mcp.json 파일로 서버 연결 방식 지정 (stdio, sse)
  • Host 안에 존재하며, MCP 서버와 통신을 중계

Recap

  • MCP는 AI와 외부 툴을 연결하는 표준 인터페이스
  • 주요 구성 요소: Host / Client / Server
  • 메시지 방식: JSON-RPC (Request, Response, Notification)
  • 기능 유형: Tool / Resource / Prompt / Sampling
  • 적용: Gradio로 서버 구현 + Client 연결

'AI' 카테고리의 다른 글

[LLM] LLM Fine-tuning: Unsloth 개요  (1) 2025.10.04
[Gen AI] Stable Diffusion  (0) 2025.09.07
[BE] ElasticSearch 개념 정리  (0) 2025.02.07
[CV] YOLO v3  (0) 2025.02.07
[Gen AI] Diffusion-based Video Generative Models  (2) 2025.01.09