MCP의 리소스는 정보를 가져오기 위해 도구 호출을 요구하는 대신, 프롬프트에 직접 포함될 수 있는 데이터를 서버가 노출할 수 있도록 합니다. 이는 Claude와 같은 AI 모델에 컨텍스트를 제공하는 더 효율적인 방법을 만들어냅니다.

리소스 흐름 이해하기
사용자가 애플리케이션에서 "What's in the @..."와 같은 내용을 입력하면, 시스템은 자동완성을 위해 사용 가능한 리소스 목록을 가져와야 합니다. MCP 클라이언트는 서버에 ReadResourceRequest를 전송하고, 서버는 참조할 수 있는 문서 이름 목록으로 응답합니다.
리소스 읽기 구현하기
핵심 기능은 MCP 클라이언트의 read_resource 메서드에서 이루어집니다. 이 메서드는 서버에서 가져올 리소스를 식별하는 URI 매개변수를 받습니다.
먼저, JSON 파싱과 URL 검증을 처리하기 위해 필요한 import를 추가하세요:
주요 구현은 MCP 서버에 요청을 보내고 응답을 처리합니다:
다양한 콘텐츠 유형 처리하기
리소스는 다양한 유형의 콘텐츠를 반환할 수 있으므로, 응답을 적절히 처리하기 위해 MIME 유형을 확인해야 합니다:
이 접근 방식은 JSON 리소스가 올바르게 파싱되도록 하는 동시에, 일반 텍스트 리소스는 그대로 반환되도록 보장합니다.
구현 테스트하기
구현이 완료되면 CLI 애플리케이션을 실행하여 리소스 기능을 테스트할 수 있습니다. "@"를 입력한 후 리소스 이름을 입력하면 시스템은 다음과 같이 동작합니다:
- 자동완성 목록에 사용 가능한 리소스를 표시합니다
- 화살표 키와 스페이스를 사용하여 리소스를 선택할 수 있습니다
- Claude에 전송되는 프롬프트에 리소스 콘텐츠를 직접 포함합니다
이는 Claude가 추가적인 도구 호출 없이 즉시 문서 콘텐츠를 받게 되어, 상호작용을 훨씬 더 효율적으로 만든다는 것을 의미합니다.
주요 이점
리소스는 정적 정보에 접근하는 데 있어 도구보다 여러 가지 장점을 제공합니다:
- 콘텐츠가 프롬프트에 직접 포함되어 지연 시간을 줄입니다
- 대화 중 추가적인 API 호출이 필요하지 않습니다
- 자동완성 기능으로 더 나은 사용자 경험을 제공합니다
- 정적 데이터와 동적 작업 간의 더 명확한 분리를 제공합니다
리소스는 문서, 보고서 또는 참고 자료와 같이 AI 모델이 쉽게 접근할 수 있도록 만들고자 하는 비교적 정적인 정보에 가장 적합합니다.