根(Roots)
理解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端点,并保持逻辑分离。
最后更新于: