Model Context Protocol(MCP)は、アプリケーションがサンドボックス化された操作を通じてファイルシステムと安全にやり取りできるフレームワークです。本ガイドでは、MCPの仕組みや主な特徴、そしてMCPファイルシステムサーバーを用いた実践例を解説します。
Model Context Protocol(MCP)とは?
Model Context Protocol(MCP)は、アプリケーション(AIアシスタントなど)と外部システム、特にファイルシステム間の制御されたやりとりを可能にする強力なセキュリティフレームワークです。MCPは安全な橋渡し役となり、ツールがサンドボックス化された権限駆動型の環境でファイルの読み書きや検索などの操作を実行できます。
このプロトコルは、VS CodeやClaude Desktopなどの開発環境に安全なファイルシステム操作を統合したい開発者にとって特に有用です。
MCPの主な特徴
- サンドボックス化された操作: すべての操作は事前に定義されたディレクトリ内でのみ行われ、ファイルシステムの機密領域を保護します。
- 標準化API: 一貫したツールセット(read_file、write_fileなど)が統一されたインターフェースで利用可能です。
- セキュリティ重視設計: 許可ディレクトリへの操作のみを許し、読み取り専用マウントなどの機能も備えます。
- 柔軟な統合性: DockerやNPX、VS Code、Claude Desktopなど様々な環境で利用できます。

MCPファイルシステムサーバーとは
MCPファイルシステムサーバーは、Model Context Protocolの枠組み内でファイルシステム操作を実現するために特化したNode.js実装です。制御された方法でファイルやディレクトリとやりとりするための総合的なツールキットを提供します。
MCPファイルシステムサーバーで利用できるツール
主な機能は以下の通りです:
- read_file: ファイル内容をUTF-8で読み込み
- read_multiple_files: 複数ファイルを同時に処理し、個々の失敗があっても継続
- write_file: 新規ファイル作成や既存ファイルの上書き
- edit_file: パターンマッチによる選択編集、ドライランやGit風diff出力にも対応
- create_directory: 親ディレクトリの自動生成も可能なディレクトリ作成
- list_directory: [FILE]や[DIR]のプレフィックス付きでディレクトリ内容を表示
- move_file: ファイルやディレクトリの移動・リネーム
- search_files: 除外パターン対応の再帰的検索
- get_file_info: サイズ・作成日時・パーミッションなどのメタデータ取得
- list_allowed_directories: アクセス可能なすべてのディレクトリを一覧表示
これらのツールはすべてfile://systemリソース経由で利用でき、MCPファイルシステム操作のインターフェースとなります。
ClaudeとMCPの連携例
MCPの実際の動作を示すため、AIアシスタントClaudeを使い、MCPファイルシステムサーバーで一般的なファイルシステム操作を行った例を紹介します。
ステップ1:許可ディレクトリの一覧取得
まず、Claudeがアクセスできるディレクトリを調べました。list_allowed_directoriesツールを使ったところ、許可されているのは以下の2箇所でした。
/Users/arshia/Desktop/Users/arshia/Downloads
これにより、Claudeの操作範囲がこの2ディレクトリに限定されていることが確認でき、他の領域は安全であると分かりました。
ステップ2:ディレクトリ内容の確認
続いて、list_directoryツールで各ディレクトリ内のファイルを確認しました。
/Users/arshia/Desktopの場合:
- [FILE] DS_Store
- [FILE] localized
/Users/arshia/Downloadsの場合:
- [FILE] DS_Store
- [FILE] localized
- [DIR] Visual Studio Code.app
- [FILE] shrek.txt
- [FILE] claudes diary.pages
- [FILE] diary.pdf
これにより、Downloadsディレクトリにshrek.txtというファイルやVisual Studio Code用のディレクトリなどがあることが分かりました。


デスクトップおよびDownloadsディレクトリへのlist_directoryリクエストとレスポンスのスクリーンショット
ステップ3:ファイルの読み取りを試みる
shrek.txtを見つけたので、read_fileツールで中身を読もうとしました。最初はshrek.txtというファイル名だけを指定し、許可ディレクトリ内を自動で探してくれるだろうと想定しました。
するとエラーが表示されました。
「アクセス拒否 – 許可されたディレクトリ外のパスです: /shrek.txt は /Users/arshia/Desktop, /Users/arshia/Downloads に含まれません。」
これはMCPがセキュリティのため完全なファイルパスを必須とするためです。

画像2:エラーメッセージ付きのread_file失敗のスクリーンショット
ステップ4:ファイルの読み取りに成功
方法を修正し、read_fileツールに/Users/arshia/Downloads/shrek.txtという完全なパスを指定したところ、今度は正常にファイル内容が返ってきました。
Request
{
`path`: `/Users/arshia/Downloads/shrek.txt`
}
Response
Can you see what im writing here? If you do check this out:
⢀⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀⠀⠀⢀⢴⣶⣆
⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦⣴⣾⠁⠸⣼⡿
⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟⠉⠀⠀⠀⠀⠀
⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠻⠿⠿⠿⠿⛁⠉
Shrek
- 書き込み内容が見えるかどうか尋ねる一文
- Shrekの顔を表現したASCIIアート
- 最後に「Shrek」と記載
許可ディレクトリ内で正しいパスを指定すれば、MCPでファイルの読み取りができることが確認できました。
実例から得られた重要ポイント
この実践例から、MCP利用時の重要な点がいくつか明らかになりました。
- 完全なパスが必須: read_fileなどのツールはファイル名だけでなくフルパス指定が必要
- サンドボックス化の有効性: 初回の失敗がMCPのセキュリティモデルの有効性を示した
- 段階的な探索が最善: ディレクトリリストツールを使って適切にファイルシステムを把握することが重要
MCP実装のベストプラクティス
MCPファイルシステムサーバーの特徴と実践経験をもとに、以下のベストプラクティスを推奨します。
- 最初に必ず権限を確認: 操作前にlist_allowed_directoriesでアクセス可能範囲を確認
- 必ずフルパス指定: エラーや曖昧さを避けるため、常に完全なパスを指定
- 編集時はドライランでテスト: edit_file利用時は
dryRun: trueで事前に変更内容を確認 - 部分成功を考慮: read_multiple_filesなどは個々の失敗があっても継続
- 最小権限を徹底: サーバー設定時、変更不要なディレクトリは読み取り専用マウントを利用
まとめ
Model Context Protocol(MCP)とそのファイルシステムサーバーは、管理された環境でのファイルシステム操作に堅牢なセキュリティをもたらします。Claudeとの連携例では、list_directoryやread_fileといったツールの実際の使い方と、フルパス指定や権限境界の重要性を示しました。
ここで紹介したベストプラクティスに従うことで、MCPを活用し、安全にファイルシステム操作をアプリケーションや開発ワークフローに統合できます。
プロジェクトでMCPを導入したい開発者の方は、公式GitHubドキュメントもぜひご参照ください。

