MCP Roots 是模型上下文协议(MCP)的一项客户端能力:客户端把一组文件系统「根目录」暴露给服务器,让服务器知道哪些目录和文件与当前工作相关,从而把操作聚焦在这些范围内。
它不是什么
这一点最容易误读。官方规范明确写明 Roots 是信息性指引(informational guidance)而非访问控制机制,协议本身并不强制服务器必须停留在 roots 范围内。真正的权限控制要靠服务器自身实现。
交互模型
Roots 通常通过工作区或项目配置界面暴露,例如让用户挑选目录;也可以结合版本控制系统或项目文件自动探测。规范不强制某种特定交互方式。
协议要点
客户端声明 `roots` 能力;服务器通过 `roots/list` 请求获取列表;根目录条目包含 `uri`(当前规范要求必须是 `file://` URI)与可选的 `name`;支持 `listChanged` 的客户端在列表变化时必须发出通知。
状态:已废弃。规范版本 2026-07-28 起 Roots 被标记为废弃(SEP-2577),按功能生命周期政策至少保留十二个月。新实现不应再采用;已有实现应迁移到通过工具参数传递目录/文件、资源 URI,或服务器配置的方式。
安全要求
客户端只能暴露有相应权限的根目录、校验 URI 防止路径穿越、实施访问控制并监控可达性;服务器应处理 roots 不可用的情况,并在操作中校验路径。