filesystem について
FieldCure MCP Filesystem Serverは、AIクライアントにサンドボックス内のローカルファイル操作とドキュメント解析を提供します。アクセス先を制限したい用途に向けて、MCP roots経由で許可ディレクトリを実行中に変更できます。
主な機能
- 01ファイルの読み書き、検索、管理
- 02許可ディレクトリ内にアクセスを制限
- 03MCP roots経由で許可ディレクトリを更新
- 04対応ドキュメントをMarkdownに変換
- 05バイナリファイルをbase64で処理
- 06パストラバーサルとシンボリックリンクのリスクを検証
活用シーン
- 01AIクライアントに指定フォルダー内のファイルを読ませる
- 02ファイル名やファイル内容を検索
- 03対応ドキュメントをMarkdownファイルに変換
MCP 対応
stdio経由でファイルシステムとドキュメント変換のツールを提供するMCPサーバーです。MCP rootsに対応し、クライアントは実行中に許可ディレクトリを置き換えられます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
FieldCure MCP Filesystem Server
AI クライアントにローカルファイルシステムの操作を提供する、安全なModel Context Protocol(MCP)サーバーです。C# と公式のMCP C# SDKで構築されています。
機能
- 17 種類のファイルシステムツール:読み取り、書き込み、追記、削除、検索、コピー、移動、Markdown への変換など
- サンドボックス化されたアクセス:すべての操作は明示的に許可されたディレクトリ内に制限されます
- MCP roots プロトコル:クライアントはサーバーを再起動せずに、実行時に許可されたディレクトリを変更できます
- 強化されたセキュリティ:パストラバーサルの防止、シンボリックリンクの解決、NTFS ADS のブロック、Windows の予約名の拒否
- アトミックな書き込み:一時ファイルへの書き込み後に名前を変更する方式により、データの破損を防ぎます
- バイナリ検出:バイナリファイルは自動的に base64 で、テキストファイルは UTF-8 で返します
- 組み込みのドキュメント解析:対応するドキュメント形式を直接読み取り、ディスク上で Markdown に変換できます
- Stdio トランスポート:stdin/stdout を介した JSON-RPC による標準的な MCP サブプロセスモデル
インストール
dotnet tool
dotnet tool install -g FieldCure.Mcp.Filesystem
ソースから
git clone https://github.com/fieldcure/fieldcure-mcp-filesystem.git
cd fieldcure-mcp-filesystem
dotnet build
要件
設定
Claude Desktop
{
"mcpServers": {
"filesystem": {
"command": "fieldcure-mcp-filesystem",
"args": [
"C:\\Users\\me\\Documents",
"C:\\Projects"
]
}
}
}
VS Code
{
"servers": {
"filesystem": {
"command": "fieldcure-mcp-filesystem",
"args": [
"${workspaceFolder}"
]
}
}
}
ツール
ファイル操作
| ツール | 説明 |
|---|---|
read_file | ファイルの内容を読み取ります(テキストは UTF-8、バイナリは base64) |
read_multiple_files | ファイルごとのエラー処理を行いながら、複数のファイルを一度に読み取ります |
read_file_lines | 指定した範囲の行を読み取ります |
convert_to_markdown | 対応するドキュメントファイルを 1 つ、ディスク上の Markdown ファイルに変換します |
convert_directory_to_markdown | ディレクトリ内の対応するドキュメントファイルを一括で Markdown ファイルに変換します |
write_file | アトミックな書き込みでファイルを作成または上書きします |
append_file | 自動的に改行を追加して、ファイルの末尾に内容を追記します |
modify_file | テキストを検索して置換します(プレーンテキストまたは正規表現) |
copy_file | ファイルまたはディレクトリを再帰的にコピーします |
move_file | ファイルまたはディレクトリを移動または名前変更します |
delete_file | ファイルまたはディレクトリを削除します |
ディレクトリ操作
| ツール | 説明 |
|---|---|
list_directory | 種別マーカー、サイズ、日付とともに内容を一覧表示します |
create_directory | ディレクトリを再帰的に作成します |
directory_tree | 深さを設定できる階層ツリー表示 |
検索と情報
| ツール | 説明 |
|---|---|
search_files | glob パターンでファイルを検索します |
search_within_files | 行番号付きで、複数ファイルのテキスト内容を検索します |
get_file_info | ファイルまたはディレクトリのメタデータ |
MCP Roots プロトコル
このサーバーは、実行時のディレクトリ変更に対応するため、MCP roots プロトコルをサポートしています。クライアントが roots を変更すると、次の処理が行われます。
- サーバーが更新された roots リストを要求します。
- 許可されたディレクトリがすべて置き換えられます。
- CLI 引数が初期サンドボックスとして使用されます。
- roots リストが空の場合、すべてのファイルアクセスが拒否されます。
セキュリティモデル
すべてのパスは、ファイルシステム操作の前に IPathValidator を通じて検証されます。
- 許可されたディレクトリによってサンドボックスの境界が定義されます。
.と..はPath.GetFullPath()で正規化されます。- シンボリックリンクの解決先は、許可されたディレクトリ内でなければなりません。
- プレフィックスの照合では、ディレクトリ区切り文字が考慮されます。
- NTFS の代替データストリームはブロックされます。
- Windows の予約名は拒否されます。
- 許可されたディレクトリの更新はスレッドセーフです。
Markdown 変換ツールは、同じサンドボックスルールを使用して入力パスと出力パスの両方を検証します。変換した Markdown を MCP 経由でドキュメント全文として返すのではなく、ディスクに直接書き込みます。通常、これは read_file と write_file を組み合わせるよりもトークン効率に優れています。
プロジェクト構成
src/FieldCure.Mcp.Filesystem/
|- Program.cs
|- Security/
| |- IPathValidator.cs
| \- PathValidator.cs
|- Tools/
| |- FileOperationTools.cs
| |- DirectoryTools.cs
| \- SearchTools.cs
\- Utilities/
|- EncodingDetector.cs
\- FileSize.cs
開発
dotnet build
dotnet test
dotnet pack src/FieldCure.Mcp.Filesystem -c Release
制限事項
| サポート対象 | 未対応 |
|---|---|
| テキストファイルの読み書き(UTF-8) | UTF-8 以外のエンコーディングの自動検出 |
| バイナリファイルの検出と base64 | 非常に大きなファイル(>100 MB)のストリーミング |
| アトミック書き込み | ファイル監視/変更通知 |
| Glob パターン検索 | 全文インデックス作成 |
| 正規表現による検索と置換 | 複数ファイルへのトランザクション書き込み |
| シンボリックリンクの解決 | クロスプラットフォームでのシンボリックリンク作成 |
| MCP roots プロトコル | HTTP トランスポート |
| DocumentParsers がサポートする形式のドキュメントテキスト抽出/Markdown 変換 | スキャンしたドキュメントの OCR |
関連項目
AssistStudio ecosystem の一部です。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。