✨ 공부하며 성장하는 기록 공간입니다.
아직 부족한 점이 많고 배워야 할 것도 많지만, 그만큼 배우는 즐거움도 큽니다.
틀리거나 부족한 내용이 있다면 언제든지 편하게 지적해 주세요 😁
이 블로그는 오픈소스 프로젝트 githru-vscode-extension을 공부하고 기여한 내용을 정리한 공간입니다.
처음보다 성장해 있는 나 자신을 기대하며 꾸준히 기록해나가겠습니다!
MCP Host
지금까지 우리는 MCP Server가 “외부 세계의 기능을 LLM에게 제공하는 역할”을,
MCP Client가 “LLM ↔ MCP Server를 연결하는 브릿지 역할”을 한다는 것을 살펴보았습니다.
이번 글에서는 MCP 아키텍처의 최상위 계층, 즉
사용자와 직접 상호작용하며 전체 시스템을 조율하는 MCP HOST에 대해 알아보겠습니다.
저희가 흔히 사용하는 Claude Desktop, Cursor, VSCode 등과 같은 애플리케이션이 바로 MCP Host에 해당합니다.
MCP Host란
MCP Host는 LLM을 중심으로 다양한 MCP Client와 MCP Server를 호출하는 계층입니다.
- 사용자는 Host에서 LLM과 대화하고
- Host는 내부에서 MCP Client를 동작시키고
- MCP Client는 MCP Server와 통신하여 외부 데이터를 가져오며
- 최종적으로 Host는 다시 LLM과 사용자에게 그 결과를 보여줍니다.
즉, Host는 “AI 인터페이스 + MCP 생태계 관리자”라고 볼 수 있습니다.
MCP Host의 주요 역할
Host는 3-tier 구조의 최상위 계층이므로 책임과 역할이 상당히 많습니다.
1️⃣ 사용자 인터페이스 제공
Host는 MCP 시스템에서 사용자와 직접 상호작용하는 유일한 계층이다.
- 채팅 UI
- 대화 맥락 관리
- Tool execution 승인 UI
- Sampling 승인 UI (LLM 호출)
- Elicitation 입력 폼
- Roots 설정(Workspace 선택 UI)
- 리소스 브라우저 (파일 탐색기 등)
즉, Host가 어떤 UI/UX를 제공하느냐에 따라
MCP 사용 경험이 완전히 달라집니다.
2️⃣ LLM과 통합
Host는 내부적으로 LLM을 실행하고
LLM이 생성하는 tool_call, response, messages 등을 모두 처리합니다.
- LLM에게 Prompt 전달
- LLM이 생성한 tool_call 캡처
- 적절한 MCP Client로 라우팅
- 결과를 다시 LLM에게 전달
- 최종 사용자에게 답변 반환
즉, Host는 LLM의 실행 엔진 + 오케스트레이션 엔진입니다.
3️⃣ 여러 MCP 클라이언트 관리
Host 내부에는 MCP Server와의 연결 개수만큼 MCP Client 인스턴스가 있습니다.
- FileSystem 서버 → Client A
- GitHub 서버 → Client B
- Database 서버 → Client C
- Custom 회사 내부 서버 → Client D
Host는 이 개별 클라이언트를 동시에 관리하고 상태를 유지합니다.
예를 들어 Cursor나 Claude Desktop은:
- 로컬 filesystem MCP server
- 원격 GitHub MCP server
- Jira MCP server
- Slack MCP server
를 동시에 연결해 멀티 컨텍스트 환경을 구성합니다.
4️⃣ 보안 정책 실행(Security Enforcement)
Host는 MCP 전체 보안 모델의 핵심으로, "최종 사용자"의 컴퓨터와 권한을 대신 지키는 역할입니다.
Host는 다음 보안 정책을 강제합니다:
- Tool 실행 승인 UI 제공
- Sampling 요청 승인(LLM 호출 승인)
- Elicitation 사용자 확인
- Roots 설정 및 제한
- 서버 인증(OAuth, Token 등)
- 접근 가능한 서버 목록 관리
- Audit Log / Activity History 제공
서버가 마음대로 LLM을 호출하거나
마음대로 사용자 컴퓨터 파일을 읽는 상황을 막는 것이 Host의 역할입니다.
MCP Host의 책임
Host는 단순히 LLM을 띄우는 앱이 아니라 다음과 같은 책임을 수행합니다.
✔ 책임 1: LLM 실행 및 툴 사용 오케스트레이션
LLM이 tool_call을 생성하면 Host는
- 어떤 MCP 서버의 Tool인지 파악
- 해당 MCP Client를 찾아 요청 전달
- Tool 실행 결과를 LLM에게 다시 전달
- LLM이 최종 사용자 메시지를 만들도록 함
✔ 책임 2: 사용자 승인 제공 (Human-in-the-loop)
Host는 아래 상황에서 모두 사용자 승인을 요구할 수 있습니다
- Tool 호출
- Sampling 요청(LLM 호출 요청)
- Elicitation 요청(사용자 입력 요청)
- 파일 접근(Roots)
- 외부 SaaS 연결 (GitHub, Slack 등)
AI가 아니라 사용자가 최종 의사결정권을 가집니다
✔ 책임 3: 상태 관리 (State & Context Management)
Host는:
- MCP Server 연결 상태
- Roots 변경사항
- 사용 가능한 Tools / Resources 목록
- Prompt 목록
- LLM 대화 기록
- Notification 흐름(예: tools/list_changed)
까지 모두 로컬에서 관리해야 합니다
✔ 책임 4: 여러 서버의 컨텍스트 통합
Host는 복수의 MCP Server를 동시에 사용 가능해야 합니다
예를 들어, 아래처럼 Workflow가 연결될 수도 있습니다
이 모든 흐름을 단일 LLM 대화 안에서 매끄럽게 사용하도록 하는 것은 Host의 책임입니다.
'OSSCA > 2025' 카테고리의 다른 글
| [OSSCA2025] MCP Client (0) | 2025.11.16 |
|---|---|
| [OSSCA2025] MCP Server (0) | 2025.10.26 |
| [OSSCA2025] MCP 개요 (0) | 2025.10.21 |
| [OSSCA2025] 2025 OSSCA 발대식 후기 (0) | 2025.07.14 |