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端点,同时保持它们在逻辑上的分离。