Skip to main content

Filesystem MCP Server

Python server implementing Model Context Protocol (MCP) for filesystem operations.

Features

  • Read/write files
  • Create/list/delete directories
  • Move files/directories
  • Search files
  • Get file metadata

Note: The server will only allow operations within directories specified via args.

API

Resources

  • file://system: File system operations interface

Tools

  • read_file

    • Read complete contents of a file
    • Input: path (string)
    • Reads complete file contents with UTF-8 encoding
  • read_multiple_files

    • Read multiple files simultaneously
    • Input: paths (string[])
    • Failed reads won't stop the entire operation
  • write_file

    • Create new file or overwrite existing (exercise caution with this)
    • Inputs:
      • path (string): File location
      • content (string): File content
  • edit_file

    • Make selective edits using advanced pattern matching and formatting
    • Features:
      • Line-based and multi-line content matching
      • Whitespace normalization with indentation preservation
      • Multiple simultaneous edits with correct positioning
      • Indentation style detection and preservation
      • Git-style diff output with context
      • Preview changes with dry run mode
    • Inputs:
      • path (string): File to edit
      • edits (array): List of edit operations
        • oldText (string): Text to search for (can be substring)
        • newText (string): Text to replace with
      • dryRun (boolean): Preview changes without applying (default: false)
    • Returns detailed diff and match information for dry runs, otherwise applies changes
    • Best Practice: Always use dryRun first to preview changes before applying them
  • create_directory

    • Create new directory or ensure it exists
    • Input: path (string)
    • Creates parent directories if needed
    • Succeeds silently if directory exists
  • list_directory

    • List directory contents with [FILE] or [DIR] prefixes
    • Input: path (string)
  • move_file

    • Move or rename files and directories
    • Inputs:
      • source (string)
      • destination (string)
    • Fails if destination exists
  • search_files

    • Recursively search for files/directories
    • Inputs:
      • path (string): Starting directory
      • pattern (string): Search pattern
      • excludePatterns (string[]): Exclude any patterns. Glob formats are supported.
    • Case-insensitive matching
    • Returns full paths to matches
  • get_file_info

    • Get detailed file/directory metadata
    • Input: path (string)
    • Returns:
      • Size
      • Creation time
      • Modified time
      • Access time
      • Type (file/directory)
      • Permissions
  • list_allowed_directories

    • List all directories the server is allowed to access
    • No input required
    • Returns:
      • Directories that this server can read/write from

Installation

git + Python

# Clone the repository
git clone https://github.com/MarcusJellinghaus/mcp_server_filesystem
cd filesystem

# Create and activate a virtual environment (optional but recommended)
python -m venv .venv
source .venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies using pip with pyproject.toml
pip install -e .

Running the Server

Previous instal required

# Enable virtual env 
source .venv/bin/activate 
# Run server with allowed paths (paths optional but recommended)
python ./src/main.py  /path/to/home /path/to/project

Alternatively, you can use uvx to run directly from GH repo uv required https://docs.astral.sh/uv/getting-started/installation/

uvx --from git+https://github.com/javillegasna/filesystem filesystem /Users/username/Desktop

Usage with Different Platforms

Claude Desktop

{
  "mcpServers": {
    "filesystem": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/javillegasna/filesystem",
        "filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir",
      ]
    }
  }
}

vscode

{
  "mcp": {
    "servers": {
      "filesystem": {
        "command": "uvx",
        "args": [
        "--from",
        "git+https://github.com/javillegasna/filesystem",
        "filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir",
      ]
      }
    }
  }
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_javillegasna_filesystem-0.1.0.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_javillegasna_filesystem-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_javillegasna_filesystem-0.1.0.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_javillegasna_filesystem-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c2279dbc2e5156a4b15ad632bb57f0f86f394d346e1f16b7ad752b20464d292e
MD5 4fd2e2d4406b21257f0f85bec8662d66
BLAKE2b-256 6a5784f343a8e2e7921e487c78b703d4c4a0bf7bc5b93ac466c615cb8d5bf1be

See more details on using hashes here.

File details

Details for the file iflow_mcp_javillegasna_filesystem-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_javillegasna_filesystem-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_javillegasna_filesystem-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 96e0ccf85c43ab2756ba8010b5450c8b0a7fff354e42d6db64a869c8782dba12
MD5 51c67fb8b7468f1424947ec292ad616e
BLAKE2b-256 30f1ec69496dbfbdcf3a680d6c98ae5a8e676ba6b5d0d8c7b805a78a295f450a

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page