Skip to Content

根(Roots)

理解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端点,并保持逻辑分离。


最后更新于: