RustFS MCP
RustFS MCP 使用指南。
RustFS MCP Server 是一个高性能 Model Context Protocol (MCP) 服务器,可让 AI/LLM 工具无缝访问兼容 S3 的对象存储操作。它使用 Rust 构建以实现高性能和安全性,使 Claude Desktop 等 AI 助手能够通过标准化协议与云存储交互。
什么是 MCP?
Model Context Protocol 是一项开放标准,使 AI 应用程序能够与外部系统建立安全、可控的连接。此服务器充当 AI 工具与兼容 S3 的存储服务之间的桥梁,在保持安全性和可观测性的同时,提供对文件操作的结构化访问。
✨ 功能
支持的 S3 操作
- 列出存储桶:列出所有可访问的 S3 存储桶。
- 列出对象:浏览存储桶内容,支持可选的前缀筛选。
- 上传文件:上传本地文件,并自动检测 MIME 类型和设置缓存控制。
- 获取对象:从 S3 存储中获取对象,支持读取或下载模式。
🔧 安装
构建说明可能已过时
rustfs-mcp crate 已不再属于当前 rustfs/rustfs 主分支,因此以下构建命令可能无法用于新克隆的仓库。从源代码构建前,请在 RustFS GitHub 组织中确认 MCP 服务器的当前位置。
前置要求
- Rust 1.75+(用于从源代码构建)
- 已配置的 AWS 凭证(通过环境变量、AWS CLI 或 IAM 角色)
- 能够访问兼容 S3 的存储服务
从源代码构建
# Clone the repository
git clone https://github.com/rustfs/rustfs.git
cd rustfs
# Build the MCP server
cargo build --release -p rustfs-mcp
# Binary will be available at
./target/release/rustfs-mcp⚙️ 配置
环境变量
# AWS credentials (required)
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=us-east-1 # optional, defaults to us-east-1
# Optional: Custom S3 endpoint (for MinIO, etc.)
export AWS_ENDPOINT_URL=http://localhost:9000
# Log level (optional)
export RUST_LOG=info命令行选项
rustfs-mcp --help服务器支持多种命令行选项来自定义行为:
--access-key-id:用于 S3 身份验证的 AWS 访问密钥 ID--secret-access-key:用于 S3 身份验证的 AWS 私有访问密钥--region:S3 操作使用的 AWS 区域(默认值:us-east-1)--endpoint-url:自定义 S3 端点 URL(用于 MinIO、LocalStack 等)--log-level:日志级别配置(默认值:rustfs_mcp_server=info)
🚀 使用
启动服务器
# Start the MCP server
rustfs-mcp
# Or with custom options
rustfs-mcp --log-level debug --region us-west-2与聊天客户端集成
选项 1:使用命令行参数
{
"mcpServers": {
"rustfs-mcp": {
"command": "/path/to/rustfs-mcp",
"args": [
"--access-key-id", "your_access_key",
"--secret-access-key", "your_secret_key",
"--region", "us-west-2",
"--log-level", "info"
]
}
}
}选项 2:使用环境变量
{
"mcpServers": {
"rustfs-mcp": {
"command": "/path/to/rustfs-mcp",
"env": {
"AWS_ACCESS_KEY_ID": "your_access_key",
"AWS_SECRET_ACCESS_KEY": "your_secret_key",
"AWS_REGION": "us-east-1"
}
}
}
}使用 Docker
RustFS MCP 官方提供了 Dockerfile,可用于构建使用 RustFS MCP 的容器镜像。
# Clone RustFS repository code
git clone https://github.com/rustfs/rustfs.git
# Build Docker image
docker build -f crates/mcp/Dockerfile -t rustfs/rustfs-mcp .构建成功后,你可以在 AI IDE 的 MCP 配置中进行配置。
在 AI IDE 中配置 MCP
目前 Cursor、Windsurf、Trae 等主流 AI IDE 均支持 MCP。例如,在 Trae 中,将以下内容添加到 MCP 配置(MCP --> Add):
{
"mcpServers": {
"rustfs-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"AWS_ACCESS_KEY_ID",
"-e",
"AWS_SECRET_ACCESS_KEY",
"-e",
"AWS_REGION",
"-e",
"AWS_ENDPOINT_URL",
"rustfs/rustfs-mcp"
],
"env": {
"AWS_ACCESS_KEY_ID": "rustfs_access_key",
"AWS_SECRET_ACCESS_KEY": "rustfs_secret_key",
"AWS_REGION": "us-east-1",
"AWS_ENDPOINT_URL": "rustfs_instance_url"
}
}
}
}
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY是 RustFS 访问密钥。你可以参考访问密钥管理章节进行创建。
添加成功后,你可以在 MCP 配置页面列出可用工具。

在 Trae 中,你可以通过输入相应的提示词使用对应工具。例如,在 Trae 的聊天对话框中输入:
Please help me list the buckets in the current rustfs instance, thank you!将返回以下响应:

Trae 使用 Builder with MCP 模式,调用 list_buckets 工具列出已配置 RustFS 实例中的所有存储桶。调用其他工具时同样如此。
🛠️ 可用工具
MCP 服务器公开以下工具供 AI 助手使用:
list_buckets
列出使用已配置凭证可访问的所有 S3 存储桶。
参数:无
list_objects
列出 S3 存储桶中的对象,支持可选的前缀筛选。
参数:
bucket_name(字符串):S3 存储桶名称prefix(字符串,可选):用于筛选对象的前缀
upload_file
将本地文件上传到 S3,并自动检测 MIME 类型。
参数:
local_file_path(字符串):本地文件路径bucket_name(字符串):目标 S3 存储桶object_key(字符串):S3 对象键(目标路径)content_type(字符串,可选):内容类型(未提供时自动检测)storage_class(字符串,可选):S3 存储类别cache_control(字符串,可选):缓存控制标头
get_object
使用两种操作模式从 S3 获取对象:直接读取内容或下载到文件。
参数:
bucket_name(字符串):源 S3 存储桶object_key(字符串):S3 对象键version_id(字符串,可选):版本化对象的版本 IDmode(字符串,可选):操作模式,"read"(默认)直接返回内容,"download" 保存到本地文件local_path(字符串,可选):本地文件路径(当 mode 为 "download" 时必填)max_content_size(数字,可选):读取模式下的最大内容大小,以字节为单位(默认值:1MB)
create_bucket
创建新的 RustFS 存储桶。
参数:
bucket_name(字符串):要创建的存储桶名称。
delete_bucket
删除指定的 RustFS 存储桶。
参数:
bucket_name(字符串):要删除的存储桶名称。
架构
MCP 服务器采用模块化架构构建:
rustfs-mcp/
├── src/
│ ├── main.rs # Entry point, CLI parsing and server initialization
│ ├── server.rs # MCP server implementation and tool handlers
│ ├── s3_client.rs # S3 client wrapper with async operations
│ ├── config.rs # Configuration management and CLI options
│ └── lib.rs # Library exports and public API
└── Cargo.toml # Dependencies, metadata and binary configuration