Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Sign in

MCP 클라이언트를 구축하는 마지막 단계는 프롬프트 기능을 구현하는 것입니다. 이를 통해 서버에서 사용 가능한 모든 프롬프트를 나열하고, 변수가 보간된 특정 프롬프트를 가져올 수 있습니다.

List Prompts 구현하기

list_prompts 메서드는 간단합니다. 세션의 list prompts 메서드를 호출하고 프롬프트를 반환합니다:

python
async def list_prompts(self) -> list[types.Prompt]:
    result = await self.session().list_prompts()
    return result.prompts

개별 프롬프트 가져오기

get_prompt 메서드는 인자 보간을 처리하기 때문에 더 흥미롭습니다. 특정 프롬프트를 요청할 때, 프롬프트 함수에 주입되는 인자를 전달합니다. 예를 들어, 서버에 doc_id 매개변수를 기대하는 "format" 프롬프트가 있다면, 해당 값이 전달되어 실제 프롬프트 텍스트에 보간됩니다.

python
async def get_prompt(self, prompt_name, args: dict[str, str]):
    result = await self.session().get_prompt(prompt_name, args)
    return result.messages

이 메서드는 Claude에 직접 입력할 준비가 된 대화를 구성하는 메시지를 반환합니다.

실제로 프롬프트 테스트하기

클라이언트를 실행하고 슬래시를 입력하면, 사용 가능한 프롬프트가 명령어로 표시됩니다. "format"과 같은 프롬프트를 선택하면 사용 가능한 문서 중에서 선택하라는 메시지가 표시됩니다. 그러면 시스템은 다음을 수행합니다:

  • 문서 ID가 보간된 프롬프트를 가져옵니다
  • 이를 사용자 메시지로 Claude에 직접 전달합니다
  • Claude는 지침과 문서 ID를 모두 받습니다
  • Claude는 사용 가능한 도구를 사용하여 문서 내용을 가져옵니다
  • Claude는 재구성된 결과로 응답합니다

프롬프트 작동 방식

프롬프트는 클라이언트에서 사용할 수 있는 사용자 및 어시스턴트 메시지 집합을 정의합니다. 이러한 프롬프트는 품질이 높고, 충분히 테스트되었으며, MCP 서버의 전체적인 목적과 관련이 있어야 합니다.

워크플로우는 다음과 같습니다:

  1. MCP 서버의 목적과 관련된 프롬프트를 작성하고 평가합니다
  2. @mcp.prompt 데코레이터를 사용하여 MCP 서버 내부에 프롬프트를 정의합니다
  3. 클라이언트는 언제든지 해당 프롬프트를 요청할 수 있습니다
  4. 프롬프트를 요청할 때, 프롬프트 함수에 키워드 인자로 전달되는 인자를 제공합니다
  5. 함수는 해당 인자를 사용하여 프롬프트 내용을 맞춤화합니다

이 시스템은 재사용 가능하고 매개변수화된 프롬프트를 생성하여 다양한 클라이언트와 사용 사례에서 공유할 수 있게 하며, MCP 서버를 더욱 다재다능하고 강력하게 만듭니다.