Skip to content

注册资源模板

MCP 提供了两种发现资源的方式:

  1. 直接资源
  2. 资源模板

直接资源#

服务器直接暴露一组固定资源,通过 JSON-RPC 方法 resources/list 提供给客户端。

每个资源包含字段如下:

{
uri: string; // 资源的唯一 URI(例如 file:///xxx)
name: string; // 人类可读的名称
description?: string;// 可选描述,解释用途或内容
mimeType?: string; // MIME 类型,如 text/plain, image/png
size?: number; // 文件大小(单位:字节)
}

例如:

{
"uri": "file:///logs/build.log",
"name": "构建日志",
"description": "包含最近一次构建的所有输出信息",
"mimeType": "text/plain",
"size": 18423
}

资源模板#

服务器还可以提供一组 URI 模板,供客户端根据参数动态构造 URI(例如选择城市、文件名等)。

这些模板符合 RFC 6570 的格式,例如:

TIP

RFC 6570 是一份由 IETF 制定的标准文档,它定义了一种 URI 模板语法,用于通过填入变量值来构建动态 URI。

每个模板的结构如下:

{
uriTemplate: string; // 可变 URI 模板(如 file:///{path})
name: string; // 模板的说明名称
description?: string;// 模板描述
mimeType?: string; // 匹配资源的 MIME 类型(适用于所有匹配项)
}

例如:

{
"uriTemplate": "file:///home/user/{filename}",
"name": "用户目录下的文件",
"description": "允许读取任意用户目录下的文件名",
"mimeType": "text/plain"
}

课堂练习

为 MCP Server 注册资源模板。

setRequestHandler

功能Schema 名结构
读取资源ReadResourceRequestSchema{ method: "resources/read", params: { uri } }
列出资源ListResourcesRequestSchema{ method: "resources/list", params: {} }
列出资源模板ListResourceTemplatesRequestSchema{ method: "resources/templates", params: {} }

-EOF-