MCP Elicitation Tutorial — How to Build Interactive Tools with FastMCP (Python)
- MCP Elicitation은 MCP 서버가 클라이언트를 통해 사용자로부터 정보를 요청하고, 응답을 받을 때까지 실행을 일시 중지하는 기능입니다. 🤝
- 이 기능은 서버 시작, 사용자 상호작용, 요청 완료의 세 단계로 진행되어 대화형 도구를 구축하는 데 필수적입니다. 🔄
- 기술적으로 서버는
elicitation.create 메서드를 사용하여 특정 스키마(예: 이름, 이메일)와 함께 구조화된 데이터 요청을 클라이언트에 보냅니다. ⚙️
- 클라이언트는 사용자 입력을 받아
action 필드(예: 'accept')를 포함한 응답을 서버로 다시 전송하여 처리를 계속하게 합니다. 📤
- FastMCP는 MCP 서버를 작성하기 위한 파이썬 라이브러리로,
context.elicit() 함수를 사용하여 비동기적으로 사용자 입력을 처리하는 방법을 시연합니다. 🐍
- 현재 Claude Desktop은 Elicitation을 지원하지 않지만, VS Code Insiders (Copilot 포함)는 이 기능을 성공적으로 시연하여 클라이언트 지원의 중요성을 보여줍니다. 💻
- 사용자 경험 개선을 위해 '예/아니오' 질문에는
response_type=None을 사용하고, 선택 옵션에는 Literal 타입을 활용하여 유효한 선택지를 제공하는 패턴을 제시합니다. ✨
- Elicitation 기능은 MCP 사양의 비교적 최신 추가 사항으로, 6월 18일자 사양에서 처음 등장했습니다. 📅
- 서버는 사용자 입력 대기 시
await 키워드를 사용하여 실행을 일시 중지하며, 이는 비동기적인 상호작용 흐름을 가능하게 합니다. ⏳
데브허브 | DEVHUB | MCP Elicitation Tutorial — How to Build Interactive Tools with FastMCP (Python)