mcpField
A
An Mcp Server That Gives Any Mcp Client Read Access To An Smb/cifs File Share Servers

An Mcp Server That Gives Any Mcp Client Read Access To An Smb/cifs File Share Servers

ローカル
github.com/nithiin7ファイル・ストレージ718 週間前に更新

An Mcp Server That Gives Any Mcp Client Read Access To An Smb/cifs File Share Servers について

remote-file-server-mcpは、SMB/CIFS共有上のファイルをAIアシスタントやMCPクライアントから読み取り専用で扱えるようにします。認証情報は環境変数で管理し、パス制限や機密ファイルの除外、監査ログを備えています。

主な機能

  1. 01ファイルの一覧表示、検索、読み取り
  2. 02サイズ、種類、更新日時などの取得
  3. 03Office文書とPDFの解析
  4. 04ディレクトリ制限と機密ファイルの除外
  5. 05ファイル内容を含まないJSON監査ログ

活用シーン

  1. 01ネットワーク共有上の報告書や表計算ファイルの検索
  2. 02文書を読み取って要約
  3. 03AIがアクセスできる共有ディレクトリの制限

MCP 対応

stdio経由で、SMB/CIFS共有のファイル一覧、検索、読み取り、メタデータ取得ツールをMCPクライアントに公開します。接続認証情報は環境変数で設定され、ツール呼び出しや会話履歴には含まれません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

file-server-mcp

remote-file-server-mcp

あらゆる AI アシスタントに、SMB/CIFS ファイル共有への読み取りアクセスを安全に、数分で提供します。

CI Python 3.11+ License: MIT MCP Compatible


これは何ですか?

Claude Desktop(または任意の MCP クライアント)と、SMB/CIFS ネットワーク共有をつなぐ MCP(Model Context Protocol) サーバーです。Windows ファイルサーバー、NAS ドライブ、Samba 共有など、あらゆる SMB に対応します。

ネットワーク上に保存されたレポートの読み取り、スプレッドシートの検索、ドキュメントの要約を Claude に依頼できます。ファイルを移動したり、チャットに認証情報を貼り付けたり、書き込みアクセスを許可したりする必要はありません。

flowchart LR
    A("🤖 Claude Desktop\nor any MCP client"):::client
    B("🔌 file-server-mcp\n<i>this server</i>"):::server
    C("🗄️ SMB File Server\nWindows · NAS · Samba"):::storage

    A -- "MCP / stdio" --> B
    B -- "SMB 445 · encrypted" --> C

    classDef client  fill:#7c3aed,color:#fff,stroke:none
    classDef server  fill:#2563eb,color:#fff,stroke:none
    classDef storage fill:#0f766e,color:#fff,stroke:none

主な機能

設計上、読み取り専用サーバーは書き込み操作を一切公開しないため、ファイルは安全です
認証情報はローカルに保持環境変数として渡され、ツール呼び出しやチャット履歴に表示されることはありません
SMB の暗号化と署名パケット署名と暗号化はどちらもデフォルトで有効です。暗号化のみを無効にするには SMB_ENCRYPT=false を設定します
パストラバーサルをブロックSMB 呼び出しを行う前に .. セグメントを拒否します
機密ファイルの拒否リスト.env、*.key、*.pem、id_rsa、キーストアなどは一覧表示も読み取りもされません
監査ログ各ツール呼び出しを JSON エントリとして記録します(操作、パス、結果、ツール固有のメタデータ)。ファイルの内容は記録しません
Office と PDF の解析Excel、Word、PowerPoint、PDF ファイルを読み取り可能なテキストに解析します。オプションの [docs] extras が必要です
サブディレクトリの許可リストサーバーがモデルに必要なディレクトリのみを対象とするように制限できます

ツール

ツール引数説明
list_filespath(任意)ファイルとディレクトリを一覧表示します。パスが空の場合は共有ルートを示します。JSON を返します。
read_filepathテキストの内容を返します。サイズ超過のファイルはプレビューを返すか、ハードエラーになります。Office/PDF ファイルは解析されます。
get_file_infopathファイルを読み取らずにメタデータ(サイズ、種類、タイムスタンプ)を返します。
search_filespattern、path(任意)、max_depth(任意)Glob 検索(例:*.csv)を行います。max_depth(デフォルトは 5、最大 10)まで再帰検索し、最大 200 件の一致を返します。

