协议版本: draft
用户交互模型
MCP 中的根目录通常通过工作区或项目配置界面暴露。 例如,实现方式可以提供工作区/项目选择器,允许用户选择服务器应有权访问的目录和文件。这可以与版本控制系统或项目文件的自动工作区检测相结合。 但是,实现可以自由地通过任何适合其需求的接口模式暴露根路径——协议本身并不强制任何特定的用户交互模式。能力
支持根目录的客户端 必须 在初始化过程中声明roots 能力:
listChanged 表示当根列表发生变化时客户端是否将发送通知。
协议消息
列出根目录
要检索根节点,服务器发送一个roots/list请求:
请求:
根列表更改
当根路径变更时,支持listChanged 的客户端必须发送通知:
消息流
数据类型
根目录
根定义包含:uri: 根节点的唯一标识符。在当前规范中,此标识符必须为file://URI。name: 用于显示目的的可选人类可读名称。
项目目录
多仓库
错误处理
Clients 应当 为常见故障场景返回标准的 JSON-RPC 错误信息:- 客户端不支持 roots:
-32601(方法未找到) - 内部错误:
-32603
安全注意事项
-
Clients 必须:
- 仅公开具备适当权限的根目录
- 验证所有根URI以防止路径遍历
- 实施恰当的访问控制
- 监控根权限可访问性
-
Servers 应当:
- 处理根节点(roots)不可用的情况 在操作过程中遵从根目录边界限制
- 验证所有路径是否符合提供的根目录
实施指导原则
-
客户端 应当:
- 向服务器暴露根目录前提示用户获取同意
- 为根管理提供清晰的用户界面
- 对外暴露前验证根目录可访问性
- 监视根目录变化
-
服务器 应当:
- 使用前检查根能力
- 优雅处理根列表变化
- 在操作中遵守根边界
- 适当地缓存根信息