This project provides a FastMCP server that exposes tools for performing bulk file and folder operations. It includes centralized exception handling for filesystem operations.
The server provides the following tools, categorized by their functionality:
-
call_tool_bulk
: Call a single tool registered on this MCP server multiple times with a single request. Useful for speeding up what would otherwise take several individual tool calls. -
call_tools_bulk
: Call multiple tools registered on this MCP server in a single request. Each call can be for a different tool and can include different arguments. Useful for speeding up what would otherwise take several individual tool calls.
To add bulk tools to your FastMCP server, see jlowin/fastmcp#215
These tools are available under the file
server namespace.
read
: Reads the content of a file at the specified pathcreate
: Creates a file with the specified contentappend
: Appends content to an existing fileerase
: Erases the content of a filemove
: Moves a file from source to destinationdelete
: Deletes a file at the specified path
These tools are available under the folder
server namespace.
create
: Creates a folder at the specified pathread_all
: Returns the contents of all of the files in a folder (optionally, recursively). This can be expensive!list
: Lists the contents of a folder (optionally, recursively)move
: Moves a folder from source to destinationdelete
: Deletes a folder at the specified pathempty
: Empties a folder by deleting all its contents
You can disable specific file tools by setting the DISABLE_FILE_TOOLS
to an array of tool names you want to disable. For example, to disable the file_read
tool, set DISABLE_FILE_TOOLS=["file_read"]
.
You can disable specific folder tools by setting the DISABLE_FOLDER_TOOLS
to an array of tool names you want to disable. For example, to disable the folder_create
tool, set DISABLE_FOLDER_TOOLS=["folder_create"]
.
Bulk tools cannot currently be disabled.
- Open the command palette (Ctrl+Shift+P or Cmd+Shift+P).
- Type "Settings" and select "Preferences: Open User Settings (JSON)".
- Add the following MCP Server configuration
{
"mcp": {
"servers": {
"Filesystem Operations": {
"command": "uvx",
"args": [
"https://github.com/strawgate/mcp-many-files.git"
]
}
}
}
}
Simply add the following to your McpServer configuration. Edit the AlwaysAllow list to include the tools you want to use without confirmation.
"Filesystem Operations": {
"command": "uvx",
"args": [
"https://github.com/strawgate/mcp-many-files.git"
],
"alwaysAllow": [
"file_read",
"file_create",
"file_append",
"file_erase",
"file_move",
"file_delete",
"folder_create",
"folder_contents",
"folder_move",
"folder_delete",
"folder_empty",
"call_tool_bulk",
"call_tools_bulk"
]
},
- Clone the repository:
# Replace with the actual repository URL git clone https://github.com/strawgate/filesystem-operations-mcp.git cd filesystem-operations-mcp
- Create a virtual environment and install dependencies:
uv venv source .venv/bin/activate uv sync --extra dev
- Run the server locally for testing:
python -m filesystem-operations-mcp.server # or using the installed script filesystem-operations-mcp
You can also debug with vscode via the built in debug launch configuration. To point your MCP Client to this local server, use the following MCP server configuration:
"filesystem_operations_mcp": {
"url": "http://localhost:8000/sse",
"disabled": true,
"autoApprove": [],
"timeout": 30,
"alwaysAllow": []
}
You can also set your uvx command to point to a branch on the repository via `"git+https://github.com/strawgate/filesystem-operations-mcp@branch-name"`.