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:
import json
from pydantic import AnyUrlLa implementación principal realiza una solicitud al servidor MCP y procesa la respuesta:
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:
if isinstance(resource, types.TextResourceContents):
if resource.mimeType == "application/json":
return json.loads(resource.text)
return resource.textEste 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.