Exponer datos y contenido desde sus servidores a los LLMLos Resources son una primitiva central en el Model Context Protocol (MCP) que permite a los servidores exponer datos y contenido que pueden ser leídos por los clientes y utilizados como contexto para las interacciones con LLM.Los Resources están diseñados para ser controlados por la aplicación, lo que significa que la aplicación cliente puede decidir cómo y cuándo deben utilizarse. Diferentes clientes de MCP pueden manejar los Resources de manera diferente. Por ejemplo:Claude Desktop actualmente requiere que los usuarios seleccionen explícitamente los Resources antes de que puedan ser utilizados.
Otros clientes podrían seleccionar automáticamente los Resources basándose en heurísticas.
Algunas implementaciones podrían incluso permitir que el propio modelo de IA determine qué Resources utilizar.
Los autores del servidor deben estar preparados para manejar cualquiera de estos patrones de interacción al implementar el soporte de Resources. Para exponer datos a los modelos automáticamente, los autores del servidor deben utilizar una primitiva controlada por el modelo como Tools.Los Resources representan cualquier tipo de dato que un servidor MCP quiera poner a disposición de los clientes. Esto puede incluir:Registros de bases de datos
Datos del sistema en vivo
Capturas de pantalla e imágenes
Cada Resource se identifica mediante un URI único y puede contener datos de texto o binarios.Los Resources se identifican mediante URIs que siguen este formato:[protocol]://[host]/[path]
file:///home/user/documents/report.pdf
postgres://database/customers/schema
screen://localhost/display1
El protocolo y la estructura de la ruta son definidos por la implementación del servidor MCP. Los servidores pueden definir sus propios esquemas de URI personalizados.Los Resources pueden contener dos tipos de contenido:Los Resources de texto contienen datos de texto codificados en UTF-8. Estos son adecuados para:Archivos de configuración
Los Resources binarios contienen datos binarios sin procesar codificados en base64. Estos son adecuados para:Otros formatos no textuales
Los clientes pueden descubrir los Resources disponibles a través de dos métodos principales:Los servidores exponen una lista de Resources concretos a través del endpoint resources/list
. Cada Resource incluye:Para los Resources dinámicos, los servidores pueden exponer plantillas de URI que los clientes pueden utilizar para construir URIs de Resource válidos:Para leer un Resource, los clientes realizan una solicitud resources/read
con el URI del Resource.El servidor responde con una lista de contenidos de Resource:Los servidores pueden devolver múltiples Resources en respuesta a una solicitud resources/read
. Esto podría utilizarse, por ejemplo, para devolver una lista de archivos dentro de un directorio cuando se lee el directorio.MCP admite actualizaciones en tiempo real para los Resources a través de dos mecanismos:Los servidores pueden notificar a los clientes cuando su lista de Resources disponibles cambia a través de la notificación notifications/resources/list_changed
.Los clientes pueden suscribirse a las actualizaciones de Resources específicos:1.
El cliente envía resources/subscribe
con el URI del Resource
2.
El servidor envía notifications/resources/updated
cuando el Resource cambia
3.
El cliente puede obtener el contenido más reciente con resources/read
4.
El cliente puede cancelar la suscripción con resources/unsubscribe
Ejemplo de implementación#
Aquí hay un ejemplo simple de implementación del soporte de Resources en un servidor MCP:Al implementar el soporte de Resources:1.
Utilice nombres y URIs de Resources claros y descriptivos.
2.
Incluya descripciones útiles para guiar la comprensión del LLM.
3.
Establezca los tipos MIME apropiados cuando se conozcan.
4.
Implemente plantillas de Resources para contenido dinámico.
5.
Utilice suscripciones para Resources que cambian con frecuencia.
6.
Maneje los errores con elegancia con mensajes de error claros.
7.
Considere la paginación para listas de Resources grandes.
8.
Almacene en caché el contenido de los Resources cuando sea apropiado.
9.
Valide los URIs antes de procesarlos.
10.
Documente sus esquemas de URI personalizados.
Valide todos los URIs de Resources.
Implemente controles de acceso apropiados.
Limpie las rutas de archivos para evitar el recorrido de directorios.
Tenga cuidado con el manejo de datos binarios.
Considere la limitación de velocidad para las lecturas de Resources.
Audite el acceso a los Resources.
Cifre los datos confidenciales en tránsito.
Implemente tiempos de espera para lecturas de larga duración.
Maneje la limpieza de Resources de manera apropiada.
Modified at 2025-03-13 02:54:45