roots は「ここから先を見ていいよ」という目印
roots(ルーツ)は、MCP(Model Context Protocol)というAIと外部ツールをつなぐ仕組みの中に出てくる用語です。ひとことで言うと、AI側(クライアント)がサーバーに対して「作業してよい場所はここです」と伝えるための情報のこと。多くの場合はファイルシステム上のディレクトリのパスを指します。
名前の通り「root=根っこ」で、そこを起点としたツリーの範囲が作業対象になる、というイメージです。
引っ越し業者に渡す家の鍵の例え
引っ越し業者さんに家の中の荷物をまとめてもらうとき、「リビングと書斎の荷物だけお願いします。寝室と金庫の部屋は入らないでください」と伝えますよね。業者さんは優秀なので、指示された部屋の中なら何が必要か判断して勝手に作業を進めてくれますが、「どの部屋を任せるか」を決めるのは依頼主の仕事です。
roots はまさにこの「任せる部屋の指定」にあたります。AIに接続されたツール(サーバー)は、roots として伝えられた場所を起点に作業する。逆に言えば、伝えていない場所については、そもそも「そこが作業対象だ」と知らされていない状態になります。
なぜこんな仕組みが必要なのか
AIにファイルを触らせるツールを考えてみてください。何の制約もなければ、パソコンのどこにでもアクセスしうることになります。個人の写真フォルダ、他のプロジェクトのソースコード、設定ファイル……。全部が対象だと、AI側も「どれが今の仕事に関係あるのか」が分からず混乱しますし、利用者としても気持ちのいいものではありません。
roots があると、作業の焦点が絞られるという実用上のメリットと、見せる範囲を明示できるという安心感の両方が得られます。正直なところ、最初は「わざわざ指定しなくても、開いてるフォルダを見ればいいのでは」と思いがちなんですが、AIとツールは別のプロセスとして動いているので、「今どこで作業しているか」は明示的に伝えないと共有されません。そのための受け渡し口が roots です。
よくある形
roots は典型的には file:// で始まるURI(パスの表現形式)として渡されます。たとえばプロジェクトのフォルダが1つなら root も1つ、複数のリポジトリをまたいで作業しているなら root が複数になる、といった具合です。
- 単一プロジェクト: root は作業ディレクトリ1つ
- 複数リポジトリ: 必要なディレクトリを複数指定
- 作業対象が変わったとき: クライアント側から更新を伝えられる
勘違いしやすいポイント
roots は「絶対に破れない壁」というより、「ここが作業対象です」という宣言という性格が強い概念です。実際にどれだけ厳密に守られるかは、つなぐサーバー側の実装次第という側面があります。家の鍵の例えで言えば、鍵を渡す部屋を選ぶことはできても、業者さんが隣の部屋を覗かない保証はマナー(実装)に依存する、というわけです。
なので、本当に見せたくないものがある場合は、roots の指定だけに頼らず、そもそもそのファイルを別の場所に置く、実行権限そのものを絞るといった対策と組み合わせるのが現実的です。
覚えておくとよいこと
MCPまわりの話を読んでいて「roots」という単語が出てきたら、「AI側がツール側に伝える作業範囲の起点のことだな」と思い出せれば十分です。ツールがなぜかプロジェクト外のファイルを参照しない、あるいは逆に参照してしまう、といった挙動に出会ったとき、この概念を知っていると原因の見当がつけやすくなります。
このページは役に立ちましたか?