File Organizer MCP
A powerful, security-hardened MCP server for intelligent file organization. Provides high-level atomic tools for organizing files into categories, detecting duplicates, extracting EXIF/ID3 metadata, scheduling automatic organization, and more — for use with Claude, Cursor, and Gemini CLI.
README
File Organizer MCP Server
Version: 3.4.2 | MCP Protocol: 2024-11-05 | Node: ≥18.0.0
New in v3.3.0 - Smart Organization:
organize_smart- Auto-detects and organizes mixed folders (music, photos, documents)organize_music- Music by Artist/Album structure with ID3 metadataorganize_photos- Photos by EXIF date with GPS strippingorganize_by_content- Documents by topic extractionbatch_read_files- Read multiple files efficiently
Previous v3.2.8:
- Enhanced metadata extraction, security screening, and metadata cache system
Why Specialized Tools • Quick Start • Features • Tools • Examples • API • Security • Architecture
A powerful, security-hardened Model Context Protocol (MCP) server for intelligent file organization.
Why File Organizer MCP?
Traditional filesystem MCP servers provide primitive tools: read, write, make, delete. When an AI organizes folders using only these tools, it results in:
- Complexity - AI must plan multiple steps for every move and rename.
- Token Inefficiency - Describing every operation consumes significant context.
- Risk of Hallucination - Increased steps increase the probability of errors.
- Latency - Each primitive operation requires independent reasoning.
The Solution
We provide high-level, atomic tools that encapsulate complex file operations:
| Primitive Approach | File Organizer MCP |
|---|---|
Multiple read/write/rename calls |
organize_files() - Atomic execution |
| 50+ reasoning steps | 1 reasoning step |
| High token usage | Minimal token usage |
| Error-prone | Rollback-safe operations |
Install from MCP Registry • View on NPM • Report Issues
Quick Start
One-Command Setup
Run the following command to start the interactive setup:
npx file-organizer-mcp --setup
The wizard will:
- Auto-detect installed AI clients (Claude Desktop, Cursor, Windsurf, Cline, etc.).
- Configure clients automatically.
- Guide you through folder selection and preferences.
Requirements
- Node.js 18+
Common Commands
Once configured, you can ask your AI:
- "Organize my Downloads folder"
- "Find duplicate files in my Documents"
- "Show me my largest files"
Installation Methods
| Method | Command | Use Case |
|---|---|---|
| npx | npx file-organizer-mcp --setup |
Occasional use / Trial |
| Global | npm install -g file-organizer-mcp |
Regular use / Faster startup |
Features
- Categorization - Intelligent sorting into 12+ categories.
- Scheduling - Cron-based automatic organization.
- Duplicate Detection - Content hashing (SHA-256) for precise identification.
- Metadata Extraction - EXIF for photos, ID3 for music, and document topic extraction.
- Smart Organization - Unified strategy detecting mixed file types.
- Safe Operations - Dry-run mode, rollback support, and atomic moves.
- Security - TOCTOU mitigation, path traversal protection, and metadata scrubbing.
- Multi-Platform - Native support for Windows, macOS, and Linux.
Tools Reference
Core Tools
file_organizer_scan_directory
Scan directory with detailed file information.
directory(required): Full path to directory.include_subdirs(optional): Recursive scan.
file_organizer_read_file
Secure file reading with 8-layer validation.
path(required): Absolute path.encoding(optional): utf-8, base64, or binary.
file_organizer_organize_smart
Unified tool that handles music, photos, and documents automatically using the best strategy for each.
file_organizer_batch_rename
Rename multiple files using patterns, regex, or numbering.
file_organizer_undo_last_operation
Reverse previous organization actions.
File Categories
| Category | Typical Extensions |
|---|---|
| Executables | .exe, .msi, .bat, .sh |
| Videos | .mp4, .avi, .mkv, .mov |
| Documents | .pdf, .doc, .docx, .txt, .md |
| Images | .jpg, .jpeg, .png, .gif, .webp |
| Audio | .mp3, .wav, .flac, .m4a |
| Archives | .zip, .rar, .7z, .tar.gz |
| Code | .py, .js, .ts, .java, .go, .json |
Example Workflows
Intelligent Downloads Cleanup
- Scan -> Review file distribution and space usage.
- Analyze -> Identify duplicates and obsolete files.
- Execute -> Atomic organization into categorized folders.
- Finds duplicates → Found 45 duplicate groups, wasted 2.3 GB
- Shows largest files → old_backup.zip: 5.2 GB
- Previews organization → Shows planned moves and conflicts
- Asks for confirmation
- Organizes files → ✅ Organized 1,247 files into 8 category folders
Result: Clean, organized Downloads folder with duplicates identified
---
### Workflow 2: Project Organization
User: "Claude, organize my project folder at ~/myproject"
Claude:
- Scans the project → 423 files across multiple subdirectories
- Identifies file types → Code (289), Assets (87), Docs (47)
- Suggestions organization → Preserves src/ structure, organizes root files
- Previews changes → Shows (47) items to organize
- Executes → Moves config files, readmes, screenshots to proper folders
Result: Clean project structure with organized documentation and assets
---
### Workflow 3: Duplicate File Management
User: "Claude, find and analyze duplicates in C:/Users/[YOUR_USERNAME]/Documents"
Claude:
- Scans for duplicates → Finds 23 duplicate groups
- Analyzes each group → Scores files by location, name quality, age
- Suggests which to keep → Keeps "/Documents/Important/file.pdf"
- Suggests which to delete → Delete "/Downloads/file (1).pdf"
- Shows wasted space → Total: 1.8 GB can be reclaimed
User can manually delete or ask Claude to organize to remove duplicates
---
### Workflow 4: Large File Discovery
User: "Claude, show me the 20 largest files taking up space in my Downloads folder"
Claude:
- Analyzes directory size → Total: 45.2 GB
- Finds largest files:
- old_backup_2023.zip: 12.3 GB (2 years old)
- movie_collection.mkv: 8.7 GB
- presentation_final.pptx: 890 MB
- Suggests cleanup → Archive or delete old backups
- Shows duplicates in large files → Some large files have copies
Result: Clear visibility into space usage with actionable insights
---
### Workflow 5: Music Organization
User: "Claude, organize my music folder at C:/Users/[YOUR_USERNAME]/Music"
Claude:
- Scans directory → Shows 456 music files, 2.3 GB
- Extracts metadata → Reads ID3 tags for artist, album, and title
- Previews organization → Shows planned structure: Artist/Album/Title.mp3
- Asks for confirmation
- Organizes files → ✅ Organized 456 music files into 32 artist folders
Result: Music files organized by Artist/Album/Title structure using ID3 metadata
Before: ├── Downloads/ │ ├── song1.mp3 │ ├── track02.mp3 │ └── music_file.mp3
After: ├── Music/ │ ├── Coldplay/ │ │ ├── A Rush of Blood to the Head/ │ │ │ ├── Clocks.mp3 │ │ │ └── The Scientist.mp3 │ └── Radiohead/ │ ├── OK Computer/ │ │ ├── Paranoid Android.mp3 │ │ └── Karma Police.mp3
---
### Workflow 6: Photo Organization
User: "Claude, organize my photos at C:/Users/[YOUR_USERNAME]/Pictures"
Claude:
- Scans directory → Shows 1,234 photos, 4.5 GB
- Extracts EXIF metadata → Reads date taken from EXIF tags
- Previews organization → Shows planned structure: YYYY/MM/DD
- Asks for confirmation
- Organizes files → ✅ Organized 1,234 photos into date-based folders
Result: Photos organized by capture date (YYYY/MM/DD) using EXIF metadata
Before: ├── Pictures/ │ ├── IMG_001.jpg │ ├── photo123.png │ └── DSC_4567.raw
After: ├── Pictures/ │ ├── 2023/ │ │ ├── 12/ │ │ │ ├── 25/ │ │ │ │ ├── IMG_001.jpg │ │ │ └── 31/ │ │ │ └── photo123.png │ └── 2024/ │ ├── 01/ │ │ └── 15/ │ │ └── DSC_4567.raw
---
### Workflow 7: Security Screening with Metadata
User: "Claude, scan my Documents folder for security issues"
Claude:
- Scans directory → Shows 567 documents, 1.2 GB
- Extracts metadata → Reads file metadata and content signatures
- Performs security screening →
- Found 3 files with sensitive metadata
- Found 1 file with potentially malicious content
- Shows detailed report →
- "report.pdf" contains EXIF GPS coordinates
- "resume.docx" contains personal identification information
- Suggests actions → Redact metadata, quarantine file
Result: Comprehensive security scan with metadata-based threat detection
---
### Workflow 8: Set Up Automatic Organization
User: "Claude, automatically organize my Downloads folder every day at 9am"
Claude:
- Sets up watch directory → file_organizer_watch_directory({ directory: "/Users/john/Downloads", schedule: "0 9 * * *", min_file_age_minutes: 5 })
- Confirms setup → "Downloads folder will be organized daily at 9:00 AM"
- Shows current watches → Lists all watched directories
User: "Also watch my Desktop folder every hour"
Claude: 4. Adds second watch → file_organizer_watch_directory({ directory: "/Users/john/Desktop", schedule: "0 * * * *", max_files_per_run: 50 })
Result: Automatic background organization with smart scheduling
---
## <a id="security-configuration"></a>Security Configuration 🔐
### Security Score: 10/10 🌟
The server uses a **Secure by Default** approach. Access is restricted to a specific whitelist of user directories. All system directories are blacklisted.
### ✅ Allowed Directories (Default)
The server automatically detects and allows access to these safe user locations:
| Platform | Allowed Directories |
| ----------- | ------------------------------------------------------------------------------------------------------- |
| **Windows** | `Desktop`, `Documents`, `Downloads`, `Pictures`, `Videos`, `Music`, `OneDrive`, `Projects`, `Workspace` |
| **macOS** | `Desktop`, `Documents`, `Downloads`, `Movies`, `Music`, `Pictures`, `iCloud Drive`, `Projects` |
| **Linux** | `Desktop`, `Documents`, `Downloads`, `Music`, `Pictures`, `Videos`, `~/dev`, `~/workspace` |
_> Note: Only directories that actually exist on your system are enabled._
### ❌ Always Blocked
To prevent accidents, the following are **always blocked**, even if added to config:
- **Windows:** `C:\Windows`, `Program Files`, `AppData`, `$Recycle.Bin`
- **macOS:** `/System`, `/Library`, `/Applications`, `/private`, `/usr`
- **Linux:** `/etc`, `/usr`, `/var`, `/root`, `/sys`, `/proc`
- **Global:** `node_modules`, `.git`, `.vscode`, `.idea`, `dist`, `build`
### ⚙️ Custom Configuration
You can customize behavior by editing the user configuration file.
**Config Location:**
- **Windows:** `%APPDATA%\file-organizer-mcp\config.json`
- **macOS:** `$HOME/Library/Application Support/file-organizer-mcp/config.json`
- **Linux:** `$HOME/.config/file-organizer-mcp/config.json`
**How to Add Directories:**
1. Open `config.json`
2. Add paths to `customAllowedDirectories`:
```json
{
"customAllowedDirectories": [
"C:\\Users\\Name\\My Special Folder",
"D:\\Backups"
]
}
💡 Tip: You can copy a folder path directly from your file explorer's address bar and paste it into
customAllowedDirectories.
💾 External Drives & Network Mounts
By default, for security reasons, you cannot add paths outside your home directory. If you need to access external volumes (like /Volumes/My Drive on macOS or /media/user/usb on Linux), you must explicitly opt-in by adding "allowExternalVolumes": true:
{
"allowExternalVolumes": true,
"customAllowedDirectories": [
"/Volumes/MyExternalDrive",
"/Volumes/Photography Backup"
]
}
(Note: Windows drive letters like D:\ work out of the box and do not require this flag.)
- Restart Claude Desktop.
Conflict Strategy
Set your preferred default conflict resolution strategy:
{
"conflictStrategy": "rename"
}
Available strategies:
"rename"(default) - Renames new file (e.g.,file (1).txt)"skip"- Keeps existing file, skips new one"overwrite"- Replaces existing file (creates backup first)
Auto-Organize Schedule (Legacy)
Simple schedule configuration (for basic hourly/daily/weekly):
{
"autoOrganize": {
"enabled": true,
"schedule": "daily"
}
}
For advanced cron-based scheduling, use the file_organizer_watch_directory tool.
Security Defenses
| Attack Type | Protection Mechanism | Status |
|---|---|---|
| Unauthorized Access | Whitelist + Blacklist Enforcement | ✅ Protected |
| Path Traversal | 8-Layer Validation Pipeline | ✅ Protected |
| Symlink Attacks | Real Path Resolution | ✅ Protected |
| DoS | Resource Limits (Files, Depth, Size) | ✅ Protected |
🐛 Troubleshooting
MCP Server Not Showing Up
- ✅ Check config file path is correct
- ✅ Verify Node.js v18+ is installed:
node --version - ✅ Restart Claude Desktop completely
- ✅ Check path in
claude_desktop_config.jsonis correct
Permission Errors
- ✅ Windows: Run Claude Desktop as Administrator
- ✅ Mac/Linux: Check folder permissions:
ls -la - ✅ Ensure write permissions in target directory
Files Not Moving
- ✅ Verify
dry_runmode is NOT enabled - ✅ Check files aren't locked by other programs
- ✅ Ensure sufficient disk space
- ✅ Review error messages in operation summary
Technical Stack 🛠️
File Organizer MCP is built with modern web technologies and follows strict security practices:
Core Dependencies
- MCP Server:
@modelcontextprotocol/sdk- Model Context Protocol implementation - Security: Zod schema validation, path traversal protection
- Metadata Extraction:
music-metadata- ID3 tag extraction for audio filesexif-parser- EXIF metadata extraction for images
- Scheduling:
node-cron- Cron-based schedule management - Interactive UI: Ink + React - Terminal user interface
- Prompts:
@inquirer/prompts- Interactive CLI prompts - Utilities: Chalk (color), minimatch (glob patterns)
Security Features
- 8-layer path validation - Blocks traversal attacks and URI encoding tricks
- Sensitive file detection - Blocks access to .env, .ssh, passwords, keys
- Rate limiting - 120 requests/minute, 2000 requests/hour
- TOCTOU protection - File descriptor-based operations
- Metadata security - Redact sensitive metadata (GPS, personal info)
Performance Optimizations
- Metadata caching - 7-day cache with file hash validation
- Parallel processing - Configurable concurrency for batch operations
- Stream processing - Handles large files without memory issues
- Memory limits - Prevents excessive resource consumption
Architecture 🏗️
Screen-Then-Enrich Architecture
The File Organizer MCP server implements a "Screen-Then-Enrich" architecture for secure and efficient file operations:
┌───────────────────────────────────────────────────────────┐
│ MCP Client (LLM) │
└─────────────────────────┬─────────────────────────────────┘
│ JSON-RPC 2.0
┌─────────────────────────▼─────────────────────────────────┐
│ MCP Server Layer │
│ (server.ts - Protocol Handler) │
└─────────────────────────┬─────────────────────────────────┘
│
┌─────────────────────────▼─────────────────────────────────┐
│ Security Screening │
│ - Path validation & containment checks │
│ - Sensitive file detection │
│ - Rate limiting │
└─────────────────────────┬─────────────────────────────────┘
│
┌─────────────────────────▼─────────────────────────────────┐
│ Metadata Enrichment │
│ - EXIF extraction for images (camera, date, GPS) │
│ - ID3 extraction for audio (artist, album, title) │
│ - Document metadata (PDF, DOCX properties) │
└─────────────────────────┬─────────────────────────────────┘
│
┌─────────────────────────▼─────────────────────────────────┐
│ Services Layer │
│ ┌────────────┬──────────────┬─────────────┬──────────┐ │
│ │ Path │ Organizer │ Hash │ Scanner │ │
│ │ Validator │ Service │ Calculator │ Service │ │
│ └────────────┴──────────────┴─────────────┴──────────┘ │
└─────────────────────────┬─────────────────────────────────┘
│
┌─────────────────────────▼─────────────────────────────────┐
│ File System │
└───────────────────────────────────────────────────────────┘
Key Architecture Principles
- Security First - Multi-layer validation before any file operations
- Metadata-Driven - Content-aware organization using extracted metadata
- Caching Strategy - 7-day metadata cache with file hash validation
- Batch Processing - Configurable concurrency for large operations
- Atomic Operations - Safe file operations with rollback support
API Documentation 📚
New Metadata APIs
file_organizer_inspect_metadata
Description: Extracts comprehensive metadata from files with privacy controls
Parameters:
file: string (required) - Full path to the fileresponse_format: 'json' | 'markdown' (optional, default: 'markdown')
Returns:
- For images: EXIF data (camera, date, dimensions, ISO, aperture)
- For audio: ID3 tags (artist, album, title, year, genre)
- For documents: file properties
Metadata Cache System
Configuration:
{
"metadataCache": {
"enabled": true,
"maxAge": 604800000, // 7 days in ms
"maxEntries": 10000,
"cacheDir": ".cache"
}
}
Cache Stats:
// Get cache statistics
const stats = await getCacheStats();
// {
// totalEntries: 1500,
// audioEntries: 800,
// imageEntries: 700,
// cacheSize: 256000
// }
📝 Important Notes
- ⚠️ Organizes files in root directory only, not subdirectories (by default)
- ⚠️ Existing category folders won't be reorganized (prevents loops)
- ✅ File extensions are case-insensitive
- ✅ Original modification dates are preserved
- ✅ Hidden files (starting with
.) are automatically skipped - ✅ Maximum 10,000 files processed per operation (security limit)
- ✅ Maximum 10 directory levels scanned (security limit)
- ✅ Rollback support for undo operations
🤝 Contributing
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
Development Setup
git clone https://github.com/kridaydave/File-Organizer-MCP.git
cd File-Organizer-MCP
npm install
npm run build
npm test
Reporting Issues
🚨 Security vulnerabilities: Email technocratix902@gmail.com
🐛 Bugs/features: GitHub Issues
📚 Documentation
- API.md - Complete tool reference
- ARCHITECTURE.md - Technical architecture and design patterns
- CONTRIBUTING.md - Contribution guidelines
- MIGRATION.md - v2 to v3 upgrade guide
- CHANGELOG.md - Version history
📄 License
MIT License - see LICENSE file for details
🙏 Acknowledgments
- Anthropic - For the Model Context Protocol specification
- NetworkChuck - For the MCP tutorial that inspired this project
- The MCP Community - For feedback and support
📞 Support
- MCP Registry: View Listing
- NPM Package: View on NPM
- Issues: GitHub Issues
- MCP Spec: Model Context Protocol
Happy Organizing! 🎯
Built with ❤️ for the MCP community
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.