omni-fs-mcp
by vaayne
README.md
# Omni-FS MCP Server
An MCP server that provides unified access to multiple file systems simultaneously through OpenDAL.
## Installation
```bash
pip install omni-fs-mcp
```
## Quick Start
### Single Backend
```bash
# Local filesystem
omni-fs-mcp "fs://"
# S3
omni-fs-mcp --transport http "s3://bucket?region=us-east-1&access_key_id=xxx&secret_access_key=yyy"
# WebDAV
omni-fs-mcp "webdav://server.com/path?username=user&password=pass"
# Memory (testing)
omni-fs-mcp "memory://"
```
### Multi-Backend with Config File
Create `backends.json`:
```json
{
"backends": [
{
"name": "local",
"url": "fs://",
"description": "Local filesystem",
"default": true
},
{
"name": "s3-prod",
"url": "s3://bucket?region=us-east-1&access_key_id=...",
"description": "Production S3"
}
]
}
```
Run with config:
```bash
# Stdio (default)
omni-fs-mcp backends.json
# HTTP
omni-fs-mcp --transport http --config backends.json --port 8080
```
## Usage
### Command Options
```bash
omni-fs-mcp [OPTIONS] [URL_OR_CONFIG]
Options:
--config FILE JSON configuration file
--transport TYPE stdio (default) or http
--port PORT HTTP port (default: 8000)
--host HOST HTTP host (default: localhost)
```
### Available Tools
**File Operations:**
- `list_files(path, backend=None)` - List files and directories
- `read_file(path, backend=None)` - Read file contents
- `write_file(path, content, backend=None)` - Write to file
- `copy_file(src, dst, src_backend=None, dst_backend=None)` - Copy files
- `rename_file(src, dst, backend=None)` - Rename/move files
- `create_dir(path, backend=None)` - Create directory
- `stat_file(path, backend=None)` - Get file metadata
**Backend Management:**
- `register_backend(name, url, ...)` - Add new backend
- `list_backends()` - Show all backends
- `set_default_backend(name)` - Set default backend
- `remove_backend(name)` - Remove backend
- `check_backend_health(backend=None)` - Check connectivity
## Supported Backends
| Type | URL Example |
|------|-------------|
| Local | `fs://` |
| S3 | `s3://bucket?region=us-east-1&access_key_id=...` |
| WebDAV | `webdav://server.com/path?username=user&password=pass` |
| Memory | `memory://` |
| FTP | `ftp://server.com?username=user&password=pass` |
| HTTP | `https://api.example.com` |
## Examples
### Cross-Backend Copy
```python
# Backup to S3
copy_file("/local/file.txt", "/backup/file.txt",
src_backend="local", dst_backend="s3-backup")
```
### Runtime Backend Management
```python
# Add temporary backend
register_backend("temp", "memory://", description="Temp storage")
# Use it
write_file("/test.txt", "content", backend="temp")
```
## Development
```bash
git clone <repo>
cd omni-fs-mcp
uv sync
# Run locally
uv run omni-fs-mcp "memory://"
```
## License
MITTDQS
A3.6/5.0
Scored across 13 tools
Disambiguation5/5
Each tool targets a distinct operation: file reading, writing, copying, renaming, listing, directory creation, and backend management. No overlap or ambiguity.
Naming Consistency5/5
All tools follow a consistent snake_case verb_noun pattern (e.g., write_file, list_backends), making them predictable and easy to understand.
Tool Count5/5
With 13 tools, the server covers both file operations and backend management comprehensively without being bloated.
Completeness3/5
The file operations cover most CRUD but are missing a delete file tool, which is a significant gap for a file system server. Backend management seems complete.
Maintenance
ActivityInactive
ResponsivenessNo issues