Skip to main content
Glama
ssotoa70

VASTOps MCP Server

by ssotoa70

VASTOps MCP Server

PyPI Version Python Version License

VASTOps MCP Server — это сервер протокола Model Context Protocol (MCP) для задач администрирования VAST Data. Он предоставляет ИИ-ассистентам инструменты для взаимодействия с кластерами VAST для выполнения операций мониторинга, перечисления и управления. Поддерживается как для администраторов кластеров, так и для администраторов арендаторов.

Возможности

  • Интеграция с MCP: Полная реализация MCP-сервера для интеграции с ИИ-ассистентами

  • Управление кластером: Перечисление и мониторинг кластеров VAST

  • Метрики производительности: Получение данных о производительности объектов кластера и генерация графиков

  • Функции динамического списка: Автоматическая генерация функций MCP из YAML-шаблонов для внесения изменений конечными пользователями

  • Безопасные учетные данные: Безопасное хранение паролей с использованием keyring

  • Режимы «только чтение» и «чтение-запись»: Контроль уровня доступа (режим «чтение-запись» для операций создания)

Related MCP server: MCP Server Kubernetes

Быстрый старт

1. Установка

Установите vastops-mcp:

# If installed via pip
pip install vastops-mcp

2. Первоначальная настройка

Настройте подключение к вашему кластеру VAST:

# If installed via pip
vastops-mcp setup


This will prompt you for:
- Cluster address (IP, FQDN, or URL like `https://host:port`)
- Username and password
- Tenant (for tenant admins)
- Tenant (for super admins - which tenant context to use)

3. Настройка MCP-сервера в вашем ИИ-ассистенте

Используйте mcpsetup для получения инструкций для популярных инструментов ИИ-ассистентов:

# create the syntax for popular ai assistances (currently has builtin support for cursor,claude-desktop,windsurf,vscode)
vastops-mcp mcpsetup vscode
🔧 Configuring MCP server for: vscode
   Detected command: vastops-mcp
   Detected args: ['mcp']

📋 VSCode Configuration Instructions
   Config file location: /Users/user/.vscode/mcp.json

    Create a new file if not exists, or add the VASTOps MCP entry to the existing 'servers' section:
    {
        "servers": {
            "VASTOps MCP": {
                "command": "vastops-mcp",
                "args": [
                    "mcp"
                ]
            }
        }
    }

📝 Next steps:
   1. Edit or create the config file at the location shown above
   2. Restart VSCode
   3. The MCP server should be available in VSCode's MCP tools
   4. Test by asking VSCode to list VAST clusters

** Добавьте флаг --read-write в качестве второго аргумента, чтобы иметь возможность вносить изменения в кластеры VAST

Примеры промптов

Для режима «только чтение»

List all VAST clusters 
List all views on cluster cluster1
Show me all tenants across all clusters
Create bandwidth and iops graph for cluster1 over the last hour
create dataflow diagram for cluster1 for /path view on the tenant3 tenant for the last hour 
show me dataflow diagram for 172.21.224.139 on cluster1
Show me the hardware topology for cluster cluster1 
Are there any issues with my configured data protection relationships ? 
Create mini support bundle on cluster1 and name it bundle1. Timeframe should be yesterday at midnight for 4m. Generate it only for cnodes prefixed by cnode-128 and upload it to support without private data.
Find all users prefixed with "s3" on cluster cluster1 tenant tenant1
Are there any critical alerts on my clusters that were not acknoledged ?
List all snapshots for view path /data/app1 on cluster cluster1 tenant tenant1
Show me all quotas configured for tenant tenant1 on cluster cluster1
Get performance metrics for cnodes on cluster cluster1 over the last 7 day
Show me all view policies on cluster cluster1 that support S3 
First, get all available clusters. Then compare views with path "/" across all clusters, showing capcity information
Show me all tenants on cluster cluster1, for each tenant show me the 5 views with the highest used capacity
Get performance metrics for cluster cluster1, then get metrics for all cnodes, and finally get metrics for top 3 views. Show me a summary of IOPS and bandwidth for each object type
Find all views where logical used capacity is greater than 1TB. For each of these views, get their performance metrics over the last 24 hours and show which views have the highest IOPS

