ToolArc

ToolArc — AIと開発のTips・比較

※記事により広告・アフィリエイトリンクを含む場合があります。

Series:Model Context Protocol(MCP)シリーズ

Filesystem MCPの使い方|許可フォルダと読み取り確認

Filesystem MCPを許可範囲つきで使いたい人へ、許可フォルダの決め方と読み取り確認までの手順を整理します。NPX/Docker/Windowsの起動形の読み方、読み取りと書き込みの違い、許可範囲の確認方法も分かります。ホーム全体は渡さず、狭いテスト用フォルダから始めます。

  • MCP
  • Filesystem
  • 許可ディレクトリ
  • セットアップ
  • 動作確認
  • 1

MCPを初めて1つ繋いだあと、次に気になるのがFilesystemです。ファイルの読み書きができることは分かっても、許可フォルダをどこまで狭くすればよいか、書き込みができてしまう点にどう向き合うか、最初にどのツールから試せばよいかが判断しにくいところです。

この記事では、許可フォルダを狭く保ったまま追加し、読み取りの確認まで済ませる範囲に絞ります。初めて繋ぐ手順、設定の置き場所、JSONの直し方はこの記事では扱いません。

今日の結論

  • Filesystem MCP Serverが触れるのは、起動時に渡した許可フォルダの内側です。その内側では書き込みもできるため、最初は秘密のない狭いテスト用フォルダを1つだけ渡します。
  • 読み取り系のツールと、書き込み・移動などの操作は別物として扱い、最初の確認は一覧表示と許可フォルダの確認に留めます。
  • NPX・Docker・Windowsの設定例は起動形の読み方として使い、公式ガイドにあるデスクトップやダウンロードフォルダ全体をそのまま許可先にはしません。
  • 追加したあとは「登録されたか」「許可範囲は意図どおりか」「読み取りが正しく返るか」を分けて確認します。
  • 設定場所やJSONの構文、初めての接続そのものはこの記事では扱いません。

許可フォルダは狭く決め、ホーム全体は渡さない

狭い許可フォルダを1つ渡し、読み取り確認まで進め、書き込みは後回しにすることを示す3段階の概念図

Filesystem MCP Serverは、ローカルのファイルとフォルダ操作をまとめた公式Serverです。パッケージ名は@modelcontextprotocol/server-filesystemで、手順の根拠はFilesystem MCP ServerのREADMEです。まだMCPを1つも繋いでいない場合は、先に初めてのMCP接続で1つのServerとのやり取りを済ませておくと、このあとの手順が分かりやすくなります。

READMEの前提では、操作は起動時に渡した許可ディレクトリの内側に限られます。ただし実際に今どこまで触れるかは、設定に書いたパスの写しではなく、実行時に返ってくる許可一覧で確認します。この確認方法はあとの章でまとめます。

許可フォルダは、機密のないテスト用フォルダを1つ用意するところから始めます。ホームディレクトリやDocuments、Desktop、Downloads全体、本番用リポジトリのルート、パスワードや鍵の置き場所は渡さないでください。範囲を広げるのはいつでもできますが、後から狭めるのは面倒です。

起動時はargsにディレクトリを渡して許可範囲を指定します。Clientが作業フォルダ(Roots)を伝えてくる場合、READMEはサーバー側の許可を置き換えると説明しています。一方でMCPプロトコルの仕様では、Rootsは非推奨の方向にあります。どちらも現時点の事実として押さえつつ、Rootsだけに頼った手順はこの記事では採用しません。

argsを渡さず、かつClientからも作業フォルダが渡されない、または空の場合は、初期化エラーになる場合があります。Roots非対応のClientでもargsなしで必ず動くわけではない点は覚えておくとよいでしょう。

MCPの役割分担そのものの仕組みが気になる場合は、MCPの基礎的な仕組みで扱っています。

読み取りと書き込み・破壊的操作を分けて見る

Filesystem Serverは読み取り専用のServerではありません。公式の一覧に並ぶのは、読み込みだけでなく書き込み・削除・移動まで含む操作一式。最初にここを取り違えると、許可フォルダの決め方も甘くなりがちです。

代表的なツールを、読み取り・書き込み・破壊的操作の3つに分けると次のようになります。

区分代表的なツール内容
読み取りlist_allowed_directorieslist_directoryread_text_filesearch_filesget_file_info一覧・内容確認・検索
書き込みwrite_file(既存ファイルを上書きし得る)、edit_filecreate_directory新規作成・変更・上書き
破壊的操作write_fileedit_filemove_file(移動元のファイルが消える)上書きや移動など、ファイルが消える・戻しにくい操作

この表は、公式READMEのツール説明を読み取り/書き込み/破壊的操作に分けたもので、読み取りと、上書きや移動を見分けるための整理です。Clientの画面が同じ色分けになるとは限りません。上書きや移動を頼む前は、承認画面でツール名と対象パスを確認してください。

