Cargando

Accediendo a recursos

Lección 569 min

Los recursos en MCP permiten que tu servidor exponga datos que pueden incluirse directamente en los prompts, en lugar de requerir llamadas a herramientas para acceder a la información. Esto crea una forma más eficiente de proporcionar contexto a modelos de IA como Claude.

Entendiendo el flujo de recursos

Cuando un usuario quiere acceder al contenido de un recurso, el flujo funciona así:

  • El usuario solicita información sobre un recurso (como "@report.pdf")
  • Tu código necesita una lista de nombres de documentos para el autocompletado
  • El cliente MCP envía una ReadResourceRequest al servidor MCP
  • El servidor responde con un ReadResourceResult que contiene los datos del recurso
  • Tu código puede entonces colocar estos datos directamente en los prompts

Implementando la lectura de recursos

Para leer recursos desde tu cliente MCP, necesitarás implementar una función read_resource. Primero, agrega las importaciones necesarias:

python
import json
from pydantic import AnyUrl

La función principal realiza una solicitud a tu sesión MCP y procesa la respuesta:

python
async def read_resource(self, uri: str) -> Any:
    result = await self.session().read_resource(AnyUrl(uri))
    resource = result.contents[0]

Manejando diferentes tipos de recursos

Los recursos pueden devolver diferentes tipos de contenido, por lo que debes verificar el tipo MIME y analizarlo en consecuencia:

python
if isinstance(resource, types.TextResourceContents):
    if resource.mimeType == "application/json":
        return json.loads(resource.text)
    
    return resource.text

Este enfoque maneja dos escenarios principales:

  • Recursos JSON que necesitan ser analizados
  • Recursos de texto plano que pueden devolverse tal cual

Probando el acceso a recursos

Puedes verificar que tu implementación de recursos funciona probándola en tu aplicación. Cuando escribes "@" seguido del nombre de un recurso, deberías ver una lista de autocompletado de los recursos disponibles. Al seleccionar uno, se incluirá su contenido directamente en tu prompt.

La ventaja clave de este enfoque es la eficiencia: Claude recibe el contenido del documento de inmediato sin necesidad de realizar llamadas a herramientas adicionales para acceder a la información.

Uso de recursos frente a herramientas

Los recursos son particularmente útiles cuando:

  • Tienes contenido estático o semiestático que se referencia con frecuencia
  • Quieres reducir el número de llamadas a la API
  • El contenido debe estar disponible de inmediato en el contexto del prompt

Esto difiere de las herramientas, que son mejores para operaciones dinámicas o cuando necesitas que la IA decida si acceder a cierta información según el contexto de la conversación.