Для режима «чтение-запись»

Create a new NFS view on cluster cluster1 with path /data/newview in tenant tenant1
Create a view on cluster cluster1 with path /shared/data in tenant tenant1 that supports both NFS and S3 protocols
Create a snapshot named "backup-2024-01-15" for view path /data/app1 on cluster cluster1, tenant tenant1 and keep it for 24h
Create a clone from snapshot "backup-2024-01-15" of view /data/app1. The clone should be at path /data/app1-clone in tenant tenant1 on cluster cluster1
Set a hard quota of 10TB for view path /data/app1 on cluster cluster1, tenant tenant1
Create 3 new views for vmware based on template. 
Create a indestructible snapshot named resrote-point_<view name> for all vmware views on cluster1 
Refresh a clone from most recent snapshot of view /data/app1 at path /data/app1-clone in tenant tenant1 on cluster cluster1

Установка

Предварительные требования

  • Python 3.10+

  • jq: Процессор JSON командной строки (требуется для преобразования полей в YAML-шаблонах)

Установка jq

macOS:

brew install jq

Linux (Ubuntu/Debian):

sudo apt-get install jq

Linux (RHEL/CentOS):

sudo yum install jq

Базовая установка

pip install vastops-mcp

Для получения пошагового руководства (предварительные требования, vastops-mcp setup, интеграция в Claude Desktop / Claude Code, дымовые тесты) см. docs/user-guide/installation.md.

CLI

Вы можете протестировать функции:

Список доступных команд

vastops-mcp list
# Or
./vastops-mcp.sh list

Выполнение динамической команды

# List views
vastops-mcp list views --cluster vast3115-var

# List tenants with JSON output
vastops-mcp list tenants --format json

# List views with filters
vastops-mcp list views --cluster cluster1 --tenant mytenant

# Save output to file
vastops-mcp list views --cluster cluster1 --output views.csv --format csv

Статические команды

# List clusters
vastops-mcp clusters

# List performance metrics
vastops-mcp performance --object-name tenant --cluster vast3115-var

# Query users
vastops-mcp query-users --cluster vast3115-var --prefix user

Команды создания

# Create a view
vastops-mcp create view --cluster cluster1 --path /myview --protocols NFS

# Create a view from template
vastops-mcp create view-from-template --cluster cluster1 --template-name mytemplate

# Create a snapshot
vastops-mcp create snapshot --cluster cluster1 --path /myview --name mysnapshot

# Create a clone
vastops-mcp create clone --cluster cluster1 --source-path /myview --source-snapshot mysnapshot --destination-path /myclone

# Create or update quota
vastops-mcp create quota --cluster cluster1 --path /myview --hard-limit 10GB

Форматы вывода

  • table (по умолчанию): Удобочитаемый табличный формат

  • json: Вывод в формате JSON

  • csv: Формат CSV

Инструменты MCP

Инструменты статического списка

  • list_clusters_vast: Получение информации о кластерах VAST, их статусе, емкости и использовании

  • list_performance_vast: Получение метрик производительности для объектов кластера VAST

  • query_users_vast: Запрос имен пользователей из кластера VAST

Инструменты динамического списка

Дополнительные инструменты списка автоматически регистрируются из файла YAML-шаблона, расположенного по адресу ~/.vastops-mcp/mcp_list_cmds_template.yaml. Эти инструменты следуют шаблону именования list_{command_name}_vast.

Примечание: Команды с параметром create_mcp_tool: false в YAML-шаблоне не будут зарегистрированы как отдельные инструменты MCP. Их по-прежнему можно использовать в объединенных командах и через CLI, но они не будут отображаться в списке инструментов MCP.

Инструменты создания

Следующие инструменты создания доступны, когда MCP-сервер запущен с флагом --read-write:

  • create_view_vast: Создание нового представления (view) VAST

  • create_view_from_template_vast: Создание представлений на основе предопределенного шаблона

  • create_snapshot_vast: Создание снимка (snapshot) для представления VAST

  • create_clone_vast: Создание клона из снимка

  • create_quota_vast: Создание или обновление квоты для определенного пути и арендатора

