MCP Filesystem Server について
MCP Filesystem Server は Go で書かれた MCP サーバーで、MCP クライアントからローカルのファイルシステムにアクセスできるようにします。起動時に指定したディレクトリのみにアクセスを制限し、パスの検証でディレクトリトラバーサルを防ぎます。AI にローカルファイルの読み書きを任せたい利用者向けです。
主な機能
- 01ファイルの読み取り、書き込み、コピー、移動、削除
- 02複数ファイルの一括読み取り
- 03ファイル内のテキストや正規表現による置換
- 04ディレクトリツリーの表示とファイル検索
- 05許可されたディレクトリへのアクセス制限
- 06パスの検証とシンボリックリンクの安全性チェック
活用シーン
- 01AI アシスタントにプロジェクトファイルの読み取りと編集を任せる
- 02許可されたディレクトリ内でファイル名や内容を検索する
- 03Docker でホストのディレクトリをマウントし、コンテナ内の AI からアクセスする
MCP 対応
本プロジェクトは MCP サーバーであり、file:// リソースと、読み取り、書き込み、検索、ディレクトリ一覧などのツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/mark3labs/mcp-filesystem-server:latestローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/mark3labs/mcp-filesystem-server:lateststdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP ファイルシステムサーバー
この MCP サーバーは、Model Context Protocol(MCP)を介してローカルファイルシステムへの安全なアクセスを提供します。
コンポーネント
リソース
- file://
- 名前:ファイルシステム
- 説明:ローカルファイルシステム上のファイルとディレクトリへのアクセス
ツール
ファイル操作
-
read_file
- ファイルシステムからファイルの内容全体を読み取ります
- パラメーター:
path(必須):読み取るファイルのパス
-
read_multiple_files
- 複数のファイルの内容を1回の操作で読み取ります
- パラメーター:
paths(必須):読み取るファイルパスのリスト
-
write_file
- 新しいファイルを作成するか、既存のファイルを新しい内容で上書きします
- パラメーター:
path(必須):ファイルを書き込む場所、content(必須):ファイルに書き込む内容
-
copy_file
- ファイルとディレクトリをコピーします
- パラメーター:
source(必須):ファイルまたはディレクトリのコピー元パス、destination(必須):コピー先のパス
-
move_file
- ファイルとディレクトリを移動または名前変更します
- パラメーター:
source(必須):ファイルまたはディレクトリの移動元パス、destination(必須):移動先のパス
-
delete_file
- ファイルシステムからファイルまたはディレクトリを削除します
- パラメーター:
path(必須):削除するファイルまたはディレクトリのパス、recursive(任意):ディレクトリを再帰的に削除するかどうか(デフォルト:false)
-
modify_file
- 文字列の照合または正規表現を使用してテキストを検索・置換し、ファイルを更新します
- パラメーター:
path(必須):変更するファイルのパス、find(必須):検索するテキスト、replace(必須):置換後のテキスト、all_occurrences(任意):すべての出現箇所を置換するかどうか(デフォルト:true)、regex(任意):検索パターンを正規表現として扱うかどうか(デフォルト:false)
ディレクトリ操作
-
list_directory
- 指定したパスにあるすべてのファイルとディレクトリの詳細な一覧を取得します
- パラメーター:
path(必須):一覧を取得するディレクトリのパス
-
create_directory
- 新しいディレクトリを作成するか、ディレクトリが存在することを確認します
- パラメーター:
path(必須):作成するディレクトリのパス
-
tree
- ディレクトリ構造を階層化した JSON 表現で返します
- パラメーター:
path(必須):走査するディレクトリのパス、depth(任意):走査する最大の深さ(デフォルト:3)、follow_symlinks(任意):シンボリックリンクをたどるかどうか(デフォルト:false)
検索と情報
-
search_files
- パターンに一致するファイルとディレクトリを再帰的に検索します
- パラメーター:
path(必須):検索開始パス、pattern(必須):ファイル名と照合する検索パターン
-
search_within_files
- ディレクトリツリー内のファイル内容からテキストを検索します
- パラメーター:
path(必須):検索開始ディレクトリ、substring(必須):ファイル内容から検索するテキスト、depth(任意):検索する最大ディレクトリ深度、max_results(任意):返す結果の最大数(デフォルト:1000)
-
get_file_info
- ファイルまたはディレクトリに関する詳細なメタデータを取得します
- パラメーター:
path(必須):ファイルまたはディレクトリのパス
-
list_allowed_directories
- このサーバーがアクセスを許可されているディレクトリの一覧を返します
- パラメーター:なし
機能
- 指定したディレクトリへの安全なアクセス
- ディレクトリトラバーサル攻撃を防ぐためのパス検証
- セキュリティチェックを伴うシンボリックリンクの解決
- MIME タイプの検出
- テキスト、バイナリ、画像ファイルのサポート
- インラインコンテンツと Base64 エンコードのサイズ制限
はじめに
インストール
Go Install を使用する場合
go install github.com/mark3labs/mcp-filesystem-server@latest
使用方法
スタンドアロンサーバーとして
許可するディレクトリを指定して MCP サーバーを起動します:
mcp-filesystem-server /path/to/allowed/directory [/another/allowed/directory ...]
Go プロジェクトのライブラリとして
package main
import (
"log"
"os"
"github.com/mark3labs/mcp-filesystem-server/filesystemserver"
)
func main() {
// Create a new filesystem server with allowed directories
allowedDirs := []string{"/path/to/allowed/directory", "/another/allowed/directory"}
fs, err := filesystemserver.NewFilesystemServer(allowedDirs)
if err != nil {
log.Fatalf("Failed to create server: %v", err)
}
// Serve requests
if err := fs.Serve(); err != nil {
log.Fatalf("Server error: %v", err)
}
}
Model Context Protocol での使用
このサーバーを MCP 対応アプリに統合するには:
{
"mcpServers": {
"filesystem": {
"command": "mcp-filesystem-server",
"args": ["/path/to/allowed/directory", "/another/allowed/directory"]
}
}
}
Docker
Docker で実行する
Docker を使用して Filesystem MCP サーバーを実行できます:
docker run -i --rm ghcr.io/mark3labs/mcp-filesystem-server:latest /path/to/allowed/directory
MCP を使用した Docker の設定
MCP をサポートするアプリに Docker イメージを統合するには、次のようにします。
{
"mcpServers": {
"filesystem": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mark3labs/mcp-filesystem-server:latest",
"/path/to/allowed/directory"
]
}
}
}
コンテナ内で行った変更をホストのファイルシステムに反映させる必要がある場合は、ボリュームをマウントできます。これにより、コンテナからホストシステム上のファイルにアクセスして変更できるようになります。例を示します。
{
"mcpServers": {
"filesystem": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--volume=/allowed/directory/in/host:/allowed/directory/in/container",
"ghcr.io/mark3labs/mcp-filesystem-server:latest",
"/allowed/directory/in/container"
]
}
}
}
ライセンス
詳細は LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。