LLM이 MCP를 어떻게 사용하나요?
Source: Dev.to
개요
대형 언어 모델(LLM)이 모델 컨텍스트 프로토콜(MCP) 서버에 무엇이 있는지 아는 방식을 이해하려면, LLM을 “아는” 사람이라기보다 요리 직전에 메뉴를 건네받는 셰프에 비유하세요. LLM은 실제로 MCP가 존재한다는 것을 메시지를 보낼 때까지 “알지” 못합니다.
단계별 프로세스
-
세션 시작
MCP가 활성화된 애플리케이션(예: Claude Desktop 또는 Cursor)에서 MCP 클라이언트(앱)는 표준 요청tools/list를 사용해 MCP 서버(툴)와 통신합니다. -
서버 응답
서버는 제공하는 모든 도구의 목록을 반환합니다. 각 도구에 대해 다음 정보를 제공합니다:- 이름
- 설명
- JSON 스키마(도구가 필요로 하는 인수)
-
도구 목록을 프롬프트에 삽입
MCP 클라이언트는 이 목록을 LLM의 프롬프트 컨텍스트에 직접 삽입합니다. 보통 시스템 지시문에 포함됩니다. -
숨겨진 지시 블록
LLM이 사용자의 메시지를 받을 때, 다음과 같은 숨겨진 텍스트 블록도 함께 보게 됩니다:You have access to the following tools: get_weather: Get current weather. Parameters: location (string). query_postgres: Run SQL on the DB. Parameters: query (string). -
사용자 질의
예를 들어 “도쿄의 날씨가 어때?”라고 물어봅니다. -
도구 선택
LLM은 날씨를 모른다는 것을 인식하고, 의도와 일치하는 도구(get_weather)가 있음을 확인합니다. -
구조화된 도구 호출
“툴 사용” 또는 “함수 호출” 패턴에 대한 학습을 바탕으로, LLM은 일반 텍스트 생성을 멈추고 다음과 같은 구조화된 스니펫을 출력합니다:{ "call": "get_weather", "args": { "location": "Tokyo" } } -
클라이언트가 호출을 처리
- 클라이언트는 LLM 출력에서 해당 스니펫을 감지합니다.
- LLM을 일시 정지하고 지정된 요청을 MCP 서버에 보냅니다.
- 서버는 실제 코드를 실행하고 결과를 클라이언트에 반환합니다.
-
결과를 LLM에 다시 전달
클라이언트는 결과를 LLM의 컨텍스트에 다시 삽입합니다. -
최종 답변
LLM은 결과를 읽고 예를 들어 “도쿄의 현재 날씨는 15 °C이며 맑습니다.”라고 답합니다.