아티클

MCP 서버? 클라이언트? 호스트?

어니언킴 2025. 12. 5. 19:12

MCP 서버, 클라이언트, 호스트 등 용어들이 혼용되어 쓰여 혼란스러운 경우가 많다. 이를 위해 쉽게 정리해봤다.

 

기술적으로 서버(Server)와 클라이언트(Client)는 사실 각각의 컴퓨터다. 네이버에 접속한다는 것은 판교에 있는 어떤 컴퓨터(서버)가 "컨텐츠"를 웹페이지를 "서빙" 하고, 나의 컴퓨터(클라이언트)가 이 컨텐츠를 요청한다는 뜻이다.

 

MCP 도 마찬가지다. 파일 시스템에 접근하는 LLM 을 생각해보자. 만약 내 MCP를 통해 회사 컴퓨터의 파일시스템에 접근하는 작업을 하고 싶으면 회사 컴퓨터에 "MCP 파일 서버" 를 띄워야 한다. 그러면 LLM이 동작하는 쪽(보통 클라우드)의 컴퓨터가 MCP 클라이언트가 되어 파일을 요청하게 된다.

 

JSON 형태의 간단한 MCP 파일시스템 요청을 보낸다고 해보자.

{
  "method": "fs/read_file",
  "params": {
    "path": "/home/user/test.txt"
  }
}

 

여기서

  • 이 JSON 요청을 서버로 전송하는 주체가 MCP Client,
  • 요청을 받아 실제 작업을 수행하는 프로그램이 MCP Server 다.

 

따라서 MCP Server는 비교적 명확하다.

“내가 MCP를 통해 접근하고자 하는 도구(tool)를 실제로 실행하는 컴퓨터/프로그램” 이 MCP Server가 된다.

 

그리고 대부분의 경우 MCP Client는 LLM이다.

클라우드에서 동작하는 LLM이 JSON-RPC 프로토콜을 통해 MCP Server에 요청을 보내게 된다.

 

그렇다면 MCP 호스트는 무엇인가? MCP 호스트는 당신이 사용하는 LLM 및 MCP 를 관리하고 연결을 구성하는 앱 또는 프로그램을 말한다. 쉽게 말해, 당신이 사용하는 LLM 인터페이스 또는 에이전트 환경이 MCP Host가 된다. 예시로는 클로드 데스크탑, VSCode 등이 있을 것이다.

 

만약 자체적으로 MCP 를 활용하는 서비스를 개발하고 있을때, 누군가 "그래서 MCP 호스트가 뭐에요?" 라고 묻는다면

  • 로컬 앱이나 웹(프론트엔드) 가 직접 LLM 요청을 보낸다면 -> 서비스 앱 자체가 MCP 호스트
  • 백엔드 서버에서 LLM 을 처리하는 경우 -> 백엔드 서버가 MCP 호스트
  • 크롬 등 브라우저 확장 프로그램이 LLM 을 처리하는 경우 -> 확장프로그램이 MCP 호스트

라고 답변할 수 있을것이다.

 

예시로 정리해보자. 만약 내가 개발 중인 Agent 앱이 ChatGPT API 를 사용하고 MCP 를 통해 Google Drive에서 파일을 가져온다면,

  • MCP Host: 내가 만든 Agent 앱 (내 로컬 컴퓨터)
  • MCP Client: ChatGPT LLM (OpenAI 서버)
  • MCP Server: Google Drive MCP 서버 (Google 서버)

이렇게 역할이 나뉠 수 있다.

 

누구에겐 당연한 이야기일 수 있지만 생각보다 용어가 혼용되어 쓰이는 경우가 많아 정리해둔다.