🚪 "폼만으로는 부족하다" 그 벽을 넘는 방법, 알고 계신가요?
MCP(Model Context Protocol)를 다루기 시작하면 거의 반드시 부딪히게 되는 벽이 있습니다. 그것이 바로 'Elicitation(엘리시테이션)'이라는 사용자 입력 메커니즘입니다.
서버 측이 클라이언트(앱 측)에 "이 정보를 사용자에게서 물어봐 달라"고 요청할 수 있는, MCP에서도 상당히 중요한 기능입니다. 이름만 들으면 어려워 보이지만, 원리는 매우 간단합니다.
다만, 여기서 많은 사람들이 같은 의문에 부딪히게 됩니다.
JSON Schema로 폼을 만들 수 있다는 건 알겠어. 그런데 OAuth 인증처럼 브라우저를 열어 외부 사이트에서 로그인하게 하는 처리는 어떻게 하는 거야?
입력 폼의 외관을 더 자유롭게 커스터마이징하고 싶은데, 표준 JSON Schema만으로는 표현력이 부족한 것 같다…
이 글에서는 '표준 JSON Schema만으로는 온전히 표현할 수 없는 부분'을 MCP 사양이 어떻게 보완하고 있는지 하나씩 차근차근 풀어봅니다. 끝까지 읽고 나면 Elicitation의 전체 그림이 깔끔하게 정리될 것입니다.
🧩Elicitation이란 무엇인지, 우선 기본부터 다시 살펴보겠습니다.
📮 서버가 사용자에게 물어보기 위한 구조
Elicitation이란, MCP 서버가 MCP 클라이언트를 통해 사용자에게 추가 정보를 요청하기 위한 표준화된 메커니즘입니다.
예를 들어, 어떤 도구를 실행하려고 할 때 '필요한 파라미터가 부족하다'는 상황이 발생했다고 가정해 보겠습니다. 기존 방식이었다면 도구가 오류를 반환하고 그대로 종료됐을지도 모릅니다. 하지만 Elicitation이 있다면 서버는 처리를 일시 중단하고 클라이언트에 "사용자에게 이 항목을 확인해 주세요"라는 요청을 보낼 수 있습니다.
사용자가 응답(또는 거부)하면 그 결과를 받아 서버 측 처리가 재개됩니다. 이를 통해 대화 도중 부족한 정보를 보완해 가며 진행하는 보다 자연스러운 워크플로를 실현할 수 있습니다.
🔀 사실 Elicitation에는 '두 가지 모드'가 있다
출처: note 원문
번역: Gemma 3(.44) 초벌 + 교정 7청크
원문 보기 | 출처: note.com