すべてのパスは共有ルートからの相対パスです。例:reports/2024/q1.xlsx。


クイックスタート

オプション A — pip でインストール
pip install -e /path/to/remote-file-server

次に、MCP クライアントの設定で "command": "file-server-mcp" を使用します。

オプション B — uv(インストール不要)
uv run --directory /path/to/remote-file-server file-server-mcp
オプション C — ソースから実行
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python server.py
オプション D — Docker
docker build -t file-server-mcp .

実行時の使用方法については Dockerfile を参照してください。


MCP クライアントの設定

クライアントの設定ファイルで mcpServers の下にエントリを追加します。

uv(事前インストール不要で、ソースから実行):

{
  "mcpServers": {
    "file-server": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/remote-file-server", "file-server-mcp"],
      "env": {
        "SMB_HOST": "192.168.1.100",
        "SMB_SHARE": "my_share",
        "SMB_USERNAME": "my_user",
        "SMB_PASSWORD": "my_password"
      }
    }
  }
}

pip/uv pip(コンソールスクリプトのエントリポイント):

{
  "mcpServers": {
    "file-server": {
      "command": "file-server-mcp",
      "env": {
        "SMB_HOST": "192.168.1.100",
        "SMB_SHARE": "my_share",
        "SMB_USERNAME": "my_user",
        "SMB_PASSWORD": "my_password",
        "SMB_PORT": "445",
        "ALLOWED_PATHS": "reports,finance",
        "AUDIT_LOG_PATH": "/var/log/file-server-mcp/audit.jsonl"
      }
    }
  }
}

セキュリティに関する注意: この設定ファイルには認証情報が含まれるため、アクセス権を制限してください(macOS/Linux では chmod 600)。

保存した後、MCP クライアントを再起動してください。

複数のサーバーへの接続
{
  "mcpServers": {
    "file-server-prod": {
      "command": "file-server-mcp",
      "env": { "SMB_HOST": "10.0.0.10", "SMB_SHARE": "Production", "...": "..." }
    },
    "file-server-dev": {
      "command": "file-server-mcp",
      "env": { "SMB_HOST": "10.0.0.20", "SMB_SHARE": "Development", "...": "..." }
    }
  }
}

環境変数

変数必須デフォルト説明
SMB_HOSTはい—SMB サーバーの IP アドレスまたはホスト名
SMB_SHAREはい—サーバー上の共有名
SMB_USERNAMEはい—SMB 認証用のユーザー名
SMB_PASSWORDはい—SMB 認証用のパスワード
SMB_PORTいいえ445SMB ポート
SMB_ENCRYPTいいえtrueSMB 暗号化を無効にするには false を設定します(推奨されません)
SMB_TIMEOUTいいえ30SMB への接続または操作がタイムアウトするまでの秒数
MAX_FILE_SIZE_MBいいえ10read_file が読み込むファイルの最大サイズ(MB)
READ_PREVIEW_LINESいいえ100サイズ超過したファイルで返す行数。0 に設定すると、代わりにエラーになります
ALLOWED_PATHSいいえ—カンマ区切りのサブディレクトリ許可リスト。例:reports,finance/2024
AUDIT_LOG_PATHいいえstderrJSON 監査ログのファイルパス。未設定の場合は stderr に出力されます

セキュリティ

  • すべての接続で SMB パケット署名 が必須です。
  • パストラバーサル はブロックされます。SMB 呼び出しの前に .. セグメントが拒否されます。
  • 機密ファイルの拒否リスト には .env、*.key、*.pem、*.bak、id_rsa、*.pfx、*.p12、*.token、.netrc、.htpasswd、キーストアファイルなどが含まれます。本番環境では、これと ALLOWED_PATHS を組み合わせ、モデルが必要とするディレクトリのみにアクセスを制限してください。
  • ファイルサイズ制限 により、コンテキストウィンドウからあふれるファイルの読み込みを防ぎます。
  • 監査ログ にはすべてのツール呼び出しが JSON 形式で記録されます(操作、パス、結果、ツール固有のメタデータ)。ファイルの内容は記録されません。
  • エラーメッセージはサニタイズされます。内部ホスト名、UNC パス、認証情報がクライアントに公開されることはありません。

要件

  • Python 3.11+
  • SMB サーバーへのネットワークアクセス(デフォルトのポートは 445)
  • 共有への読み取り権限を持つ SMB 認証情報

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。