MCP Academy · 课时

列表资源与模板资源

同时提供固定条目和即时生成的模式。

第 3 / 4 课13 个步骤

列表资源与模板资源 是 CoddyKit 上的免费 MCP Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 MCP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 MCP Academy 课程共包含 4 节课。

提供数据的两种方式

MCP 通过两种方式公开数据:使用固定 URI 的已列出资源,或使用占位符的模板化资源。了解该选择有助于保持服务器设计清晰。

已列出:可枚举且数量少

已列出资源具有具体 URI,并会出现在 resources/list 中。当只有少量已知项目可供客户端浏览时,请使用它。

@mcp.resource("config://app")
def app_config() -> str:
    return read_config()

模板化:通过模式表示无限可能

模板化资源使用花括号占位符,因此可以涵盖无数 URI。由于集合没有明确终点,无法完整列出。

@mcp.resource("file://{path}")
def read_file(path: str) -> str:
    return open(path).read()

列出方式的区别

客户端调用资源/列表来发现固定资源。模板则显示在单独的模板列表中,用于描述资源的形状,而不是具体条目。

浏览与寻址

您可以把它理解为浏览与寻址的区别。列出的资源就像供您浏览的菜单项;模板则像是输入一个您已经知道的地址。

集合较小时

如果您的数据集合较小且稳定,请优先使用列出的资源。模型可以看到每个选项,因此很容易做出正确选择。

集合较大时

如果条目数量达到数千个,模板会更合适。全部列出会淹没客户端,因此您只需公布模式,让客户端填入具体值。

weather://{city}/today

自由组合两者

实际服务器通常会同时使用两者:为常用数据提供一些列出的条目,再用模板覆盖大量不常用的内容。它们可以愉快地并存。

帮助发现资源

模板无法枚举所有内容,但您可以添加一个小型的列出索引资源,指向常用的 URI,为模型提供有用的起点。

@mcp.resource("cities://index")
def cities() -> str:
    return "london, paris, tokyo"

读取方式始终相同

无论 URI 是如何找到的,客户端读取它的方式都相同:调用一次资源/读取。列出资源还是使用模板只会改变发现方式,不会改变获取内容的方式。

为什么这很重要

选择列出资源还是使用模板,会影响模型查找数据的难易程度。选择列出资源以便浏览,选择模板以便扩展,您的服务器就能保持易用。🎯

快速检查

对于数千个条目,您应该使用哪种资源类型?

回顾

您了解到,列出的资源适合较小且可浏览的集合,而模板适合扩展到超大型集合,两者还可以很好地结合使用。接下来:向客户端通知更新。🚀

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「列表资源与模板资源」课时是免费的吗?

是的 — 「列表资源与模板资源」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 MCP Academy 课程的其余内容,请升级到 CoddyKit PRO。 MCP Academy 课程共包含 4 节课。

「列表资源与模板资源」这节课中我会学到什么?

同时提供固定条目和即时生成的模式。 你通过在浏览器中直接运行的动手代码来练习 MCP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 MCP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 MCP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「列表资源与模板资源」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 MCP Academy 课中编写并运行代码吗?

能。每节 MCP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 带参数的资源 URI
  2. 在读取时构建内容
  3. 列表资源与模板资源
  4. 通知客户端更新
← 返回 MCP Academy