Filesystem MCP:AIが安全にファイルシステムを操作
Filesystem MCPがAIアシスタントに厳格な権限制御の下で安全にファイルの読み書きと管理を可能にする方法を学びましょう。ファイル操作、セキュリティのベストプラクティス、高度な統合パターンをマスターします。
AIコーディングアシスタントを使用する際、以下のようなことを望んでいませんか?
- ファイルを直接読み取る:ファイル内容の手動コピー&ペーストが不要
- ファイルを一括処理:複数のファイルやディレクトリを一度に操作
- 安全なファイル書き込み:制御された範囲内でファイルを変更
- プロジェクト構造を動的に探索:ファイルを自動的に発見して分析
Filesystem MCPは、AnthropicがModel Context Protocolサーバーとして公式に提供しており、AIアシスタントに安全で制御されたファイルシステム操作機能を提供します。
2026年11月4日更新: サーバーの現行READMEとClaude Code v2.1.318に照らして訂正しました。存在しない
--scope globalを--scope userに改め、userスコープとlocalスコープのサーバーは~/.claude/.mcp.jsonではなく~/.claude.jsonに保存されることを明記しました。RootsはMCPプロトコルリビジョン2026-07-28で非推奨になったため、許可ディレクトリはコマンドライン引数で指定する方法を推奨に変更しました。Docker設定とツール名(read_text_file、search_files)もサーバーに合わせて修正しています。
Filesystem MCPとは?
Filesystem MCPは、Node.jsベースのMCPサーバーで、Model Context Protocolのファイルシステム操作インターフェースを実装し、AIアシスタントが厳格な権限制御の下でローカルファイルを読み書きできるようにします。
主要機能
-
柔軟な権限制御 🔒
- コマンドライン引数でアクセス許可ディレクトリを指定
- 2025年版プロトコルのクライアントはRootsで実行時に権限を更新可能(MCPプロトコルリビジョン2026-07-28で非推奨)
- 未承認のディレクトリアクセスをデフォルトで拒否
-
豊富なファイル操作 📁
read_text_file()- ファイル内容をテキストとして読み取り(read_fileは非推奨のエイリアス)read_media_file()- 画像・音声などのバイナリファイルをbase64で読み取りwrite_file()- ファイルの書き込みまたは上書きedit_file()- 行レベルの編集(検索と置換)list_directory()- ディレクトリ内容のリスト表示create_directory()- ディレクトリの作成move_file()- ファイルの移動または名前変更search_files()- globパターンを使用したファイル検索get_file_info()- ファイルメタデータの取得
-
セキュリティファースト 🛡️
- サンドボックスメカニズムで未承認ディレクトリへのアクセスを防止
- 読み取り専用モードの設定(Docker
roフラグサポート) - 環境変数設定をサポートし、ハードコードされたパスを回避
-
モダンな統合 ⚡
- stdio上で両世代のMCPプロトコル(2026-07-28と2025年版のクライアント)に対応
- Rootsは2025年版のクライアントのみ(非推奨。コマンドライン引数を推奨)
- すべてのMCP互換クライアントとシームレスに統合
なぜFilesystem MCPが必要か?
問題:手動ファイル操作の非効率性
Filesystem MCP以前、AIアシスタントがファイルを処理する方法:
- ユーザーが手動でコピー&ペースト → AIはプロジェクトを積極的に探索できない
- 限定的なコンテンツの可視性 → ユーザーが提供したスニペットしか見えない
- 一括操作ができない → 各ファイルを手動で処理する必要がある
- 変更には人間の介入が必要 → AIは提案のみで実行できない
解決策:安全な自律的ファイル操作
Filesystem MCPによりAIは以下が可能になります:
- ✅ 関連ファイルを積極的に読み取り、完全なコンテキストを理解
- ✅ 複数のファイルを一括処理(リファクタリング、フォーマット、移行)
- ✅ 変更を直接書き込み、手動コピー&ペーストを削減
- ✅ プロジェクト構造を探索し、関連ファイルを自動的に発見
セキュリティを維持しながら:明示的に承認したディレクトリのみにアクセス。
インストールとセットアップ
npx経由で実行する場合、サーバーにはNode.js 24以降が必要です。
方法1:公式CLI(推奨)
# プロジェクトにインストール、現在のディレクトリへのアクセスを許可
claude mcp add \
--scope project \
filesystem \
-- npx -y @modelcontextprotocol/server-filesystem \
"$(pwd)"
# すべてのプロジェクトにインストール(userスコープ)、複数のディレクトリへのアクセスを許可
claude mcp add \
--scope user \
filesystem \
-- npx -y @modelcontextprotocol/server-filesystem \
/Users/username/projects \
/Users/username/documents
方法2:手動設定
プロジェクトルートの.mcp.json(projectスコープ)を編集します。userスコープとlocalスコープのサーバーはClaude Codeが管理する~/.claude.jsonに保存されるため、そちらはclaude mcp addで追加してください:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/path/to/other/allowed/dir"
]
}
}
}
方法3:Dockerサンドボックスモード
Dockerを使用してより厳格な分離を提供:
{
"mcpServers": {
"filesystem": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--mount", "type=bind,src=/path/to/project,dst=/projects/project,ro",
"mcp/filesystem",
"/projects"
]
}
}
}
ヒント:各ディレクトリを
/projectsの下にマウントし、許可ディレクトリとして/projectsを渡します。roオプションを付けたマウントは読み取り専用になり、AIは読み取りのみで変更できません。
Roots vs. コマンドライン引数
推奨:コマンドライン引数
{
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/allowed/dir1",
"/allowed/dir2"
]
}
すべてのMCPプロトコルバージョンで動作する唯一の方法であり、サーバーのREADMEもこの方法を推奨しています。
制限:権限を変更するにはサーバーの再起動が必要。
非推奨:Rootsプロトコル(2025年版クライアントのみ)
Rootsは、クライアントがファイルシステムの境界をサーバーに動的に公開するためのMCPのメカニズムです。2025年版のプロトコルで接続し、Rootsをサポートするクライアントは、実行時に許可ディレクトリを置き換えられます:
- ✅ 実行時に権限を更新(再起動不要)
- ✅
roots/list_changed通知による自動同期
RootsはMCPプロトコルリビジョン2026-07-28で非推奨となり、2026-07-28の接続では使えません。Claude Codeのv2 MCPランタイムは、stdioサーバーにこのリビジョンへの対応を問い合わせ、対応しているサーバーにはそれを使います。このサーバーは対応しているため、Claude Codeでは許可ディレクトリをコマンドライン引数で渡してください。
ディレクトリを指定せずにサーバーを起動してRootsに頼るのはやめましょう。2025年版のクライアントがRootsに対応していなければサーバーは起動時に終了し、2026-07-28の接続ではすべてのツール呼び出しがエラーを返します。
実際の使用例
例1:プロジェクトリファクタリング
あなた:「すべての.jsファイルのvarをconstに置き換えて」
Filesystem MCPが自動実行:
1. search_files("/Users/username/project", "**/*.js") → すべてのJSファイルを検索
2. 各ファイルにread_text_file()を実行
3. 分析して変更提案を生成
4. edit_file()を使用してvar → constを一括置換
5. 変更結果を報告
結果:5分で50ファイルをリファクタリング
例2:プロジェクト構造分析
あなた:「このプロジェクトのアーキテクチャを分析して、モジュール依存関係図を描いて」
Filesystem MCPが自動実行:
1. list_directory("/Users/username/project") → ルートディレクトリ構造を取得
2. search_files("/Users/username/project", "**/*.ts") → すべてのTypeScriptファイルを検索
3. read_text_file()で各ファイルのimport文を読み取り
4. 依存関係を分析
5. Mermaid図を生成
結果:完全なプロジェクトアーキテクチャ図を自動生成
例3:ファイル一括処理
あなた:「src/components下のすべてのTypeScriptファイルにcopyright headerを追加して」
Filesystem MCPが自動実行:
1. list_directory("/Users/username/project/src/components")
2. search_files("/Users/username/project/src/components", "**/*.ts")
3. 各ファイルにread_text_file()を実行
4. ファイルの先頭にcopyright headerを挿入
5. write_file()で書き戻し
結果:30ファイルに自動的にheaderを追加
利用可能なツールの詳細
1. read_text_file(path: string) 📖
ファイル内容をテキストとして読み取ります。オプションのheadまたはtailで先頭または末尾のN行だけを返せます。read_fileも使えますが、非推奨のエイリアスです。
2. write_file(path: string, content: string) ✍️
ファイルを書き込みまたは上書きします。
⚠️ 警告:既存のファイルを上書きするので、注意して使用してください。
3. edit_file(path: string, edits: Edit[]) ✂️
行レベルの編集で検索と置換をサポート。
4. list_directory(path: string) 📂
ディレクトリ内容をリスト表示。
5. create_directory(path: string) 🆕
新しいディレクトリを作成(ネストされた作成をサポート)。
6. move_file(source: string, destination: string) 🔀
ファイルを移動または名前変更。
7. search_files(path: string, pattern: string, excludePatterns?: string[]) 🔍
pathを起点に、globパターンでファイルを再帰的に検索。
サポートされているglobパターン:
*.ts- 起点ディレクトリ内のすべてのTSファイル**/*.ts- すべてのサブディレクトリ内のTSファイルsrc/**/*.{ts,tsx}- src下のTSおよびTSXファイル
8. get_file_info(path: string) ℹ️
ファイルメタデータを取得。
セキュリティのベストプラクティス
✅ 推奨
- 最小権限の原則
- 機密データの保護
- 読み取り専用モードの使用
- 定期的な権限監査
❌ 避けるべき
- ルートディレクトリの承認
/- 絶対にしないでください - システムディレクトリの承認
/etc,/usr,/System- 危険 - ホームディレクトリの承認
~- 範囲が広すぎる - ハードコードされた絶対パス - 相対パスまたは環境変数を使用
他のMCPサーバーとの相乗効果
Filesystem MCPは他のMCPサーバーと完璧に連携します:
1. Filesystem + Memory MCP
2. Filesystem + Context7 MCP
3. Filesystem + Sequential Thinking MCP
結論
Filesystem MCPは、AIアシスタントがファイルシステムを操作するための安全な橋渡しです。強力なファイル操作機能を提供しながら、厳格な権限制御でシステムのセキュリティを確保します。
あなたに適していますか?
| 使用シナリオ | 推奨度 |
|---|---|
| 一括ファイルリファクタリング | ⭐⭐⭐⭐⭐ |
| プロジェクト構造分析 | ⭐⭐⭐⭐⭐ |
| 自動化されたファイル処理 | ⭐⭐⭐⭐⭐ |
| 複数プロジェクト管理 | ⭐⭐⭐⭐ |
| 機密データの処理 | ⭐⭐ (慎重な権限設定が必要) |
今すぐ始める
- インストール:
claude mcp add --scope project filesystem -- npx -y @modelcontextprotocol/server-filesystem "$(pwd)" - プロジェクトディレクトリを承認
- AI駆動のファイル操作を楽しむ