Skip to main content
根节点是 MCP 中定义服务器可以操作边界的概念。它们为客户端提供了一种方式,用于告知服务器相关资源及其位置。

什么是根节点?

根节点是客户端建议服务器应该关注的 URI。当客户端连接到服务器时,它会声明服务器应该处理哪些根节点。虽然主要用于文件系统路径,但根节点可以是任何有效的 URI,包括 HTTP URL。 例如,根节点可以是:
file:///home/user/projects/myapp
https://api.example.com/v1

为什么使用根节点?

根节点有几个重要的用途:
  1. 指导:它们向服务器提供有关相关资源和位置的信息
  2. 清晰:根节点明确了哪些资源是工作区的一部分
  3. 组织:多个根节点让你可以同时处理不同的资源

根节点如何工作

当客户端支持根节点时,它会:
  1. 在连接期间声明 roots 功能
  2. 向服务器提供建议根节点列表
  3. 在根节点变更时通知服务器(如果支持)
虽然根节点是信息性的,不是严格强制的,但服务器应该:
  1. 尊重提供的根节点
  2. 使用根节点 URI 来定位和访问资源
  3. 优先考虑根节点边界内的操作

常见用例

根节点通常用于定义:
  • 项目目录
  • 仓库位置
  • API 端点
  • 配置位置
  • 资源边界

最佳实践

在使用根节点时:
  1. 只建议必要的资源
  2. 为根节点使用清晰、描述性的名称
  3. 监控根节点的可访问性
  4. 优雅地处理根节点变更

示例

以下是典型的 MCP 客户端如何公开根节点:
{
  "roots": [
    {
      "uri": "file:///home/user/projects/frontend",
      "name": "前端仓库"
    },
    {
      "uri": "https://api.example.com/v1",
      "name": "API 端点"
    }
  ]
}
这个配置建议服务器关注本地仓库和 API 端点,同时保持它们在逻辑上分离。