Skip to main content
Glama

MCP File Operations Server

by prithvi-seri
README.md6.16 kB
# MCP File Operations Server A Python MCP (Model Context Protocol) server that provides read and write access to files in the `documents` subfolder for use with Claude Desktop. ## Features - **Read files**: Read the contents of any file in the documents folder - **Write files**: Create or overwrite files in the documents folder - **List files**: Browse files and directories in the documents folder with search capabilities - **Delete files/directories**: Remove files or directories from the documents folder - **Create directories**: Create new directories within the documents folder - **Security**: Path validation to prevent access outside the documents folder - **All file types**: Supports all file types without restrictions - **Search functionality**: Find files using patterns and recursive search ## Installation ### Using Poetry (Recommended) 1. Install Poetry if you haven't already: ```bash curl -sSL https://install.python-poetry.org | python3 - ``` 2. Install dependencies: ```bash poetry install ``` 3. Activate the virtual environment: ```bash poetry shell ``` ### Using pip 1. Install the required dependencies: ```bash pip install -r requirements.txt ``` 2. Ensure the `documents` folder exists in your project directory. ## Usage with Claude Desktop ### 1. Add the server to Claude Desktop 1. Open Claude Desktop 2. Go to Settings → MCP Servers 3. Click "Add Server" 4. Configure the server: - **Name**: File Operations - **Command**: `poetry` (if using Poetry) or `python` - **Arguments**: `run run_server.py` (if using Poetry) or `run_server.py` (if using pip) - **Working Directory**: Path to your project folder ### 2. Available Tools Once connected, Claude will have access to these tools: #### `read_file` Read the contents of a file from the documents folder. **Parameters:** - `file_path` (required): Path to the file relative to the documents folder **Example:** ``` Read the file "notes.txt" from the documents folder ``` #### `write_file` Write content to a file in the documents folder. **Parameters:** - `file_path` (required): Path to the file relative to the documents folder - `content` (required): Content to write to the file - `mode` (optional): Write mode - "w" for overwrite (default), "a" for append **Example:** ``` Write "Hello World" to a file called "greeting.txt" ``` #### `list_files` List all files and directories in the documents folder with search capabilities. **Parameters:** - `subdirectory` (optional): Specific subdirectory to list files from - `search_pattern` (optional): Search pattern to filter files (supports wildcards like *.txt, *.py, etc.) - `recursive` (optional): Whether to search recursively in subdirectories (default: false) **Examples:** ``` List all files in the documents folder List all Python files recursively List all files in the "projects" subdirectory Search for files matching "*.md" pattern ``` #### `delete_file` Delete a file or directory from the documents folder. **Parameters:** - `file_path` (required): Path to the file or directory relative to the documents folder - `recursive` (optional): Whether to delete directories recursively (default: false) **Examples:** ``` Delete the file "old_notes.txt" Delete the directory "temp_folder" recursively ``` #### `create_directory` Create a new directory in the documents folder. **Parameters:** - `dir_path` (required): Path to the directory relative to the documents folder **Example:** ``` Create a directory called "projects" ``` ## Security Features - **Path validation**: All file operations are restricted to the `documents` folder - **Directory traversal protection**: Prevents access to parent directories - **All file types supported**: No restrictions on file extensions - **Error handling**: Comprehensive error messages for debugging ## Supported File Types The server supports **all file types** without any restrictions. You can read, write, and manage any file format including: - Text files (.txt, .md, .py, .js, .html, .css, etc.) - Data files (.json, .csv, .xml, .yaml, etc.) - Binary files (.pdf, .doc, .xls, .zip, etc.) - Images (.jpg, .png, .gif, etc.) - And any other file type ## Testing the Server ### Using Poetry You can test the server using Poetry: ```bash # Run the server directly poetry run python run_server.py # Run tests poetry run pytest # Run tests with coverage poetry run pytest --cov=mcp_file_server ``` ### Using pip You can test the server manually by running: ```bash python run_server.py ``` The server will start and wait for MCP protocol messages on stdin/stdout. ## Troubleshooting ### Common Issues 1. **Import errors**: Make sure you've installed the requirements: ```bash # Using Poetry poetry install # Using pip pip install -r requirements.txt ``` 2. **Permission errors**: Ensure the `documents` folder has write permissions 3. **Path issues**: The server automatically creates the `documents` folder if it doesn't exist 4. **Claude Desktop connection**: Make sure the working directory in Claude Desktop settings points to your project folder 5. **Poetry not found**: Install Poetry using the official installer: ```bash curl -sSL https://install.python-poetry.org | python3 - ``` ### Logging The server includes logging to help debug issues. Check the console output for error messages. ## Development ### Using Poetry To modify the server: 1. Edit `mcp_file_server/server.py` to add new tools or modify existing ones 2. Modify the `DOCUMENTS_DIR` constant to change the base directory 3. All file types are supported by default - no need to modify file type restrictions 4. Run tests: `poetry run pytest` 5. Format code: `poetry run black .` 6. Sort imports: `poetry run isort .` ### Using pip To modify the server: 1. Edit `mcp_file_server/server.py` to add new tools or modify existing ones 2. Modify the `DOCUMENTS_DIR` constant to change the base directory 3. All file types are supported by default - no need to modify file type restrictions ## License This project is open source and available under the MIT License.

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/prithvi-seri/mcp-server'

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