Skip to main content
Glama
moaaz01

MCP File System Server

by moaaz01

๐Ÿ“ MCP File System Server

A secure, sandboxed file system server for the Model Context Protocol. Read, write, search, and manage files through any MCP-compatible AI client โ€” with path traversal protection, hidden file controls, and size limits.

License: MIT Python 3.10+


โœจ Features

  • ๐Ÿ”ง 5 Tools: read_file, write_file, list_directory, search_files, get_file_info

  • ๐Ÿ“„ 1 Resource: file://{path} โ€” read files via MCP resource URIs

  • ๐Ÿ›ก๏ธ Security-First Architecture: Sandbox isolation, path traversal prevention, max size limits

  • ๐Ÿ”ฅ Hidden File Control: Block .hidden files by default, opt-in with --allow-hidden

  • ๐Ÿ” Glob-Based Search: Search by pattern (*.py, *.md, data_*.csv)

  • ๐Ÿ“Š Rich Metadata: File size, timestamps, permissions, text/binary detection

  • ๐Ÿ–ฅ๏ธ Dual Transport: stdio and Streamable HTTP


Related MCP server: FS Context MCP Server

๐Ÿš€ Quick Start

# 1. Setup
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# 2. Create sandbox and run
mkdir -p /tmp/mcp-sandbox
python filesystem_server.py --sandbox /tmp/mcp-sandbox

๐Ÿ› ๏ธ Tools Reference

read_file(path: str) -> str

Read a file and return its contents with metadata (size, modified time, SHA256).

write_file(path: str, content: str) -> str

Write content to a file. Creates parent directories automatically.

list_directory(path: str) -> str

List files and directories with sizes and type indicators.

search_files(pattern: str, base_path: str = "") -> str

Search by glob pattern across the entire sandbox.

get_file_info(path: str) -> str

Get detailed metadata: type, size, timestamps, permissions, text/binary detection.


๐Ÿ›ก๏ธ Security Controls

--sandbox PATH          # Required: root directory (all operations restricted)
--allow-hidden          # Allow access to .hidden files and directories
--max-size N            # Max file size in MB (default: 10)

Attack Vector

Protection

../../../etc/passwd

โŒ Path traversal prevented

~/.ssh/id_rsa

โŒ Outside sandbox

.env files

โŒ Blocked by default

100GB file read

โŒ Size limit (configurable)

Hidden directory listing

โŒ Filtered by default


๐Ÿ“„ Resources

file://{path}

Read a file's raw content via MCP resource protocol.


๐Ÿ”Œ Connecting to Clients

Claude Desktop

{
  "mcpServers": {
    "filesystem": {
      "command": "python",
      "args": ["/ABSOLUTE/PATH/mcp-file-system-server/filesystem_server.py", "--sandbox", "/tmp/mcp-sandbox"]
    }
  }
}

Cursor

Settings โ†’ Features โ†’ MCP โ†’ Add Server:

  • Name: filesystem

  • Type: command

  • Command: python /ABSOLUTE/PATH/mcp-file-system-server/filesystem_server.py --sandbox /tmp/mcp-sandbox


๐Ÿ“ Project Structure

mcp-file-system-server/
โ”œโ”€โ”€ filesystem_server.py   # Main server (FastMCP + security)
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ setup.sh
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ .gitignore

๐Ÿงช Example Usage

# Read a file
read_file("/tmp/mcp-sandbox/data.txt")
# โ†’ "๐Ÿ“„ File: /tmp/mcp-sandbox/data.txt\nSize: 1,234 bytes\n..."

# Write a file
write_file("/tmp/mcp-sandbox/output/report.md", "# Report\n\nHello world!")
# โ†’ "โœ… Written 28 bytes to /tmp/mcp-sandbox/output/report.md"

# Search for Python files
search_files("**/*.py")
# โ†’ "๐Ÿ” 5 file(s) matching **/*.py:\n  ๐Ÿ“„ scripts/process.py (1,234 bytes)\n..."

๐Ÿ“œ License

MIT

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
โ€“Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/moaaz01/mcp-file-system-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server