一句话结论
MCP Roots 是客户端告诉服务端「文件系统里哪些目录是你该工作的边界」的通知机制——它从 2026-07-28 版规范(SEP-2577)起已被标记弃用,新项目应改用工具参数、资源 URI 或服务器配置传路径,但理解它对维护存量实现仍然必要。
不少人第一次看到 Roots 会以为它是沙箱或权限系统,这是最大的误解:官方文档反复强调,Roots 是「信息性指引」而非访问控制——协议并不强制服务端待在边界内,真正的安全必须落在操作系统权限和沙箱层。本篇讲清它的机制、正确预期,以及弃用之后的迁移路径。
Roots 解决什么问题
典型场景:你在 IDE 里打开了某个项目目录,文件系统 MCP 服务器需要知道「该在哪里找文件」。 Roots 就是客户端把这个范围告诉服务端的标准化方式——通常由宿主应用根据用户打开的文件夹自动暴露,也可以由用户手动配置(各客户端怎么配,见MCP 客户端配置)。
结构很简单,每个 Root 是一个 file:// URI 加可选的显示名:
{
"roots": [
{ "uri": "file:///home/user/projects/myproject", "name": "My Project" },
{ "uri": "file:///home/user/repos/backend", "name": "Backend Repository" }
]
}
协议流程三步
- 客户端在初始化时声明能力:
capabilities: { roots: { listChanged: true } },listChanged 表示边界变化时发通知。 - 服务端主动发起
roots/list请求(注意方向:是服务端问客户端),拿到当前边界列表。 - 用户切换项目导致边界变化时,客户端发送
notifications/roots/list_changed,服务端收到后重新请求列表。
服务端请求 Roots 但客户端不支持时,返回 JSON-RPC 标准错误 -32601(Method not found)。规范还要求客户端只暴露有权限的 Root 、校验 URI 防路径穿越;服务端则应在操作中尊重边界、把所有路径对 Root 校验。
必须建立的正确预期
官方「理解 MCP 客户端」文档把 Roots 的定位讲得非常直白:它是协调机制,不是安全边界。规范写的是服务端「 SHOULD 尊重边界」而不是「 MUST 强制」,因为服务端跑的是客户端管不住的代码。所以:
- 它擅长:上下文限定(告诉服务端往哪看)、防事故(让行为良好的服务端不越界)、工作流组织(自动跟随用户当前项目)。
- 它不防:恶意服务端——那要靠 OS 文件权限、容器或沙箱。
重要变化:2026-07-28 规范已弃用
SEP-2577 把 Roots 标记为弃用(同批弃用的还有 Sampling),按特性生命周期策略,规范至少保留十二个月再评估移除。官方给新实现划出的替代路线非常明确:
| 原 Roots 用途 | 替代方案 |
|---|---|
| 告诉服务端工作目录 | 调用工具时把路径直接作为工具参数传入 |
| 暴露可访问的位置 | 把目录/文件注册为资源(Resources),用资源 URI 访问 |
| 固定的工作范围 | 写进服务端自己的配置或环境变量 |
TypeScript SDK 文档的说法更彻底:「弃用 Roots 的那份修订版里没有替代的请求通道——把路径直接给服务端。」现行 SDK 对 2025 代连接仍完整兼容 Roots,新连接上声明 roots 能力则会触发弃用警告。
为什么弃用?从规范演进逻辑看,Roots 的收益场景(服务端需要感知客户端工作区)在真实部署里越来越多被更简单直接的方式满足——参数传路径让每次调用的范围显式可见,资源 URI 让范围管理进入成熟的资源体系,配置化则把固定范围交给部署层。三者都不再需要「服务端反向请求客户端」这条特殊通道。
存量项目怎么办
迁移决策速查
服务端只服务自己的应用:直接迁移到工具参数或服务器配置,依赖最少、行为最显式。
服务端要兼容多代客户端:保留 roots/list 处理逻辑,同时支持参数直传;按客户端声明的能力决定走哪条路。
客户端实现:对 2025 代连接继续应答 roots/list;对 2026-07-28 及以后连接不再声明 roots 能力,避免用户看到弃用警告。
安全层:无论走哪条路,文件访问的真正边界仍然只认 OS 权限与沙箱——这点从未变过,也不会因为迁移而改变。
Roots 的这一轮起落其实把 MCP 的设计哲学讲得很清楚:协议层只做「双方都同意的通用语言」,凡是涉及强制力的部分一律下沉到运行环境。理解了这一点,再看 OAuth 授权(见远程 MCP 服务器授权实战)、传输层选型(stdio 与 Streamable HTTP 怎么选)这些话题,判断逻辑是一样的。









评论 (0)