Примечание: Инструменты создания всегда зарегистрированы (видны LLM), но вызовут ошибку, если будут вызваны, когда сервер не находится в режиме «чтение-запись».

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

  • Файл конфигурации: ~/.vastops-mcp/config.json (конфигурации кластера, без переопределения через переменные окружения)

  • Файл шаблона по умолчанию: mcp_list_cmds_template.yaml в корне проекта (поставляемый шаблон)

  • Файл модификаций шаблона: ~/.vastops-mcp/mcp_list_template_modifications.yaml (пользовательские настройки)

  • Файл шаблонов представлений: ~/.vastops-mcp/view_templates.json (для создания на основе шаблонов представлений). Этот файл можно изменить на основе примера шаблона view_templates_example.yaml в корне проекта (поставляемый шаблон)

  • Файлы журналов: ~/.vastops-mcp/vastops_mcp.log

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

Пути к файлам шаблонов

Пути к файлам шаблонов можно переопределить с помощью переменных окружения:

  • VASTOPS_MCP_DEFAULT_TEMPLATE_FILE: Переопределить путь к файлу шаблона по умолчанию

  • VASTOPS_MCP_TEMPLATE_MODIFICATIONS_FILE: Переопределить путь к файлу модификаций шаблона

  • VASTOPS_MCP_VIEW_TEMPLATE_FILE: Переопределить путь к файлу шаблонов представлений

Пример:

export VASTOPS_MCP_DEFAULT_TEMPLATE_FILE=/custom/path/default_template.yaml
export VASTOPS_MCP_TEMPLATE_MODIFICATIONS_FILE=/custom/path/modifications.yaml
export VASTOPS_MCP_VIEW_TEMPLATE_FILE=/custom/path/view_templates.json
vastops-mcp list views

Конфигурация прокси

Сервер поддерживает прокси HTTP/HTTPS и SOCKS для доступа к кластерам VAST через корпоративные или корпоративные сетевые среды. Прокси настраиваются с помощью стандартных переменных окружения:

  • HTTPS_PROXY или https_proxy — наивысший приоритет (рекомендуется для VAST, так как API использует HTTPS)

  • HTTP_PROXY или http_proxy — резервный вариант

  • ALL_PROXY или all_proxy — универсальный, рекомендуется для прокси SOCKS

Обход прокси (NO_PROXY):

Используйте NO_PROXY (или no_proxy), чтобы перечислить хосты, которые должны подключаться напрямую, без использования прокси. Разделяйте несколько записей запятыми. Подстановочный знак * обходит прокси для всех хостов.

# Skip proxy for internal VAST clusters
export NO_PROXY=vast-cluster1.internal,10.0.0.5

Примеры прокси HTTP/HTTPS:

# Basic HTTP proxy
export HTTPS_PROXY=http://proxy.example.com:8080

# Proxy with authentication
export HTTPS_PROXY=http://username:password@proxy.example.com:8080

# Run commands as normal — proxy is picked up automatically
vastops-mcp clusters
vastops-mcp list views --cluster cluster1

Поддержка прокси SOCKS:

Прокси SOCKS (SOCKS4, SOCKS4a, SOCKS5, SOCKS5h) поддерживаются, но требуют дополнительной библиотеки PySocks:

# Install PySocks for SOCKS proxy support
pip install 'vastops-mcp[socks]'
# — or directly —
pip install pysocks

# SOCKS5 proxy (client-side DNS resolution)
export ALL_PROXY=socks5://proxy.example.com:1080

# SOCKS5h proxy (remote DNS resolution — recommended for internal hostnames)
export ALL_PROXY=socks5h://proxy.example.com:1080

# SOCKS5 with authentication
export ALL_PROXY=socks5h://username:password@proxy.example.com:1080

# SOCKS4 proxy
export ALL_PROXY=socks4://proxy.example.com:1080

Краткий обзор типов прокси:

Тип

Описание

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

Зависимость

HTTP/HTTPS

Стандартные корпоративные прокси

HTTPS_PROXY / HTTP_PROXY

Встроено

SOCKS5

SOCKS5 с DNS на стороне клиента

ALL_PROXY

PySocks

SOCKS5h

SOCKS5 с удаленным DNS (рекомендуется для конфиденциальности)

ALL_PROXY

PySocks

