Exponha dados e conteúdo de seus servidores para LLMsOs Resources são um primitivo central no Model Context Protocol (MCP) que permite que os servidores exponham dados e conteúdo que podem ser lidos pelos clientes e usados como contexto para interações com LLMs.Os Resources são projetados para serem controlados pelo aplicativo, o que significa que o aplicativo cliente pode decidir como e quando devem ser usados. Diferentes clientes MCP podem lidar com os Resources de maneiras diferentes. Por exemplo:O Claude Desktop atualmente exige que os usuários selecionem explicitamente os Resources antes que possam ser usados
Outros clientes podem selecionar automaticamente os Resources com base em heurísticas
Algumas implementações podem até permitir que o próprio modelo de IA determine quais Resources usar
Os autores do servidor devem estar preparados para lidar com qualquer um desses padrões de interação ao implementar o suporte a Resources. Para expor dados aos modelos automaticamente, os autores do servidor devem usar um primitivo controlado pelo modelo, como Tools.Os Resources representam qualquer tipo de dado que um servidor MCP deseja disponibilizar aos clientes. Isso pode incluir:Registros de banco de dados
Dados do sistema em tempo real
Capturas de tela e imagens
Cada Resource é identificado por um URI exclusivo e pode conter dados de texto ou binários.Os Resources são identificados usando URIs que seguem este formato:[protocol]://[host]/[path]
file:///home/user/documents/report.pdf
postgres://database/customers/schema
screen://localhost/display1
O protocolo e a estrutura do caminho são definidos pela implementação do servidor MCP. Os servidores podem definir seus próprios esquemas de URI personalizados.Os Resources podem conter dois tipos de conteúdo:Os Resources de texto contêm dados de texto codificados em UTF-8. Eles são adequados para:Os Resources binários contêm dados binários brutos codificados em base64. Eles são adequados para:Outros formatos não textuais
Os clientes podem descobrir os Resources disponíveis por meio de dois métodos principais:Os servidores expõem uma lista de Resources concretos por meio do endpoint resources/list
. Cada Resource inclui:Para Resources dinâmicos, os servidores podem expor templates de URI que os clientes podem usar para construir URIs de Resource válidos:Para ler um Resource, os clientes fazem uma solicitação resources/read
com o URI do Resource.O servidor responde com uma lista de conteúdos de Resource:Os servidores podem retornar vários Resources em resposta a uma solicitação resources/read
. Isso pode ser usado, por exemplo, para retornar uma lista de arquivos dentro de um diretório quando o diretório é lido.O MCP oferece suporte a atualizações em tempo real para Resources por meio de dois mecanismos:Os servidores podem notificar os clientes quando sua lista de Resources disponíveis for alterada por meio da notificação notifications/resources/list_changed
.Os clientes podem se inscrever para receber atualizações de Resources específicos:1.
O cliente envia resources/subscribe
com o URI do Resource
2.
O servidor envia notifications/resources/updated
quando o Resource é alterado
3.
O cliente pode buscar o conteúdo mais recente com resources/read
4.
O cliente pode cancelar a inscrição com resources/unsubscribe
Exemplo de implementação#
Aqui está um exemplo simples de implementação de suporte a Resources em um servidor MCP:Ao implementar o suporte a Resources:1.
Use nomes e URIs de Resource claros e descritivos
2.
Inclua descrições úteis para orientar a compreensão do LLM
3.
Defina os tipos MIME apropriados quando conhecidos
4.
Implemente templates de Resource para conteúdo dinâmico
5.
Use assinaturas para Resources que mudam com frequência
6.
Lide com erros normalmente com mensagens de erro claras
7.
Considere a paginação para grandes listas de Resources
8.
Armazene em cache o conteúdo do Resource quando apropriado
9.
Valide os URIs antes de processar
10.
Documente seus esquemas de URI personalizados
Valide todos os URIs de Resource
Implemente controles de acesso apropriados
Higienize os caminhos de arquivo para evitar a transversalidade de diretório
Seja cauteloso com o manuseio de dados binários
Considere a limitação de taxa para leituras de Resource
Audite o acesso ao Resource
Criptografe dados confidenciais em trânsito
Implemente tempos limite para leituras de longa duração
Lide com a limpeza de Resources de forma adequada
Modified at 2025-03-12 10:10:43