RustFS MCP
Сервер RustFS MCP — это высокопроизводительный сервер Протокола Модельного Контекста (MCP), который обеспечивает инструментам ИИ/LLM бесшовный доступ к операциям хранения объектов, совместимых с S3. Этот сервер построен на Rust для максимальной производительности и безопасности, позволяя ИИ-ассистентам, таким как Claude Desktop, взаимодействовать с облачным хранилищем через стандартизированный протокол.
Что такое MCP?
Протокол Модельного Контекста — это открытый стандарт, который позволяет приложениям ИИ устанавливать безопасные и контролируемые соединения с внешними системами. Этот сервер действует как мост между инструментами ИИ и сервисами хранения, совместимыми с S3, обеспечивая структурированный доступ к файловым операциям при сохранении безопасности и наблюдаемости.
✨ Особенности
Поддерживаемые операции S3
- Список buckets: Список всех доступных S3 buckets
- Список объектов: Просмотр содержимого buckets с дополнительной фильтрацией по префиксу
- Загрузка файлов: Загрузка локальных файлов с автоматическим определением MIME-типа и управлением кэшем
- Получение объектов: Извлечение объектов из S3-хранилища с поддержкой режимов чтения или загрузки
🔧 Установка
Предварительные требования
- Rust 1.88+ (для сборки из исходников)
- Настроенные учетные данные AWS (через переменные окружения, AWS CLI или IAM роли)
- Доступ к сервисам хранения, совместимым с S3
Сборка из исходников
# Клонирование репозитория
git clone https://github.com/rustfs/rustfs.git
cd rustfs
# Сборка MCP сервера
cargo build --release -p rustfs-mcp
# Бинарный файл будет доступен по пути
./target/release/rustfs-mcp
⚙️ Конфигурация
Переменные окружения
# Учетные данные AWS (обязательно)
export AWS_ACCESS_KEY_ID=ваш_ключ_доступа
export AWS_SECRET_ACCESS_KEY=ваш_секретный_ключ
export AWS_REGION=us-east-1 # Опционально, по умолчанию us-east-1
# Опционально: Пользовательская конечная точка S3 (для MinIO и т.д.)
export AWS_ENDPOINT_URL=http://localhost:9000
# Уровень логирования (опционально)
export RUST_LOG=info
Опции командной строки
rustfs-mcp --help
Сервер поддерживает различные опции командной строки для настройки поведения:
--access-key-id
: ID ключа доступа AWS для аутентификации S3--secret-access-key
: Секретный ключ AWS для аутентификации S3--region
: Регион AWS для использования в операциях S3 (по умолчанию: us-east-1)--endpoint-url
: Пользовательский URL конечной точки S3 (для MinIO, LocalStack и т.д.)--log-level
: Конфигурация уровня логирования (по умолчанию: rustfs_mcp_server=info)
🚀 Использование
Запуск сервера
# Запуск MCP сервера
rustfs-mcp
# Или с пользовательскими опциями
rustfs-mcp --log-level debug --region us-west-2
Интеграция с чат-клиентами
Вариант 1: Использование аргументов командной строки
{
"mcpServers": {
"rustfs-mcp": {
"command": "/path/to/rustfs-mcp",
"args": [
"--access-key-id", "ваш_ключ_доступа",
"--secret-access-key", "ваш_секретный_ключ",
"--region", "us-west-2",
"--log-level", "info"
]
}
}
}
Вариант 2: Использование переменных окружения
{
"mcpServers": {
"rustfs-mcp": {
"command": "/path/to/rustfs-mcp",
"env": {
"AWS_ACCESS_KEY_ID": "ваш_ключ_доступа",
"AWS_SECRET_ACCESS_KEY": "ваш_секретный_ключ",
"AWS_REGION": "us-east-1"
}
}
}
}
🛠️ Доступные инструменты
MCP сервер предоставляет следующие инструменты, которые могут использовать ИИ-ассистенты:
list_buckets
Список всех S3 buckets, доступных с настроенными учетными данными.
Параметры: Нет
list_objects
Список объектов в S3 bucket с поддержкой дополнительной фильтрации по префиксу.
Параметры:
bucket_name
(строка): Название S3 bucketprefix
(строка, опционально): Префикс для фильтрации объектов
upload_file
Загрузка локального файла в S3 с автоматическим определением MIME-типа.
Параметры:
local_file_path
(строка): Путь к локальному файлуbucket_name
(строка): Целевой S3 bucketobject_key
(строка): Ключ S3 объекта (целевой путь)content_type
(строка, опционально): Тип содержимого (автоматически определяется, если не указан)storage_class
(строка, опционально): Класс хранения S3cache_control
(строка, опционально): Заголовок управления кэшем
get_object
Извлечение объекта из S3 с двумя режимами работы: прямое чтение содержимого или загрузка в файл.
Параметры:
bucket_name
(строка): Исходный S3 bucketobject_key
(строка): Ключ S3 объектаversion_id
(строка, опционально): ID версии для версионных объектовmode
(строка, опционально): Режим работы - "read" (по умолчанию) возвращает содержимое напрямую, "download" сохраняет в локальный файлlocal_path
(строка, опционально): Путь к локальному файлу (обязательно, когда режим "download")max_content_size
(число, опционально): Максимальный размер содержимого для режима чтения (байты) (по умолчанию: 1MB)
Архитектура
MCP сервер построен с модульной архитектурой:
rustfs-mcp/
├── src/
│ ├── main.rs # Точка входа, разбор CLI и инициализация сервера
│ ├── server.rs # Реализация MCP сервера и обработчики инструментов
│ ├── s3_client.rs # Обертка S3 клиента с асинхронными операциями
│ ├── config.rs # Управление конфигурацией и опции CLI
│ └── lib.rs # Экспорты библиотеки и публичный API
└── Cargo.toml # Зависимости, метаданные и конфигурация бинарного файла