本文是: 以通俗的语言说明 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 类型用于描述文件的类型和格式,帮助应用程序正确地处理文件内容。
作用
- 帮助浏览器正确显示文件
:当浏览器从服务器接收一个文件时,MIME 类型告诉浏览器如何处理这个文件。例如,
text/html表示这是一个 HTML 文件,浏览器会将其解析为网页;image/jpeg表示这是一个 JPEG 图像文件,浏览器会将其显示为图片。 - 帮助服务器正确处理请求
:服务器可以根据客户端请求的 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延续了协议应有的“可扩展性”和“兼容性”设计,下一篇,我们具体例子看看,这些设计的用武之地吧
3万+

被折叠的 条评论
为什么被折叠?



