MCP 서버를 구축했으니, 이제 세 가지 핵심 프리미티브를 검토하고 각각을 언제 사용해야 하는지 이해해 보겠습니다. 핵심은 각 프리미티브를 누가 제어하는지, 그리고 애플리케이션에서 어떤 목적을 수행하는지 이해하는 것입니다.

도구: 모델이 제어
도구는 전적으로 Claude가 제어합니다. AI 모델이 이러한 함수를 언제 호출할지 결정하며, 그 결과는 Claude가 작업을 수행하는 데 직접 사용됩니다.
Claude에게 추가 기능을 제공하고자 할 때 도구를 사용하세요. 예를 들어, Claude에게 JavaScript를 사용하여 3의 제곱근을 계산하도록 요청하면, Claude는 정확한 답을 제공하기 위해 자동으로 JavaScript 실행 도구를 사용하기로 결정합니다.
리소스: 앱이 제어
리소스는 애플리케이션 코드가 제어합니다. 앱이 리소스 데이터를 언제 가져올지, 그리고 어떻게 사용할지 결정하며, 일반적으로 UI 목적이나 대화에 컨텍스트를 추가하기 위해 사용됩니다.
앱에 데이터를 가져와야 할 때 리소스를 사용하세요. 일반적인 예시는 다음과 같습니다:
- UI에서 자동완성 옵션 채우기
- Claude에게 메시지를 보내기 전에 메시지에 컨텍스트 추가하기
- 사용 가능한 문서나 파일 목록 표시하기
우리 프로젝트에서는 자동완성 제안을 가져오고 프롬프트에 추가 컨텍스트를 보강하기 위해 리소스를 사용했습니다.
프롬프트: 사용자가 제어
프롬프트는 사용자 작업에 의해 트리거됩니다. 사용자는 버튼 클릭, 메뉴 선택, 슬래시 명령과 같은 UI 상호작용을 통해 이러한 사전 정의된 워크플로를 언제 실행할지 결정합니다.
사용자가 필요에 따라 트리거할 수 있어야 하는 워크플로에는 프롬프트를 사용하세요. 다음과 같은 경우에 적합합니다:
- 사전 정의된 대화 시작 문구
- 일반적인 작업 템플릿
- 특정 사용 사례에 최적화된 전문 워크플로
실제 사례
Claude의 공식 인터페이스에서 세 가지 프리미티브가 모두 작동하는 모습을 볼 수 있습니다. 채팅 입력창 아래에 있는 대화 시작 버튼은 프롬프트의 예시로, 사전 정의된 상호작용을 시작하는 사용자 제어 워크플로입니다.

"Add from Google Drive" 옵션은 리소스가 작동하는 모습을 보여줍니다. 이 버튼을 클릭하면 애플리케이션이 문서 목록을 가져와 UI에 표시합니다. 이는 인터페이스를 지원하는 앱 제어 동작입니다.
Claude에게 계산을 수행하거나 코드를 실행하도록 요청할 때, 여러분은 도구가 작동하는 모습을 보고 있는 것입니다. Claude는 정확한 결과를 제공하기 위해 JavaScript 실행과 같은 사용 가능한 도구를 자동으로 사용하기로 결정합니다.

올바른 프리미티브 선택하기
다음은 간단한 결정 가이드입니다:
- Claude의 기능을 확장해야 하나요? 도구를 사용하세요
- 앱의 UI나 컨텍스트를 위한 데이터가 필요하나요? 리소스를 사용하세요
- 사용자에게 사전 정의된 워크플로를 제공하고 싶나요? 프롬프트를 사용하세요
이는 특정 필요에 맞는 올바른 접근 방식을 선택하는 데 도움이 되는 상위 수준의 가이드라인임을 기억하세요. 각 프리미티브는 애플리케이션 생태계의 서로 다른 부분을 담당합니다 - 도구는 모델을 위해, 리소스는 앱을 위해, 프롬프트는 사용자를 위해 작동합니다.