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

Local
github.com/nithiin7Files & Storage7Updated 18w ago

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

remote-file-server-mcp gives AI assistants and MCP clients read-only access to SMB/CIFS shares, for working with files stored on network servers. It keeps credentials in environment variables and includes safeguards such as path restrictions, sensitive-file filtering, and audit logs.

Key features

  1. 01List, search, and read files
  2. 02Retrieve file size, type, and timestamps
  3. 03Parse Office and PDF documents
  4. 04Restrict directories and filter sensitive files
  5. 05Write JSON audit logs without file contents

Use cases

  1. 01Find reports or spreadsheets on a network share
  2. 02Read documents for summarization
  3. 03Limit AI access to selected share directories

MCP support

The MCP server exposes SMB/CIFS file listing, search, reading, and metadata tools to clients over stdio. Connection credentials are configured through environment variables and are not included in tool calls or conversation history.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

file-server-mcp

remote-file-server-mcp

Give any AI assistant read access to your SMB/CIFS file shares — securely, in minutes.

CI Python 3.11+ License: MIT MCP Compatible


What is this?

An MCP (Model Context Protocol) server that bridges Claude Desktop (or any MCP client) to your SMB/CIFS network share — Windows file servers, NAS drives, Samba shares, anything SMB.

Ask Claude to read reports, search through spreadsheets, or summarize documents that live on your network — without moving a single file, pasting credentials into a chat, or granting write access.

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

Features at a glance

Read-only by designThe server exposes zero write operations — your files are safe
Credentials stay localPassed as env vars, never appear in tool calls or chat history
SMB encryption & signingPacket signing and encryption are both on by default; set SMB_ENCRYPT=false to disable encryption only
Path traversal blocked.. segments are rejected before any SMB call is made
Sensitive file denylist.env, *.key, *.pem, id_rsa, keystores, and more are never listed or read
Audit logEvery tool call written as a JSON entry (operation, path, outcome, and tool-specific metadata) — never file contents
Office & PDF parsingExcel, Word, PowerPoint, and PDF files are parsed into readable text — requires the optional [docs] extras
Subdirectory allowlistLock the server to only the directories the model actually needs

Tools

ToolArgumentsDescription
list_filespath (optional)List files and directories. Empty path = share root. Returns JSON.
read_filepathReturn text contents. Oversized files return a preview or hard-error. Office/PDF files are parsed.
get_file_infopathReturn metadata (size, type, timestamps) without reading the file.
search_filespattern, path (optional), max_depth (optional)Glob search (e.g. *.csv). Recurses up to max_depth (default 5, max 10), returns up to 200 matches.

All paths are relative to the share root — e.g. reports/2024/q1.xlsx.


Quickstart

Option A — pip install
pip install -e /path/to/remote-file-server

Then use "command": "file-server-mcp" in your MCP client config.

Option B — uv (no install needed)
uv run --directory /path/to/remote-file-server file-server-mcp
Option C — run from source
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python server.py
Option D — Docker
docker build -t file-server-mcp .

See Dockerfile for runtime usage.


MCP Client Configuration

Add an entry under mcpServers in your client config file.

uv (run from source, no prior install):

{
  "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 (console script entry point):

{
  "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"
      }
    }
  }
}

Security note: This config file contains credentials — restrict its permissions (chmod 600 on macOS/Linux).

Restart your MCP client after saving.

Connecting to multiple servers
{
  "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", "...": "..." }
    }
  }
}

Environment Variables

VariableRequiredDefaultDescription
SMB_HOSTYes—IP address or hostname of the SMB server
SMB_SHAREYes—Share name on the server
SMB_USERNAMEYes—Username for SMB authentication
SMB_PASSWORDYes—Password for SMB authentication
SMB_PORTNo445SMB port
SMB_ENCRYPTNotrueSet to false to disable SMB encryption (not recommended)
SMB_TIMEOUTNo30Seconds before an SMB connect or operation times out
MAX_FILE_SIZE_MBNo10Maximum file size in MB that read_file will read
READ_PREVIEW_LINESNo100Lines to return for oversized files. Set to 0 to hard-error instead
ALLOWED_PATHSNo—Comma-separated subdirectory allowlist, e.g. reports,finance/2024
AUDIT_LOG_PATHNostderrFile path for JSON audit logs. Falls back to stderr if unset

Security

  • SMB packet signing is required on all connections.
  • Path traversal is blocked — .. segments are rejected before any SMB call.
  • Sensitive file denylist covers .env, *.key, *.pem, *.bak, id_rsa, *.pfx, *.p12, *.token, .netrc, .htpasswd, keystore files, and more. For production, combine this with ALLOWED_PATHS to restrict access to only the directories the model needs.
  • File size limit prevents reading files that would overflow the context window.
  • Audit logging records every tool call in JSON (operation, path, outcome, tool-specific metadata) — never file contents.
  • Error messages are sanitised — internal hostnames, UNC paths, and credentials are never exposed to the client.

Requirements

  • Python 3.11+
  • Network access to the SMB server (port 445 by default)
  • SMB credentials with read permissions on the share

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.