Metadata-Version: 2.4
Name: omni-fs-mcp
Version: 0.1.8
Summary: Omni-FS-MCP is an MCP server that supports managing multiple types of file systems, such as local FS, S3, R2, B2, WebDAV, and others, in one MCP server. It is built on top of OpenDAL.
Project-URL: Homepage, https://github.com/vaayne/omni-fs-mcp
Project-URL: Repository, https://github.com/vaayne/omni-fs-mcp
Project-URL: Issues, https://github.com/vaayne/omni-fs-mcp/issues
Author-email: Vaayne <liu.vaayne@gmail.com>
License: MIT
License-File: LICENSE
Keywords: filesystem,mcp,opendal,s3,webdav
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Filesystems
Requires-Python: >=3.11
Requires-Dist: mcp>=1.11.0
Requires-Dist: opendal>=0.45.20
Requires-Dist: uvicorn>=0.35.0
Description-Content-Type: text/markdown

# 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

MIT