Skip to content

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

Сборка из исходников

bash
# Клонирование репозитория
git clone https://github.com/rustfs/rustfs.git
cd rustfs

# Сборка MCP сервера
cargo build --release -p rustfs-mcp

# Бинарный файл будет доступен по пути
./target/release/rustfs-mcp

⚙️ Конфигурация

Переменные окружения

bash
# Учетные данные 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

Опции командной строки

bash
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)

🚀 Использование

Запуск сервера

bash
# Запуск MCP сервера
rustfs-mcp

# Или с пользовательскими опциями
rustfs-mcp --log-level debug --region us-west-2

Интеграция с чат-клиентами

Вариант 1: Использование аргументов командной строки

json
{
  "mcpServers": {
    "rustfs-mcp": {
      "command": "/path/to/rustfs-mcp",
      "args": [
        "--access-key-id", "ваш_ключ_доступа",
        "--secret-access-key", "ваш_секретный_ключ",
        "--region", "us-west-2",
        "--log-level", "info"
      ]
    }
  }
}

Вариант 2: Использование переменных окружения

json
{
  "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 bucket
  • prefix (строка, опционально): Префикс для фильтрации объектов

upload_file

Загрузка локального файла в S3 с автоматическим определением MIME-типа.

Параметры:

  • local_file_path (строка): Путь к локальному файлу
  • bucket_name (строка): Целевой S3 bucket
  • object_key (строка): Ключ S3 объекта (целевой путь)
  • content_type (строка, опционально): Тип содержимого (автоматически определяется, если не указан)
  • storage_class (строка, опционально): Класс хранения S3
  • cache_control (строка, опционально): Заголовок управления кэшем

get_object

Извлечение объекта из S3 с двумя режимами работы: прямое чтение содержимого или загрузка в файл.

Параметры:

  • bucket_name (строка): Исходный S3 bucket
  • object_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           # Зависимости, метаданные и конфигурация бинарного файла

Опубликовано под лицензией Apache 2.0.