根目錄

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