根目录
根目录是MCP中的一个概念,用于定义服务器可以操作的边界。它们为客户端提供了一种方式来告知服务器相关资源及其位置。
什么是根目录?
根目录是客户端建议服务器应该关注的URI。当客户端连接到服务器时,它会声明服务器应该使用哪些根目录。虽然主要用于文件系统路径,但根目录可以是任何有效的URI,包括HTTP URL。
例如,根目录可以是:
file:///home/user/projects/myapp
https://api.example.com/v1
为什么使用根目录?
根目录有几个重要用途:
- 指导:它们告知服务器相关资源和位置
- 清晰性:根目录明确表示哪些资源属于你的工作空间
- 组织:多个根目录让你可以同时处理不同的资源
根目录如何工作
当客户端支持根目录时,它会:
- 在连接时声明
roots
能力 - 向服务器提供建议的根目录列表
- 在根目录发生变化时通知服务器(如果支持)
虽然根目录是信息性的而不是严格强制性的,但服务器应该:
- 尊重提供的根目录
- 使用根目录URI来定位和访问资源
- 优先处理根目录边界内的操作
常见用例
根目录通常用于定义:
- 项目目录
- 仓库位置
- API端点
- 配置位置
- 资源边界
最佳实践
在使用根目录时:
- 只建议必要的资源
- 使用清晰、描述性的根目录名称
- 监控根目录的可访问性
- 优雅地处理根目录变化
示例
以下是一个典型的MCP客户端如何暴露根目录的示例:
{
"roots": [
{
"uri": "file:///home/user/projects/frontend",
"name": "前端仓库"
},
{
"uri": "https://api.example.com/v1",
"name": "API端点"
}
]
}
这个配置建议服务器同时关注本地仓库和API端点,同时保持它们的逻辑分离。