根目錄
根目錄是 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 端點,同時保持它們在邏輯上的分離。