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

El diagrama anterior muestra cómo funcionan los recursos: cuando un usuario escribe algo como "What's in the @..." nuestro código reconoce esto como una solicitud de recurso, envía una ReadResourceRequest al servidor MCP, y recibe de vuelta un ReadResourceResult con el contenido real.
Implementación de la lectura de recursos
Para habilitar el acceso a recursos en tu cliente MCP, necesitas implementar una función read_resource. Primero, agrega las importaciones necesarias:
import json
from pydantic import AnyUrlLa función principal realiza una solicitud al servidor MCP y procesa la respuesta según su tipo MIME:
async def read_resource(self, uri: str) -> Any:
result = await self.session().read_resource(AnyUrl(uri))
resource = result.contents[0]
if isinstance(resource, types.TextResourceContents):
if resource.mimeType == "application/json":
return json.loads(resource.text)
return resource.textComprendiendo la estructura de la respuesta
Cuando solicitas un recurso, el servidor devuelve un resultado con una lista contents. Accedemos al primer elemento ya que normalmente solo necesitamos un recurso a la vez. La respuesta incluye:
- El contenido real (texto o datos)
- Un tipo MIME que nos indica cómo analizar el contenido
- Otros metadatos sobre el recurso
Manejo del tipo de contenido
La función verifica el tipo MIME para determinar cómo procesar el contenido:
- Si es
application/json, analiza el texto como JSON y devuelve el objeto analizado - De lo contrario, devuelve el contenido de texto sin procesar
Este enfoque maneja tanto datos estructurados (como JSON) como documentos de texto plano sin problemas.
Prueba del acceso a recursos
Una vez implementado, puedes probar la funcionalidad de recursos a través de 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 y la barra espaciadora
- Incluirá el contenido del recurso directamente en tu prompt
- Enviará todo al modelo de IA sin requerir llamadas adicionales a herramientas
Esto crea una experiencia de usuario mucho más fluida en comparación con hacer que el modelo de IA realice llamadas a herramientas separadas para acceder al contenido de los documentos. El contenido del recurso se convierte en parte del contexto inicial, lo que permite respuestas inmediatas sobre los datos.