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

사용자가 리소스 콘텐츠에 접근하려고 할 때, 흐름은 다음과 같이 작동합니다:
- 사용자가 리소스에 대한 정보를 요청합니다(예: "@report.pdf")
- 코드는 자동완성을 위한 문서 이름 목록이 필요합니다
- MCP 클라이언트가 MCP 서버로 ReadResourceRequest를 전송합니다
- 서버가 리소스 데이터를 포함하는 ReadResourceResult로 응답합니다
- 이제 코드는 이 데이터를 프롬프트에 직접 넣을 수 있습니다
리소스 읽기 구현하기
MCP 클라이언트에서 리소스를 읽으려면 read_resource 함수를 구현해야 합니다. 먼저 필요한 임포트를 추가하세요:
python
핵심 함수는 MCP 세션에 요청을 보내고 응답을 처리합니다:
python
다양한 리소스 유형 처리하기
리소스는 다양한 유형의 콘텐츠를 반환할 수 있으므로, MIME 유형을 확인하고 그에 맞게 파싱해야 합니다:
python
이 접근 방식은 두 가지 주요 시나리오를 처리합니다:
- 파싱이 필요한 JSON 리소스
- 그대로 반환할 수 있는 일반 텍스트 리소스
리소스 접근 테스트하기

애플리케이션에서 테스트함으로써 리소스 구현이 작동하는지 확인할 수 있습니다. "@"를 입력한 다음 리소스 이름을 입력하면 사용 가능한 리소스의 자동완성 목록이 표시되어야 합니다. 하나를 선택하면 해당 콘텐츠가 프롬프트에 직접 포함됩니다.
이 접근 방식의 핵심 장점은 효율성입니다 - Claude는 정보에 접근하기 위해 추가 도구 호출을 할 필요 없이 즉시 문서 콘텐츠를 받습니다.
리소스 대 도구 사용
리소스는 다음과 같은 경우에 특히 유용합니다:
- 자주 참조되는 정적 또는 반정적 콘텐츠가 있는 경우
- API 호출 수를 줄이고자 하는 경우
- 콘텐츠가 프롬프트 컨텍스트에서 즉시 사용 가능해야 하는 경우
이는 동적 작업에 더 적합하거나, 대화 컨텍스트에 따라 AI가 특정 정보에 접근할지 여부를 결정해야 할 때 더 적합한 도구와는 다릅니다.