Skip to content

roots

理解MCP中的roots

roots是MCP中定义服务器可以操作边界的概念。它们为客户端提供了一种方式来告知服务器相关资源及其位置。

什么是roots?

roots是客户端建议服务器应该关注的URI。当客户端连接到服务器时,它会声明服务器应该使用哪些roots。虽然主要用于文件系统路径,但roots可以是任何有效的URI,包括HTTP URL。

例如,roots可以是:

bash
file:///home/user/projects/myapp
https://api.example.com/v1

为什么使用roots?

roots服务于几个重要目的:

指导:它们告知服务器相关资源和位置 清晰:roots明确指出哪些资源是工作空间的一部分 组织:多个roots让你可以同时处理不同的资源

roots如何工作

当客户端支持roots时,它会:

声明连接期间的roots功能 向服务器提供建议的roots列表 在roots变更时通知服务器(如果支持)

虽然roots是信息性的而不是严格强制的,但服务器应该:

尊重提供的roots 使用根URI来定位和访问资源 优先处理根边界内的操作

常见用例

roots通常用于定义:

项目目录 仓库位置 API端点 配置位置 资源边界

最佳实践

在使用roots时:

只建议必要的资源 为roots使用清晰、描述性的名称 监控roots的可访问性 优雅地处理roots变更

示例

以下是典型的MCP客户端如何公开roots:

bash
{
  "roots": [
    {
      "uri": "file:///home/user/projects/frontend",
      "name": "Frontend Repository"
    },
    {
      "uri": "https://api.example.com/v1",
      "name": "API Endpoint"
    }
  ]
}

这个配置建议服务器同时关注本地仓库和API端点,同时保持它们在逻辑上的分离。