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.

Entendiendo las solicitudes de recursos

Cuando has definido recursos en tu servidor MCP, tu cliente necesita una forma de solicitarlos y usarlos. El cliente actúa como un puente entre tu aplicación y el servidor MCP, manejando la comunicación y el análisis de datos automáticamente.

El flujo es sencillo: cuando un usuario quiere referenciar un documento (como escribir "@report.pdf"), tu aplicación usa el cliente MCP para obtener ese recurso del servidor e incluir su contenido directamente en el prompt enviado a Claude.

Implementando la lectura de recursos

La funcionalidad principal requiere una función read_resource en tu cliente MCP. Esta función toma un parámetro URI que identifica qué recurso obtener:

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

La respuesta del servidor MCP contiene una lista contents. Normalmente solo necesitas el primer elemento, que contiene los datos reales del recurso junto con metadatos como el tipo MIME.

Manejando diferentes tipos de contenido

Los recursos pueden devolver diferentes tipos de contenido, por lo que tu cliente necesita analizarlos adecuadamente. El tipo MIME te indica cómo manejar los datos:

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 en objetos Python, mientras que los recursos de texto plano se devuelven como cadenas de texto. El tipo MIME actúa como tu indicio para determinar la estrategia de análisis correcta.

Importaciones requeridas

Para que esto funcione correctamente, necesitarás estas importaciones en tu cliente MCP:

python
import json
from pydantic import AnyUrl

El módulo json maneja el análisis de respuestas JSON, mientras que AnyUrl garantiza el manejo adecuado de tipos para el parámetro URI.

Probando el acceso a recursos

Una vez implementado, puedes probar la funcionalidad a través de tu aplicación CLI. Cuando escribes algo como "¿Qué hay en el documento @report.pdf?", el sistema debería:

  • Mostrar los recursos disponibles en una lista de autocompletado
  • Permitirte seleccionar un recurso
  • Obtener el contenido del recurso automáticamente
  • Incluir ese contenido en el prompt a Claude

La ventaja clave es que Claude recibe el contenido del documento directamente en el prompt, eliminando la necesidad de llamadas a herramientas para acceder a la información. Esto hace que las interacciones sean más rápidas y eficientes.

Integración con tu aplicación

Recuerda que el código del cliente MCP que escribes es utilizado por otras partes de tu aplicación. La función read_resource se convierte en un bloque de construcción que otros componentes pueden llamar para obtener contenidos de documentos, listar recursos disponibles o integrar datos de recursos en los prompts.

Esta separación de responsabilidades mantiene tu código limpio: el cliente MCP maneja la comunicación con el servidor, mientras que la lógica de tu aplicación se enfoca en cómo usar esos datos de manera efectiva.