MCP 资源是什么?可读取上下文与可执行工具的区别
用项目说明文件解释 MCP 资源,说明 URI、类型与动态资源模板,区分列出、读取和自动提供给模型,并提醒资料内容不等于操作授权。
先理解这个概念
MCP资源是服务端通过协议提供的上下文数据,例如文件内容或数据库记录,通常使用URI标识。资源用于读取资料,与执行某个动作的工具侧重点不同。资源被列出不代表正文已经读取,也不代表宿主必定把全部内容交给模型;实际读取权限、内容类型与上下文使用由相应实现决定。
资源标识用于定位数据而非直接执行动作
例如服务可以提供一份项目说明作为资源,客户端按URI读取内容,再由宿主决定是否用于回答。URI可能是文件形式或服务自定义形式,不应默认所有资源都能在普通浏览器直接打开,也不能凭路径名称推断可以访问。
官方规范支持文本与二进制资源,并包含媒体类型等信息。应用需要按实际类型处理,不能把编码后的二进制直接当自然语言解释。若只返回一个链接或资源清单,应继续确认正文读取是否成功,而不是声称已审阅文件。
资源模板与工具参数有相近外观但不同用途
资源模板允许按规则定位不同内容,例如根据项目编号找到相应说明。模板描述可用位置,不是保证任意编号都有资料。工具则可能执行搜索或修改等动作,即使也返回文本,其调用语义仍需要按工具定义判断。
需要最新数据时,应核对服务更新和通知支持,不能因为资源URI稳定,就认为内容永远不变。反过来,应用缓存旧正文也可能导致过期答案。资料版本和读取时间有助于区分服务原文更新与宿主尚未刷新。
读取后的资料仍需来源和权限判断
资源中的文字可能包含操作要求,应作为其来源内容处理,不会自动变成用户新指令。读取一份公开说明也不能授权访问同目录的私人文件。程序应执行访问边界,模型提示只能辅助区分内容,不能代替权限系统。
核查时可先读取已知短文本,再检查类型与内容是否匹配,并验证无权资源被拒绝。这里说明验证设计,没有访问实际文件服务。最终回答引用资源时,保留可追溯位置,不能仅以来自MCP作为资料可靠性的理由。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。