内容
# 全文件系统统一访问服务器
通过 OpenDAL 提供多个文件系统的统一访问服务。
## 安装
```bash
pip install omni-fs-mcp
```
## 快速开始
### 单一后端
```bash
# 本地文件系统
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"
# 内存(测试)
omni-fs-mcp "memory://"
```
### 多后端配置文件
创建 `backends.json`:
```json
{
"backends": [
{
"name": "local",
"url": "fs://",
"description": "本地文件系统",
"default": true
},
{
"name": "s3-prod",
"url": "s3://bucket?region=us-east-1&access_key_id=...",
"description": "生产环境 S3"
}
]
}
```
使用配置文件运行:
```bash
# 标准输入输出(默认)
omni-fs-mcp backends.json
# HTTP
omni-fs-mcp --transport http --config backends.json --port 8080
```
## 使用
### 命令选项
```bash
omni-fs-mcp [选项] [URL 或 配置文件]
选项:
--config 文件 JSON 配置文件
--transport 类型 stdio(默认)或 http
--port 端口 HTTP 端口(默认:8000)
--host 主机 HTTP 主机(默认:localhost)
```
### 可用工具
**文件操作:**
- `list_files(路径, 后端=None)` - 列出文件和目录
- `read_file(路径, 后端=None)` - 读取文件内容
- `write_file(路径, 内容, 后端=None)` - 写入文件
- `copy_file(源路径, 目标路径, 源后端=None, 目标后端=None)` - 复制文件
- `rename_file(源路径, 目标路径, 后端=None)` - 重命名或移动文件
- `create_dir(路径, 后端=None)` - 创建目录
- `stat_file(路径, 后端=None)` - 获取文件元数据
**后端管理:**
- `register_backend(名称, URL, ...)` - 添加新后端
- `list_backends()` - 显示所有后端
- `set_default_backend(名称)` - 设置默认后端
- `remove_backend(名称)` - 删除后端
- `check_backend_health(后端=None)` - 检查连接性
## 支持的后端
| 类型 | URL 示例 |
|------|-------------|
| 本地 | `fs://` |
| S3 | `s3://bucket?region=us-east-1&access_key_id=...` |
| WebDAV | `webdav://server.com/path?username=user&password=pass` |
| 内存 | `memory://` |
| FTP | `ftp://server.com?username=user&password=pass` |
| HTTP | `https://api.example.com` |
## 示例
### 跨后端复制
```python
# 备份到 S3
copy_file("/local/file.txt", "/backup/file.txt",
src_backend="local", dst_backend="s3-backup")
```
### 运行时后端管理
```python
# 添加临时后端
register_backend("temp", "memory://", description="临时存储")
# 使用它
write_file("/test.txt", "content", backend="temp")
```
## 开发
```bash
git clone <仓库地址>
cd omni-fs-mcp
uv sync
# 在本地运行
uv run omni-fs-mcp "memory://"
```
## 许可证
MIT