SOCKS4

Устаревший протокол SOCKS4

ALL_PROXY

PySocks

SOCKS4a

SOCKS4 с удаленным DNS

ALL_PROXY

PySocks

Примечание: Любая переменная окружения прокси будет работать с любым типом прокси, но использование ALL_PROXY для прокси SOCKS соответствует стандартным соглашениям и делает вашу конфигурацию понятной.

Белый список API

Белый список API обеспечивает безопасность, ограничивая доступ к конечным точкам API VAST и методам HTTP. Он настраивается в разделе api_whitelist файла YAML-шаблона.

Поведение по умолчанию

  • Простой формат (- views): По умолчанию только GET

  • С методами (- views: [post]): Разрешает GET + указанные методы

    • Пример: - views: [post] включает как GET, так и POST для конечной точки views

    • Пример: - quotas: [post, patch] включает GET, POST и PATCH для конечной точки quotas

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

Белый список определяется в файле YAML-шаблона:

api_whitelist:
  # Simple format - GET only
  - clusters
  - tenants
  
  # With methods - GET + specified methods
  - views: [post]  # GET + POST for create operations
  - snapshots: [post]  # GET + POST for create operations
  - quotas: [post, patch]  # GET + POST + PATCH for create/update operations

Модель безопасности

  • Ограничительный по умолчанию: Если конечная точка отсутствует в белом списке, доступ к ней запрещен

  • Проверка методов: Разрешены только указанные методы HTTP

  • Поддержка под-конечных точек: Если родительская конечная точка внесена в белый список (например, monitors), все под-конечные точки разрешены (например, monitors.ad_hoc_query)

Почему это важно

Все вызовы API проверяются по белому списку. Это гарантирует:

  • Доступ возможен только к одобренным конечным точкам

  • Можно использовать только одобренные методы HTTP

  • Операции создания требуют явной настройки белого списка (например, - views: [post])

Структура YAML-шаблона

Файл YAML-шаблона определяет функции динамического списка. Полную документацию см. в TEMPLATE_STRUCTURE.md.

Каждая команда в файле YAML определяет:

  • api_endpoints: Какие конечные точки API VAST вызывать

  • per_row_endpoints (необязательно): Конечные точки, вызываемые для каждой строки в базовом наборе данных, с параметрами запроса, полученными из данных строки с использованием синтаксиса $field_name

  • fields: Поля вывода с преобразованиями (jq, преобразование единиц измерения, сводки)

  • arguments: Параметры инструмента MCP с проверкой

  • description: Описание инструмента для контекста MCP

Подробные примеры и лучшие практики см. в TEMPLATE_STRUCTURE.md.

Архитектура

Сервер использует:

  • fastmcp: Фреймворк сервера MCP

  • vastpy: Клиент API VAST

  • template_parser: Парсинг YAML-шаблонов

  • command_executor: Выполнение динамических команд

  • jq: Системный инструмент командной строки для преобразований JSON (требуется для выражений jq в YAML-шаблонах)

Функции создания

Сервер включает функции создания для создания объектов VAST. Эти функции доступны, когда MCP-сервер запущен с флагом --read-write:

  • create_view_vast: Создание нового представления VAST

  • create_view_from_template_vast: Создание представлений на основе предопределенного шаблона

  • create_snapshot_vast: Создание снимка для представления VAST

  • create_clone_vast: Создание клона из снимка

  • create_quota_vast: Создание или обновление квоты для определенного пути и арендатора

Важно: Функции создания требуют, чтобы MCP-сервер был запущен с флагом --read-write. Если они будут вызваны в режиме «только чтение», пользователь LLM получит уведомление о том, что требуется режим «чтение-запись».

Безопасность: Все функции создания используют белый список API, чтобы гарантировать доступ только к разрешенным конечным точкам и методам HTTP. Подробности см. в разделе Белый список API.

Сообщество и поддержка

VASTOps MCP Server приветствует вопросы, отзывы и запросы на добавление функций. Присоединяйтесь к обсуждению на https://community.vastdata.com/

Лицензия

Apache License 2.0

Подробности см. в файле LICENSE.

Автор

Haim Marko haim.marko@vastdata.com

Related MCP Connectors

Related MCP Servers