# MCP File System Server A Model Context Protocol (MCP) server that provides secure file system operations through a sandboxed environment. ## Features - **Secure File Operations**: All operations are confined to a configurable base directory - **Path Traversal Protection**: Prevents access to files outside the allowed directory - **Comprehensive Tools**: Read, write, list, delete, move, and copy files - **Error Handling**: Robust error handling with informative messages ## Installation 1. Install dependencies: ```bash make install ``` 2. Set the base directory (optional): ```bash export MCP_FILE_SYSTEM_BASE_DIR="/path/to/your/sandbox" ``` ## Usage ### Running the Server ```bash make run ``` Or directly: ```bash uv run src/main.py ``` ### Available Tools - `read_file(file_path: str)` - Read file contents - `write_file(file_path: str, content: str)` - Write content to file - `list_directory(directory_path: str)` - List directory contents - `delete_file(file_path: str)` - Delete a file - `move_file(source_path: str, destination_path: str)` - Move/rename a file - `copy_file(source_path: str, destination_path: str)` - Copy a file ## Configuration The server uses the `MCP_FILE_SYSTEM_BASE_DIR` environment variable to set the base directory for all file operations. If not set, it defaults to `/tmp/mcp_file_system`. ## Security - All paths are resolved relative to the base directory - Path traversal attacks (using `..`) are prevented - Access outside the base directory is blocked - File operations are sandboxed ## Testing Test that the server imports correctly: ```bash make test ``` ## Development Run in development mode with auto-reload: ```bash make dev ``` ## Integration with Claude Desktop To use this server with Claude Desktop, add the following to your `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "file-system": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/mcp_file_system", "run", "src/main.py" ] } } } ``` Replace `/ABSOLUTE/PATH/TO/mcp_file_system` with the actual absolute path to your project directory.