MCP 核心概念 -- Resources(上),官方原文分析

本文是: 以通俗的语言说明 resources 的作用和用法。

Expose data and content from your servers to LLMs

开头就简要的说明,resources 是用来暴露数据和内容的,是一个类似 GET 请求获取的资源。


概览

资源被设计为由应用程序控制 ,这意味着客户端应用程序可以决定如何使用它们以及何时使用它们。不同的 MCP 客户端可能以不同的方式处理资源。例如:

  • Claude Desktop 目前要求用户明确选择资源才能使用

  • 其他客户端可能会根据启发式方法自动选择资源

  • 一些实现甚至可能允许人工智能模型本身决定使用哪些资源


整理出来官方推荐的使用流程大概这个样子:

值得注意的是,官方强调,这个资源是“应用程序可控制的”,什么意思呢? 就是说,应该是你的 Agent 程序,或者用户的什么输入 “主动” 触发了这一过程。

下一个文章会结合例子具体说明,本文我们先对 resources 全貌有个了解。

支持的数据类型,包括:

  • File contents 文件内容

  • Database records 数据库记录

  • API responses API 响应

  • Live system data 实时系统数据

  • Screenshots and images 截图和图片

  • Log files 日志文件

  • And more 更多内容

 

URI 

协议和路径结构由 MCP 服务器实现定义。服务器可以定义自己的自定义 URI 方案。

此部分主要介绍各种资源的 URI ,用来定位具体资源, URI 本来就是 Uniform Resource Identifier,完成契合了。

资源类型

主要介绍了两种常见的资源类型,值得注意的是使用了 MIME 类型定义。这里为不熟悉的朋友简单介绍下:

MIME 类型(Multipurpose Internet Mail Extensions Type)是一种标准,用来表示文档、文件或字节流的性质和格式。简单来说,MIME 类型用于描述文件的类型和格式,帮助应用程序正确地处理文件内容。

作用

  1. 帮助浏览器正确显示文件

    :当浏览器从服务器接收一个文件时,MIME 类型告诉浏览器如何处理这个文件。例如,text/html 表示这是一个 HTML 文件,浏览器会将其解析为网页;image/jpeg 表示这是一个 JPEG 图像文件,浏览器会将其显示为图片。

  2. 帮助服务器正确处理请求

    :服务器可以根据客户端请求的 MIME 类型,返回合适的内容。例如,如果客户端请求 application/json,服务器会返回 JSON 格式的数据。

常见的 MIME 类型

  • 文本文件
    • text/plain

      :纯文本文件

    • text/html

      :HTML 文件

    • text/css

      :CSS 文件

    • text/csv

      :CSV 文件

  • 图像文件
    • image/jpeg

      :JPEG 图像

    • image/png

      :PNG 图像

    • image/gif

      :GIF 图像

  • 音频文件
    • audio/mpeg

      :MP3 音频

    • audio/wav

      :WAV 音频

  • 视频文件
    • video/mp4

      :MP4 视频

    • video/webm

      :WebM 视频

  • 二进制文件
    • application/pdf

      :PDF 文件

    • application/zip

      :ZIP 压缩文件

    • application/json

      :JSON 文件

    • application/octet-stream

      :通用二进制文件

在 Model Context Protocol 中的作用

在 Model Context Protocol (MCP) 中,MIME 类型用于帮助客户端正确理解和处理服务器返回的资源内容。例如:

  • 如果资源是一个文本文件,MIME 类型可能是 text/plain 或 text/html

  • 如果资源是一个图像文件,MIME 类型可能是 image/jpeg 或 image/png

  • 如果资源是一个 PDF 文件,MIME 类型是 application/pdf

通过设置正确的 MIME 类型,客户端可以更好地解析和处理这些资源,从而提高交互的准确性和效率。

资源发现 & 读取 -- List/Get 接口

  • 通过 resources/list 端点公开具体资源的列表。

  • 对于动态资源,服务器可以公开 URI 模板 ,客户端可以使用它来构建有效的资源 URI

  • 要读取资源,客户端需要使用资源 URI 发出 resources/read 请求。

常规的 List 和 Get 方法,值得一提的是这里提供了按照资源模版持续获取资源的方法,增加了灵活性。

下一篇,会举例说说。

资源订阅 & 及更新

这一part主要介绍资源的更新,值得注意的是,更新时,服务器(也就是 MCP server)会主动发消息通知客户端,但是仅仅通知“已订阅”的客户端。控制粒度不可谓不细致呀。

流程梳理如下:

整体来看,resources延续了协议应有的“可扩展性”和“兼容性”设计,下一篇,我们具体例子看看,这些设计的用武之地吧

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值