Cargando

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.

Comprendiendo el flujo de recursos

Cuando un usuario escribe algo como "¿Qué hay en el @..." en tu aplicación, el sistema necesita obtener una lista de recursos disponibles para el autocompletado. El cliente MCP envía una ReadResourceRequest al servidor, que responde con una lista de nombres de documentos que pueden referenciarse.

Implementando la lectura de recursos

La funcionalidad principal ocurre en el método read_resource de tu cliente MCP. Este método toma un parámetro URI que identifica qué recurso obtener del servidor.

Primero, agrega las importaciones necesarias para manejar el análisis de JSON y la validación de URL:

python
import json
from pydantic import AnyUrl

La implementación principal realiza una solicitud al servidor 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 contenido

Los recursos pueden devolver diferentes tipos de contenido, por lo que debes verificar el tipo MIME para manejar la respuesta de manera adecuada:

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

Este enfoque garantiza que los recursos JSON se analicen correctamente, mientras que los recursos de texto plano se devuelven tal cual.

Probando la implementación

Una vez implementado, puedes probar la funcionalidad de recursos ejecutando tu aplicación CLI. Cuando escribes "@" seguido de un nombre de recurso, el sistema:

  • Mostrará los recursos disponibles en una lista de autocompletado
  • Te permitirá seleccionar un recurso usando las flechas del teclado y la barra espaciadora
  • Incluirá el contenido del recurso directamente en el prompt enviado a Claude

Esto significa que Claude recibe el contenido del documento de inmediato sin necesidad de realizar llamadas adicionales a herramientas, lo que hace que la interacción sea mucho más eficiente.

Beneficios clave

Los recursos ofrecen varias ventajas sobre las herramientas para acceder a información estática:

  • El contenido se incluye directamente en los prompts, reduciendo la latencia
  • No se necesitan llamadas adicionales a la API durante la conversación
  • Mejor experiencia de usuario con funcionalidad de autocompletado
  • Separación más clara entre datos estáticos y operaciones dinámicas

Los recursos funcionan mejor para información relativamente estática que deseas hacer fácilmente accesible a los modelos de IA, como documentación, informes o materiales de referencia.