列表资源与模板资源
同时提供固定条目和即时生成的模式。
列表资源与模板资源 是 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 反馈 — 无需本地设置。
此课程中的所有课时
- 带参数的资源 URI
- 在读取时构建内容
- 列表资源与模板资源
- 通知客户端更新