MCP.so
ログイン

Filesystem MCP Server注目

@modelcontextprotocol

基本情報

カテゴリ

ファイルとストレージ

ライセンス

NOASSERTION

トランスポート

stdio

作者

modelcontextprotocol

Filesystem MCP Server について

Model Context Protocol サーバー

Filesystem MCP Server の設定

以下の設定を使って、このサーバーを MCP 対応クライアントに追加してください。

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "build",
        "-t",
        "mcp/filesystem",
        "-f",
        "src/filesystem/Dockerfile",
        "."
      ]
    }
  }
}

Filesystem MCP Server のツール

13

Read complete contents of a file as text

Read a file and return it as a base64-encoded content block with its MIME type

Read multiple files simultaneously

Create new file or overwrite existing (exercise caution with this)

Make selective edits using advanced pattern matching and formatting

Create new directory or ensure it exists

List directory contents with [FILE] or [DIR] prefixes

List directory contents with [FILE] or [DIR] prefixes, including file sizes

Move or rename files and directories

Recursively search for files/directories that match or do not match patterns

Get recursive JSON tree structure of directory contents

Get detailed file/directory metadata

List all directories the server is allowed to access

概要

Filesystem MCP Server とは?

Filesystem MCP Server は、Model Context Protocol プロジェクトが提供するリファレンス版の filesystem MCP サーバーです。Claude などの MCP クライアントがファイルの読み取り、書き込み、編集、移動、検索を行えるようにする Node.js サーバーで、アクセスは許可したディレクトリ内に限られます。

npm では @modelcontextprotocol/server-filesystem、Docker イメージでは mcp/filesystem として公開されており、ソースは公式の modelcontextprotocol/servers リポジトリ(MIT License)にあります。stdio でローカル実行され、API key は不要です。すべてのツールは、インターネットやその他の外部システムにアクセスしないものとして注釈されています。

Filesystem MCP Server の使い方

前提条件:Node.js(npx 用)または Docker。アカウントや API key は不要です。必須の入力は、許可するディレクトリを少なくとも 1 つ指定することだけです。コマンドライン引数で渡すか、クライアントが MCP Roots で渡します。

コマンドライン引数で許可ディレクトリを指定する場合:

mcp-server-filesystem /path/to/dir1 /path/to/dir2

推奨される方法は MCP Roots です。Roots に対応したクライアントはワークスペースのフォルダーをサーバーに送り、サーバーはそれでコマンドラインのリストを置き換えます。変更は roots/list_changed を通じて実行中に反映され、再起動は不要です。

Claude Desktop

claude_desktop_config.json に以下を追加し、公開したいフォルダーを列挙します:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir"
      ]
    }
  }
}

Windows では cmd /c 経由で npx を起動します:

{
  "mcpServers": {
    "filesystem": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir"
      ]
    }
  }
}

Docker を使う場合は、各ディレクトリを /projects 配下にマウントします。ro を付けると、そのマウントはサーバーから読み取り専用になります:

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
        "mcp/filesystem",
        "/projects"
      ]
    }
  }
}

VS Code

コマンドパレットから MCP: Open User Configuration を実行するか、ワークスペースに .vscode/mcp.json を作成して設定を共有します。VS Code では servers キーを使う点に注意してください:

{
  "servers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "${workspaceFolder}"
      ]
    }
  }
}

Docker 版では ${workspaceFolder} を /projects/workspace にマウントし、引数として /projects を渡します。

Claude Code and Cursor

README にはこれらのクライアント向けの手順はありませんが、どちらも同じ stdio コマンドを実行できます。Claude Code では:

claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/dir

Cursor では、上記の Claude Desktop と同じ mcpServers ブロックを Cursor の mcp.json に追加します。

Filesystem MCP Server の主な機能

  • サンドボックス化されたアクセス:すべての操作は許可ディレクトリ内に制限され、list_allowed_directories で現在有効なディレクトリを確認できます。
  • MCP Roots による動的なアクセス制御。許可フォルダーは再起動なしでクライアントのワークスペースに追従します。
  • テキストとメディアの読み取り:read_text_file は head/tail による行数制限に対応し、read_media_file は画像と音声を MIME タイプ付きの base64 コンテンツブロックとして返します。
  • 安全な編集:edit_file は対象を絞った検索置換を行い、インデントと LF/CRLF の改行コードを保持し、git 形式の diff を返し、dryRun によるプレビューにも対応します。
  • glob 形式の検索と再帰的な JSON directory_tree。どちらも除外パターンに対応します。
  • 各ツールを読み取り専用・冪等・破壊的のいずれかとして示す MCP ツール注釈。クライアントはリスクのある書き込みの前に確認を求められます。
  • モデルに読ませても変更させたくないフォルダー向けの Docker 読み取り専用マウント(ro)。

Filesystem MCP Server のツール

