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에 직접 전달할 준비가 된 대화를 구성하는 메시지를 반환합니다.

프롬프트 인자의 작동 방식

MCP 서버에서 프롬프트 함수를 정의하면, 모든 매개변수가 보간 변수로 사용 가능해집니다. get_prompt에 전달하는 인자 딕셔너리는 이러한 매개변수에 대한 값을 제공합니다. 그러면 서버는 적절한 위치에 값이 대체된 완전한 프롬프트를 생성합니다.

구현 테스트하기

구현이 완료되면 CLI를 통해 프롬프트를 테스트할 수 있습니다. 슬래시를 입력하면 사용 가능한 프롬프트가 명령어로 표시됩니다. "format"과 같은 프롬프트를 선택하면 필요한 인자(예: 포맷할 문서 선택)에 대한 값을 선택하라는 메시지가 표시됩니다. 그러면 시스템은 다음을 수행합니다:

  1. 인자가 보간된 프롬프트를 가져옵니다
  2. 완전한 프롬프트를 Claude에 전송합니다
  3. Claude가 요청을 수행하기 위해 필요한 도구 호출을 실행합니다
  4. 포맷된 결과를 반환합니다

실제 프롬프트 활용

프롬프트는 클라이언트가 호출할 수 있는 재사용 가능한 사용자 및 어시스턴트 메시지 집합을 정의합니다. 이는 고품질이어야 하고, 충분히 테스트되어야 하며, MCP 서버의 목적과 관련이 있어야 합니다. 이를 서버의 도구와 리소스를 결합하여 특정 작업을 수행하는 사전 구축된 워크플로로 생각하세요.

프롬프트 시스템은 프롬프트 로직(서버에서 정의됨)과 실행(클라이언트와 Claude가 처리함) 사이에 명확한 분리를 만듭니다. 이를 통해 사용자가 간단한 명령으로 트리거할 수 있는 정교한 다단계 워크플로를 쉽게 만들 수 있습니다.