MCP Elicitation과의 더 똑똑한 상호 작용 구축 : Clunky 도구 통화에서 원활한 사용자 경험에 이르기까지

MCP Elicitation과의 더 똑똑한 상호 작용 구축 : Clunky 도구 통화에서 원활한 사용자 경험에 이르기까지

소프트웨어를 구축 할 때는 단지 운송 기능이 아닙니다. 우리는 사용자가 놀랍고 기뻐하는 경험을 운송하며 자연스럽고 원활한 경험을 제공하는 것이 우리가하는 일의 핵심 부분임을 확인합니다.

마지막 게시물에서, 나는 우리가 턴 기반 게임 (tic-tac-toe 또는 록, 종이, 가위)을 구축하기 시작한 MCP 서버에 대해 썼습니다. 도구 통화, 리소스 및 프롬프트와 같은 핵심 기능이 있었지만 경험은 여전히 ​​향상 될 수 있습니다. 예를 들어, 플레이어는 항상 첫 번째 움직임을 가져 왔으며, 플레이어는 초기 메시지에 지정된 경우에만 난이도를 변경할 수 있으며 다른 종이 컷이 많이 있습니다.

그래서 가장 최근에 고무 오리 목요일 스트림, 나는 사용자 경험을 향상시키는 데 도움이되는 기능을 다루었습니다. 이끌어 냄. 아래의 전체 스트림을 참조하십시오

https://www.youtube.com/watch?v=t8d1hdacrkc

Elication은“필요한 모든 정보가 없다면 가서 얻으십시오.”라고 말하는 것과 같습니다. 그러나 그것은 그 이상입니다. AI (MCP 서버를 통해)가 일시 중지하고 필요한 것을 요청한 다음 작업을 계속할 수있는 직관적 인 상호 작용을 만드는 것입니다. 하드 코딩 된 상호 작용 경로를 제공하는 더 이상 기본 가정이 없습니다.

👀 알고 있어야합니다. 모든 AI 애플리케이션 호스트에서는 Elicitation이 지원되지 않습니다. Visual Studio Code의 Github Copilot은이를 지원하지만 다른 AI 앱의 MCP 문서에서 최신 상태를 확인하려고합니다. Elicitation은 2025 년 6 월 개정에 추가 된 MCP 사양의 상대적인 신규 이민자이므로 디자인이 계속 발전 할 수 있습니다.

턴 기반 게임 MCP 서버에서 ELICITATION을 구현 한 방법과 그 과정에서 발생한 과제에 대해 여러분을 안내해 드리겠습니다.

ENCITITION을 입력하십시오 : AI 상호 작용을 자연스럽게 만듭니다

라이브 스트림에 도달하기 전에 Elicitation의 기본 구현을 모았습니다.이 구현은 난이도 및 플레이어 이름과 같은 새로운 게임을 만들 때 필요한 정보를 요청했습니다. TIC-TAC-TOE의 경우 어떤 플레이어가 먼저 가는지 묻습니다. 바위, 종이, 가위를 위해, 그것은 얼마나 많은 라운드를 연주 할 것인지 물었습니다.

그러나 기존 도구를 완전히 교체하지 않고 새로운 도구로 구현 했으므로 접근 방식을 테스트하고 표준화 할 때까지 두 접근 방식 사이의 동작을 명확하게 볼 수있었습니다. 결과적으로, 우리는 몇 가지 중복 도구를 사용하여 서버에서 스프롤을보기 시작했습니다.

  • create-tic-tac-toe-game 그리고 create-tic-tac-toe-game-interactive
  • create-rock-paper-scissors-game 그리고 create-rock-paper-scissors-game-interactive
  • play-tic-tac-toe 그리고 play-rock-paper-scissors

문제? 유사한 이름과 설명이있는 Copilot 도구와 같은 AI 에이전트를 제공 할 때 어느 것을 선택 해야하는지 알 수 없습니다. 여러 경우에 Copilot은 겹치는 기능의 혼란스러운 환경을 만들었 기 때문에 잘못된 도구를 선택했습니다. 이것은 예상치 못한 학습 경험 이었지만 그 길을 따라 잡는 데 중요한 경험이었습니다.