このサーバーは 13 個のツールを 3 つのグループで提供します:

  • 読み取り: read_text_file、read_media_file、read_multiple_files(1 件の読み取りに失敗しても、バッチ全体は止まりません)。
  • 閲覧と検索: list_directory、list_directory_with_sizes(名前またはサイズで並べ替え可能、合計も表示)、directory_tree、search_files、get_file_info(サイズ、日時、種類、権限)、list_allowed_directories。
  • 書き込み: write_file はファイルを作成または上書きし、edit_file は部分的な編集を行い、create_directory は入れ子のフォルダーを作成し、move_file は移動または名前変更を行います(移動先が既に存在する場合は失敗します)。

削除ツールはありません。README では write_file、edit_file、move_file が破壊的な操作として示されています。

Filesystem MCP Server のユースケース

  • プロジェクトフォルダー内のコードやドキュメントの編集:「~/projects/site の src にある getUser の呼び出しをすべて fetchUser に変更して、先に diff を見せて。」
  • フォルダーの確認:「~/Downloads で一番大きいファイルを一覧にして、それぞれ何か教えて。」
  • ファイルの整理:「~/Documents/invoices に年ごとのフォルダーを作り、各 PDF を該当するフォルダーに移動して。」
  • 画像を読み込んで分析:「~/Desktop/bug.png のスクリーンショットを開いて、エラー内容を説明して。」
  • ファイル検索:「~/notes から Kubernetes に関する Markdown ファイルを探して。archive フォルダーは除外して。」
  • MCP file system サンドボックスの構築:チャットアプリがローカルファイルについて答えるのに必要な読み取り専用のコンテキストを与える。

Filesystem MCP Server と代替ツールの比較

  • 組み込みのファイルツール: Claude Code のようなコーディングエージェントは、もともと作業ディレクトリ内のファイルを読み書きできます。そのため、この filesystem MCP は、Claude Desktop のように自前のローカルファイルアクセスを持たないチャットクライアントや、厳密なサンドボックスが必要な場面で特に役立ちます。
  • Desktop Commander: ターミナルコマンドの実行やプロセス管理も行えるコミュニティ製の Node.js MCP サーバーです。機能が広い分、ファイル専用のサーバーよりもリスクは高くなります。
  • Memory MCP Server (Knowledge Graph): もう 1 つのリファレンスサーバーで、ファイルアクセスではなく、チャットをまたいで事実を保持するためのものです。両者は一緒に導入されることがよくあります。

Filesystem MCP Server のトラブルシューティング

  • 起動時にステータス 1 で終了する: ディレクトリ引数なしで起動され、かつクライアントが Roots に対応していません。args に許可ディレクトリを少なくとも 1 つ追加してください。
  • 「Access denied - no allowed directories」: クライアントの roots が取り消されたか、有効なパスを含んでいません。クライアントでワークスペースフォルダーを開くか、コマンドラインでディレクトリを追加してください。
  • サンドボックス外のパスが拒否される: これは仕様です。list_allowed_directories で現在のリストを確認してください。Roots はコマンドラインのディレクトリを完全に置き換える点にも注意してください。
  • Docker からファイルが見えない: デフォルトでは、すべてのディレクトリを /projects 配下にマウントする必要があり、README の例のとおり /projects をディレクトリ引数としてサーバーに渡します。
  • Windows で npx が見つからない: 上記の cmd /c npx ... の形式を使ってください。

よくある質問

1

Filesystem MCP Server は公式ですか?

はい。`modelcontextprotocol/servers` リポジトリのリファレンスサーバーで、npm では `@modelcontextprotocol/server-filesystem` として公開されています。

2

filesystem MCP server は無料ですか?

はい。MIT License のオープンソースで、ローカルで動作し、API key や有料サービスは不要です。

3

AI がアクセスできるフォルダーを制限するには?

許可するディレクトリを引数で渡すか、Roots 対応のクライアントに指定させます。すべての操作はそれらのパス内に制限されます。Docker では必要なものだけをマウントし、読み取り専用にするには `ro` を付けます。

4

Filesystem MCP Server はファイルを削除できますか?

削除ツールは提供されていません。ただし、`write_file` はファイルを上書きし、`edit_file` は内容を変更し、`move_file` は移動元を取り除くため、書き込み権限の扱いには注意が必要です。

5

適用前に編集内容をプレビューできますか?

はい。`edit_file` で `dryRun` を `true` にすると、ファイルを変更せずに diff を取得できます。README でもまずこれを行うことが推奨されています。

6

Claude Code、Cursor、VS Code で使えますか?

はい。標準的な stdio MCP サーバーです。README には Claude Desktop と VS Code の手順が記載されており、Claude Code と Cursor でも同じ `npx` コマンドを実行できます。

7

ローカルとリモートのどちらですか?

ローカルです。お使いのマシン上で stdio により動作し、許可ディレクトリ内のローカルファイルシステムにのみアクセスします。

8

画像や PDF を読み込めますか?

`read_media_file` は画像と音声を image または audio コンテンツとして返し、それ以外のファイル形式は埋め込みの base64 resource として返します。

コメント

「ファイルとストレージ」の他のコンテンツ