read_fileLABSCO SUMMARY
A filesystem with a fence, and the fence has a default worth changing.
Six ordinary operations, all confined to one directory — which is the reason to pick this over a general file server. Set the base directory before the first write: without it the root is /tmp/mcp_file_system, and your files land somewhere the machine may clear.
What it is
A small Python server exposing six file operations. Every path is resolved inside a base directory, and attempts to climb out of it with .. are refused.
What you get
- read_file and write_file
- list_directory for a folder's contents
- delete_file
- move_file for a move or a rename, copy_file for a copy
- Paths resolved relative to the base directory; access outside it is blocked
- Errors returned as messages that say what went wrong
Requirements
Python with uv, run from a clone. An environment variable sets the sandbox root — if it is not set, everything happens under /tmp/mcp_file_system.
Setup effort
Build from source
USE CASES
Letting an assistant work on files without giving it your whole disk
Point the base directory at one project folder; anything outside it is refused rather than silently allowed.
Finding out what is actually in a folder
List the directory before reading, so the model works from the real contents instead of guessing filenames.
Reorganising a set of files
Move or rename them in place, and copy the ones you want to keep a version of.
Clearing out generated files between runs
Delete inside the sandbox only — a wrong path fails rather than removing something elsewhere.
6 tools
Listed in project docs. Your client may show a different list.
write_filelist_directorydelete_filemove_filecopy_fileBEFORE YOU INSTALL
What to know first
Tools you get
6 tools named in the project's documentation.
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/gleb-roma/mcp_file_system
cd mcp_file_system
make install
export MCP_FILE_SYSTEM_BASE_DIR="<YOUR_MCP_FILE_SYSTEM_BASE_DIR>"
make runMCP Clients
Claude Desktop
{
"mcpServers": {
"file-system": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_MCP_FILE_SYSTEM>",
"run",
"src/main.py"
],
"env": {
"MCP_FILE_SYSTEM_BASE_DIR": "<YOUR_MCP_FILE_SYSTEM_BASE_DIR>"
}
}
}
}Set MCP_FILE_SYSTEM_BASE_DIR here: Claude Desktop starts the server itself, so an export in your terminal does not reach it, and without it files land in /tmp/mcp_file_system. <YOUR_PATH_TO_MCP_FILE_SYSTEM> is your clone's path.