协议修订: 2025-11-25
用户交互模型
MCP 中的根目录通常通过工作区或项目配置界面公开。 例如,实现方案可以提供工作区/项目选择器,允许用户选择服务器应有权访问的目录和文件。这可以与版本控制系统或项目文件的自动工作区检测相结合。 然而,实现方案可以自由通过任何符合其需求的界面模式来公开根目录——协议本身并不强制要求任何特定的用户交互模型。功能
支持根目录的客户端 必须 在 初始化 期间声明roots 能力
listChanged 表示当根目录列表发生变化时,客户端是否会发出通知。
协议消息
列出根目录
要检索根目录,服务器发送roots/list 请求: 请求:根目录列表变更
当根目录发生变化时,支持listChanged 的客户端 必须 发送通知
消息流
数据类型
根目录
根目录定义包括uri: 根目录的唯一标识符。在当前规范中,这 必须 是一个file://URI。name: 用于显示的可选人类可读名称。
项目目录
多仓库
错误处理
对于常见的失败情况,客户端 应该 返回标准的 JSON-RPC 错误- 客户端不支持根目录:
-32601(找不到方法) - 内部错误:
-32603
安全注意事项
-
客户端 必须
- 仅公开具有适当权限的根目录
- 验证所有根目录 URI 以防止路径遍历
- 实施适当的访问控制
- 监控根目录的可访问性
-
服务器**应该**
- 处理根目录不可用的情况
- 在操作过程中尊重根目录边界
- 根据提供的根目录验证所有路径
实施指南
-
客户端**应该**
- 在向服务器公开根目录之前提示用户同意
- 为根目录管理提供清晰的用户界面
- 在公开前验证根目录的可访问性
- 监控根目录变更
-
服务器**应该**
- 在使用前检查根目录能力
- 优雅地处理根目录列表变更
- 在操作中尊重根目录边界
- 适当地缓存根目录信息