다음으로 논리적 인 단계는 도구 통화를 통합하고 상수를 재정의하는 대신 코드베이스 전체에서 건조 (반복하지 말) 원칙을 사용하고 다른 게임 유형에 대해 거의 동일한 구현을 사용하는 것이 었습니다.

많은 리팩토링 및 통합 후 누군가가“TIC-TAC-TOE 게임을하자”를 프롬프트 할 때, 도구 통화는 미리 결정된 기본값 세트로 게임을 만드는 대신 사용자가 명시 적 선택을하는 데 더 많은 정보가 필요하다는 것을 식별합니다.

사용자가 요청한 Visual Studio Code에서 Github Copilot 채팅 스크린 샷 "Tictactoe의 게임을합시다". Colecilot은 Elicitation Experience를 트리거하여 경험을 사용자 정의하기위한 추가 선호도를 요청했습니다.

사용자는 선호도를 제공하고 서버는 게임을 기반으로 게임을 생성하여 전체 사용자 경험을 향상시킵니다.

내 코드 (우리 중 많은 사람들이 인정할 것이라고 확신하는 것처럼)가 완벽하지 않다는 것을 추가 할 가치가 있으며 스트림에서 버그가 라이브를 보았습니다. 추출 단계가 트리거되었습니다 모든 사용자가 이미 필요한 정보를 제공했는지 여부에 관계없이 도구의 호출.

라이브 스트림 이후의 재 작업의 일환으로 도구를 호출 한 후 이미 제공된 정보를 결정하기 위해 수표를 추가했습니다. 또한 도구와 Elicitation Schemas 사이의 속성 이름을 정렬하여 좀 더 명확하게 만듭니다. “Tic-Tac-Toe의 게임을하자, 먼저 갈 것입니다.”라고 말하면 게임 난이도를 확인하고 이름을 제공하도록 요청받을 것입니다.

내 추출 구현이 이제 어떻게 작동 하는가

마법은 MCP 서버 구현에서 발생합니다. MCP 서버가 create_game 도구 : It :

  1. 필요한 매개 변수를 확인합니다: 사용자가 플레이하고 싶은 게임을 알고 있습니까? 아니면 ID를 지정 했습니까?
  2. 식별 된 인수를 별도의 방법으로 전달합니다: 우리는 난이도, 플레이어 이름 또는 순서를 놓치고 있습니까?
  3. Elicitation을 시작합니다: 정보가 누락되면 도구 실행을 일시 중지하고 사용자의 누락 된 정보 만 수집합니다. 이것은 사용자 경험을 더욱 향상시키기 위해 스트림 후에 만든 추가 기능이었습니다.
  4. 스키마 중심의 프롬프트를 제시합니다: 사용자는 누락 된 각 매개 변수에 대해 형식화 된 질문을 봅니다.
  5. 응답을 수집합니다: MCP 클라이언트 (이 경우 Code)는 UI 상호 작용을 처리합니다.
  6. 원래 요청을 완료합니다: 서버가 모든 정보를 수집하면 도구는 사용자의 환경 설정으로 CreateGame 메소드를 실행합니다.

Elicitation이 시작될 때 VS 코드 인터페이스에서 볼 수있는 내용은 다음과 같습니다. 몇 가지 선호도를 제공해야합니다.

새로운 UI 모달이 나타나는 Visual Studio Code에서 GitHub Copilot 채팅의 스크린 샷으로 사용자에게 선호도를 요구합니다. 이 예는 사용자가 어려움을 어렵게 선택하는 것을 보여줍니다.

결과? “플레이어 대 AI (Medium)”대신 AI와 함께 “Chris vs AI (Hard)”를 얻습니다.

https://www.youtube.com/watch?v=pl8mtopzim0

추방을 구현하는 동안 배운 것

도전 1 : 도구 이름 지정 혼란

문제: 비슷한 이름과 설명이있는 도구는 AI를 사용할 AI를 혼동합니다.

