FileOps: MinIO S3 MCP is a full-stack application for AI-powered file operations on user workspaces, built with:
- FastAPI (Python) for the backend API
- MinIO (S3-compatible object storage) for storing user ZIP workspaces and files
- LLM (via agent integration) for natural language file editing
- React + Vite + Tailwind for the frontend UI
- Upload ZIP folders: Users upload a ZIP archive, which is stored in MinIO with a unique ID.
- File browser & viewer: Browse, view, and copy the contents of files inside the uploaded ZIP.
- Prompt-based file editing: Use natural language prompts to edit, create, or manipulate files inside the ZIP using an LLM agent.
- Dynamic file list: The file list updates in real time after every agent action.
- Flexible file selection: Users can select a file, enter a custom file path, or prompt the agent without specifying a file.
- Modern UI: Responsive, beautiful React frontend with smooth UX.
- FastAPI: High-performance Python web framework for the backend API.
- MinIO: S3-compatible object storage for storing ZIPs and file data.
- Python LLM agent: Integrates with OpenAI or other LLMs for prompt-based file editing.
- React + Vite: Fast, modern frontend with hot reload and TypeScript support.
- Tailwind CSS: Utility-first CSS for rapid, beautiful UI development.
- Docker Compose: For easy local development and service orchestration.
- Upload: User uploads a ZIP file via the frontend. The backend stores it in MinIO and returns a unique ZIP ID.
- Browse: The frontend fetches and displays the file list from the ZIP (via
/list-files/{zip_id}). - View: Clicking a file fetches its content from the backend and displays it in a viewer.
- Prompt: User can select a file, enter a custom file path, or leave it blank, and submit a prompt to the agent (via
/agent-file). The agent can edit, create, or manipulate files using LLM. - Update: After each agent action, the file list is refreshed to reflect changes.
POST /upload-zip: Upload a ZIP file. Returnszip_filename(unique ID).GET /list-files/{zip_filename}: List all files in the uploaded ZIP.GET /file/{zip_filename}/{file_path}: Get the content of a file as plain text.POST /agent-file: Edit or create files using a prompt and (optionally) a file path.POST /write-file,DELETE /delete-file,POST /apply-llm-edits,POST /create-file-in-zip: Advanced file operations (see backend code for details).
- Python 3.10+
- Node.js (for frontend)
- Docker & Docker Compose (for MinIO and easy orchestration)
-
Install dependencies:
cd ressl-mcp python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
-
Configure environment:
Copy.env.exampleto.envand fill in your MinIO and LLM credentials. -
Start MinIO (S3 storage):
docker-compose up -d
-
Run FastAPI backend:
uvicorn fastapi_backend:app --host 0.0.0.0 --port 8000
-
Install dependencies:
cd frontend npm install -
Start the frontend:
npm run dev
The app will be available at http://localhost:5173.
- See
.env.examplefor all required variables (MinIO endpoint, access keys, LLM API keys, etc).
- Backend: FastAPI, MinIO, httpx, python-dotenv, pydantic, fastmcp, python-multipart, uvicorn
- Frontend: React, Vite, Tailwind CSS, TypeScript, Axios, React Icons