初回に触る候補はlist_allowed_directorieslist_directoryの2つに絞るのが無難です。write_fileedit_filemove_fileは「存在すること」「扱いに注意が必要なこと」まで押さえておき、実際の編集フローはこの記事の範囲外とします。edit_fileには変更内容を先に確認できるdryRunの案内もあるため、気になる場合は公式ドキュメントで手順を確認してください。

NPX/Docker/Windowsの起動形をFilesystem用に読む

以下の設定例は構造の読み方を説明するためのものであり、接続が成功した実測ではありません。パスはすべてプレースホルダとして扱ってください。

主な起動形はNPXです。commandが起動コマンド、argsの末尾に渡したパスが許可フォルダになります。公式には複数フォルダを並べる書き方もありますが、この記事では最初の1つに絞ります。

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "C:\\MCP Filesystem Test"
      ]
    }
  }
}

Windowsでは、commandcmdにしてargsの先頭に/cを置き、そこからnpxを呼び出す書き方が公式に示されています。すべてのWindows環境で必須というわけではありませんが、うまく起動しないときの選択肢として覚えておくとよいでしょう。

{
  "mcpServers": {
    "filesystem": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "C:\\MCP Filesystem Test"
      ]
    }
  }
}

Dockerを使う場合は、公式が示す起動形の読み方として押さえておけば十分です。バインドマウント先は/projectsになり、roはマウントを読み取り専用にする指定です。これはマウント側の制約であり、NPX経路で使えるツールの能力そのものを消すものではありません。イメージのビルド手順はこの記事では扱いません。

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount",
        "type=bind,src=C:\\MCP Filesystem Test,dst=/projects/test",
        "mcp/filesystem",
        "/projects"
      ]
    }
  }
}

Clientによって設定のキー名が変わる点も押さえておきましょう。Claude DesktopやCursor系はmcpServers、VS Code系はserversです。設定を置く場所や反映のさせ方はこの記事では扱いません。VS Code向けの設定例全文はVS CodeでのMCP設定で確認できます。JSON自体のカンマや引用符でつまずいた場合は、MCP設定JSONの書き方を参照してください。

登録・許可範囲・読み取り呼び出しを分けて確認する

追加したあとの確認は、次の4段階に分けると迷いません。

  1. 登録: 使っているアプリのMCP一覧に、Filesystemが表示されているかを見ます。表示場所や再起動の要否、反映のさせ方はこの記事では扱いません。ここでは「出たか、出ないか」だけを見ます。
  2. 許可範囲: list_allowed_directoriesを呼び、返ってきたパスが意図したテスト用フォルダと一致するかを確認します。argsに書いたパスと違う場合は、Client側が伝える作業フォルダによって置き換えられている可能性がありますが、原因をここで一つに断定はしません。
  3. 読み取り: 手順2で確認したパスに対して、list_directoryで一覧表示を依頼します。作成や変更、削除は依頼しません。対象パスは必ず手順2で確認した範囲に限定してください。
  4. 承認: 実行の承認を求められたら、ツール名と対象パスを見てから進めます。書き込み系のツールが呼ばれた場合や、意図しないパスが対象になっている場合は許可せず、依頼の文面を見直してください。

判定の目安は、一覧に表示された時点で登録、許可フォルダが意図どおりであれば範囲確認、実行記録と対象パスが一致する返却があれば今回の読み取り確認は完了です。会話上の「できました」という一言だけでは判定材料になりません。

止まったら隣の手順記事へ切り分ける

ここまでの手順で止まった場合は、症状ごとに次の記事へ切り分けると早く解決できます。原因を一つに決めつけず、まず該当しそうな記事を開いてみてください。

症状次に確認する記事
設定を置く場所や画面操作、反映のさせ方が分からない使っているアプリの記事(CursorClaude DesktopClaude CodeVS Code
引用符やカンマ、キーの型でJSONがエラーになるMCP設定JSONの書き方
初めての1接続の型からやり直したい初めてのMCP接続
ローカル起動なのかURL接続なのか分からないstdioとSSEの違い(Filesystemの代表的な経路はローカルのstdioです)
GitHubのIssueやPRを操作したいGitHub MCP Serverの使い方(この記事が扱うのはローカルファイルまでです)
Web検索を足したいBrave Search MCPの設定
どのServerから試すか迷っているおすすめのMCP Server一覧

関連するServerやClientの手順をまとめて探したいときは、MCP入門ガイドから他の記事もたどれます。


本記事の内容は執筆時点(2026-09-18)の情報に基づきます。公式ドキュメントを参照していますが、掲載した手順の実機での動作は未検証です。パッケージ名や起動フラグ、ツール名、許可ディレクトリの決まり方はバージョンによって変更される可能性があります。接続の成功や安全性、データ損失の防止を保証するものではありません。重要な判断は公式ドキュメントで確認してください。