해결책: 적절한 경우 도구를 병합하고 명확하고 별개의 이름과 설명을 사용하십시오. 나는 8 개의 도구에서 4 개로 갔다.

  • create-game (모든 게임 유형을 대상으로 처리)
  • play-game (통합 플레이 인터페이스)
  • analyze-game (게임 상태 분석)
  • wait-for-player-move (턴 관리)

도전 2 : 부분 정보 처리

문제: 사용자가 일부 정보를 선불로 제공하면 어떻게됩니까? ( “하드 모드에서 Tic-Tac-Toe를 플레이하자”)

관찰: 라이브 스트림 기간 동안, 우리는 내가 Elicitation을 구축하는 방식이 호출 될 때마다 모든 선호도를 요구하는 것을 보았습니다. 이는 이상적인 사용자 경험이 아닙니다.

해결책: 초기 요청을 구문 분석하고 누락 된 정보만을 이끌어냅니다. 이것은 라이브 스트림 이후에 고정되었으며 현재 샘플의 최신 버전에 있습니다.

이 개발 세션의 주요 교훈

1. 사용자 경험은 여전히 ​​MCP 서버를 고려한 것입니다.

필요한 모든 정보를 얼마나 자주 제공합니까? Elicitation 은이 기능을 제공하지만 도구 통화 및 전반적인 MCP 경험의 일부로 포함되는 방법을 고려해야합니다. 복잡성을 더할 수 있지만 사용자가 불량 기본값을 중심으로 작업하도록 강요하는 것보다 선호도를 요청하는 것이 좋습니다.

2. 도구 이름 지정은 생각보다 더 중요합니다

MCP 서버에서 도구를 구축하고 사용하는 경우 이름 지정 및 설명이 중요합니다. 모호한 도구 이름과 유사한 설명은 “잘못된”도구가 호출되는 예측할 수없는 행동으로 이어질 수 있습니다.

3. 반복 개발이 승리합니다

완벽한 구현을 선불 구축하려고 시도하는 대신 다음을 반복했습니다.

  • 기본 기능을 먼저 구축하십시오
  • 사용을 통해 통증 지점을 식별하십시오
  • 사용자 경험을 향상시키기 위해 추방을 추가하십시오
  • Coplot Coding Agent 및 Coplot Agent 모드를 사용하여 정리를 돕습니다.

직접 시도하십시오

MCP 서버에서 Elicitation이 어떻게 작동하는지보고 싶습니까? 아니면 자신의 MCP 서버를 구축하기 위해 영감을 구하십니까?

  1. 저장소 포크 : gh.io/rdt-blog/game-mcp
  2. 개발 환경을 설정하십시오 Github Codespace를 만들어
  3. 샘플을 실행하십시오 코드를 구축하고 MCP 서버를 시작하고 웹 앱 / API 서버를 실행함으로써.

이것을 당신과 함께 가져 가십시오

더 나은 AI 도구를 구축하는 것이 기본 모델에 관한 것이 아닙니다. 상황을 해석하고 좋은 질문을하며 사용자가 필요로하는 것을 정확하게 전달할 수있는 경험을 만드는 것입니다. Elication은 그 방향의 한 단계이며, MCP 생태계가 어떻게 더 풍부한 상호 작용을 계속 발전시키고 지원하는지 보게되어 기쁩니다.

다음 고무 오리 목요일 스트림에 참여하여 AI 도구와 개발자 경험의 교차점을 계속 탐색 할 것입니다.

가이드를 얻으십시오 첫 번째 MCP 서버를 구축하려면>

작성자가 작성했습니다

Chris Reddington

Chris는 Github의 개발자 관계 팀의 열정적 인 개발자 옹호자 및 수석 프로그램 관리자입니다. 그는 가장 작은 스타트 업, 기존 기업, 오픈 소스 커뮤니티 및 개별 개발자의 Execs, Engineering Leads 및 팀과 협력하여 Github를 돕고 소프트웨어 엔지니어링 잠재력을 잠금 해제합니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다