MCP コンセプト : ルート (Roots) – サンプル

ルート (Roots) は、サーバが動作できる境界を定義する MCP の概念です。それらはクライアントがサーバに関連リソースとそれらの場所について知らせる手段を提供します。主にファイルシステム・パスのために使用されますが、ルートは HTTP URL を含む任意の有効な URI で構いません。

Model Context Protocol (MCP) : コンセプト : ルート (Roots) – サンプル

作成 : クラスキャット・セールスインフォメーション
作成日時 : 05/27/2025

* 本記事は github modelcontextprotocol の以下のページを独自に翻訳した上でまとめ直し、補足説明を加えています :

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス ⭐️ リニューアルしました 😉

クラスキャット は人工知能に関する各種サービスを提供しています。お気軽にご相談ください :

  • 人工知能導入個別相談会(無償)実施中! [詳細]

  • 人工知能研究開発支援 [詳細]
    1. 自社特有情報を含むチャットボット構築支援
    2. 画像認識 (医療系含む) / 画像生成

  • PoC(概念実証)を失敗させないための支援 [詳細]

お問合せ : 下記までお願いします。

  • クラスキャット セールス・インフォメーション
  • sales-info@classcat.com
  • ClassCatJP

 

 

Model Context Protocol (MCP) : コンセプト : ルート (Roots) – サンプル

MCP のルートを理解します。

ルートは、サーバが動作できる境界を定義する MCP の概念です。それらはクライアントがサーバに関連リソースとそれらの場所について知らせる手段を提供します。

 

What are Roots?

ルートは、クライアントがサーバに焦点を合わせるべきと提案する URI です。クライアントがサーバに接続する際、それはサーバがどのルートで作業するべきかを宣言します。主にファイルシステム・パスのために使用されますが、ルートは HTTP URL を含む任意の有効な URI で構いません。

For example, roots could be:

file:///home/user/projects/myapp
https://api.example.com/v1

 

Why Use Roots?

ルートは幾つかの重要な目的を果たします :

  1. Guidance : 関連リソースと場所についてサーバに知らせます。

  2. Clarity (明確さ) : ルーツはどのリソースがワークスペースの一部であるかを明確にします。

  3. Organization : 複数のルートにより異なるリソースを同時に操作できます。

 

How Roots Work

クライアントがルートをサポートする場合、それは :

  1. 接続中にルート機能を宣言する

  2. 提案ルートのリストをサーバに提供する

  3. ルートが (サポートされている場合に) 変更された時にはサーバに通知する

ルートは情報提供であり厳密に強制するものではありませんが、サーバは以下に注意するべきです :

  1. 提供されたルートを尊重する

  2. ルート URI を使用してリソースの位置決めをしてアクセスします

  3. ルート境界内の操作を優先します

 

Common ユースケース

ルートは一般的には以下を定義するために使用されます :

  • プロジェクト・ディレクトリ

  • レポジトリの場所

  • API エンドポイント

  • 設定の場所

  • リソース境界

 

ベスト・プラクティス

ルートを取り扱う場合 :

  1. 必要なリソースのみを提示する

  2. ルートには明確で説明的な名前を使用する

  3. ルートのアクセス可能性の監視

  4. ルート変更を上手く処理する

 

サンプル

通常の MCP クライアントがルートを公開する方法が以下です :

{
  "roots": [
    {
      "uri": "file:///home/user/projects/frontend",
      "name": "Frontend Repository"
    },
    {
      "uri": "https://api.example.com/v1",
      "name": "API Endpoint"
    }
  ]
}

この設定は、サーバがローカルレポジトリと API エンドポイントの両方に焦点を当てながら、それらを論理的に分類されたままにすることを提案しています。

 

以上