Skip to main content
Glama
ssotoa70

VASTOps MCP Server

by ssotoa70

Servidor MCP VASTOps

Versión PyPI Versión de Python Licencia

El servidor MCP VASTOps es un servidor del Protocolo de Contexto de Modelo (MCP) para tareas de administración de VAST Data. Proporciona a los asistentes de IA herramientas para interactuar con clústeres de VAST para operaciones de monitorización, listado y gestión. Es compatible tanto para administradores de clúster como de Tenant.

Características

  • Integración MCP: Implementación completa de servidor MCP para la integración con asistentes de IA

  • Gestión de clústeres: Listar y monitorizar clústeres de VAST

  • Métricas de rendimiento: Recuperar datos de rendimiento para objetos del clúster y generación de gráficos

  • Funciones de lista dinámica: Generar automáticamente funciones MCP a partir de plantillas YAML para modificaciones del usuario final

  • Credenciales seguras: Almacenamiento seguro de contraseñas mediante keyring

  • Modos de solo lectura y lectura/escritura: Controlar el nivel de acceso (modo de lectura/escritura para operaciones de creación)

Related MCP server: MCP Server Kubernetes

Inicio rápido

1. Instalación

Instalar vastops-mcp:

# If installed via pip
pip install vastops-mcp

2. Configuración inicial

Configure su conexión al clúster de 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. Configurar el servidor MCP en su asistente de IA

Utilice mcpsetup para obtener instrucciones para las herramientas de asistencia de IA comunes:

# 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

** Añada el flag --read-write como segundo argumento para poder realizar actualizaciones en los clústeres de VAST

Ejemplos de prompts

Para modo de solo lectura

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

Para modo de lectura/escritura

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

Instalación

Requisitos previos

  • Python 3.10+

  • jq: Procesador JSON de línea de comandos (necesario para transformaciones de campos en plantillas YAML)

Instalación de jq

macOS:

brew install jq

Linux (Ubuntu/Debian):

sudo apt-get install jq

Linux (RHEL/CentOS):

sudo yum install jq

Instalación básica

pip install vastops-mcp

Para una guía paso a paso completa (requisitos previos, vastops-mcp setup, integración en Claude Desktop / Claude Code, pruebas de humo), consulte docs/user-guide/installation.md.

CLI

Puede probar las funciones:

Listar comandos disponibles

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

Ejecutar un comando dinámico

# 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

Comandos estáticos

# 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

Comandos de creación

# 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

Formatos de salida

  • table (predeterminado): Formato de tabla legible por humanos

  • json: Salida JSON

  • csv: Formato CSV

Herramientas MCP

Herramientas de lista estática

  • list_clusters_vast: Recuperar información sobre los clústeres de VAST, su estado, capacidad y uso

  • list_performance_vast: Recuperar métricas de rendimiento para objetos del clúster de VAST

  • query_users_vast: Consultar nombres de usuario del clúster de VAST

Herramientas de lista dinámica

Las herramientas de lista adicionales se registran automáticamente desde el archivo de plantilla YAML ubicado en ~/.vastops-mcp/mcp_list_cmds_template.yaml. Estas herramientas siguen el patrón de nomenclatura list_{command_name}_vast.

Nota: Los comandos con create_mcp_tool: false en la plantilla YAML no se registrarán como herramientas MCP independientes. Aún se pueden usar en comandos combinados y a través de la CLI, pero no aparecerán en la lista de herramientas MCP.

Herramientas de creación

Las siguientes herramientas de creación están disponibles cuando el servidor MCP se inicia con --read-write:

  • create_view_vast: Crear una nueva vista de VAST

  • create_view_from_template_vast: Crear vistas a partir de una plantilla predefinida

  • create_snapshot_vast: Crear una instantánea para una vista de VAST

  • create_clone_vast: Crear un clon a partir de una instantánea

  • create_quota_vast: Crear o actualizar una cuota para una ruta y un tenant específicos

Nota: Las herramientas de creación siempre están registradas (visibles para los LLM), pero generarán un error si se llaman cuando el servidor no está en modo de lectura/escritura.

Configuración

  • Archivo de configuración: ~/.vastops-mcp/config.json (configuraciones de clúster, sin anulación de variables de entorno)

  • Archivo de plantilla predeterminado: mcp_list_cmds_template.yaml en la raíz del proyecto (plantilla incluida)

  • Archivo de modificaciones de plantilla: ~/.vastops-mcp/mcp_list_template_modifications.yaml (personalizaciones del usuario)

  • Archivo de plantillas de vista: ~/.vastops-mcp/view_templates.json (para la creación basada en plantillas de vista). Este archivo se puede modificar basándose en el ejemplo de plantilla view_templates_example.yaml en la raíz del proyecto (plantilla incluida)

  • Archivos de registro: ~/.vastops-mcp/vastops_mcp.log

Variables de entorno

Rutas de archivos de plantilla

Las rutas de los archivos de plantilla se pueden anular mediante variables de entorno:

  • VASTOPS_MCP_DEFAULT_TEMPLATE_FILE: Anular la ruta del archivo de plantilla predeterminado

  • VASTOPS_MCP_TEMPLATE_MODIFICATIONS_FILE: Anular la ruta del archivo de modificaciones de plantilla

  • VASTOPS_MCP_VIEW_TEMPLATE_FILE: Anular la ruta del archivo de plantillas de vista

Ejemplo:

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

Configuración de proxy

El servidor admite proxies HTTP/HTTPS y SOCKS para llegar a los clústeres de VAST a través de entornos de red corporativos o empresariales. Los proxies se configuran mediante variables de entorno estándar:

  • HTTPS_PROXY o https_proxy — mayor prioridad (recomendado para VAST ya que la API utiliza HTTPS)

  • HTTP_PROXY o http_proxy — alternativa

  • ALL_PROXY o all_proxy — comodín, recomendado para proxies SOCKS

Omitir el proxy (NO_PROXY):

Utilice NO_PROXY (o no_proxy) para listar los hosts que deben conectarse directamente, sin pasar por el proxy. Separe las entradas múltiples con comas. Un comodín * omite el proxy para todos los hosts.

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

Ejemplos de proxy 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

Soporte de proxy SOCKS:

Los proxies SOCKS (SOCKS4, SOCKS4a, SOCKS5, SOCKS5h) son compatibles, pero requieren la biblioteca opcional 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

Tipos de proxy de un vistazo:

Tipo

Descripción

Var. de entorno

Dependencia

HTTP/HTTPS

Proxies corporativos estándar

HTTPS_PROXY / HTTP_PROXY

Integrado

SOCKS5

SOCKS5 con DNS del lado del cliente

ALL_PROXY

PySocks

SOCKS5h

SOCKS5 con DNS remoto (recomendado para privacidad)

ALL_PROXY

PySocks

SOCKS4

Protocolo SOCKS4 heredado

ALL_PROXY

PySocks

SOCKS4a

SOCKS4 con DNS remoto

ALL_PROXY

PySocks

Nota: Cualquier variable de entorno de proxy funcionará con cualquier tipo de proxy, pero usar ALL_PROXY para proxies SOCKS sigue las convenciones estándar y mantiene su configuración clara.

Lista blanca de API

La lista blanca de API proporciona seguridad al restringir a qué endpoints de la API de VAST y métodos HTTP se puede acceder. Se configura en la sección api_whitelist del archivo de plantilla YAML.

Comportamiento predeterminado

  • Formato simple (- views): Predeterminado a solo GET

  • Con métodos (- views: [post]): Permite GET + métodos especificados

    • Ejemplo: - views: [post] habilita tanto GET como POST para el endpoint de vistas

    • Ejemplo: - quotas: [post, patch] habilita GET, POST y PATCH para el endpoint de cuotas

Configuración

La lista blanca se define en el archivo de plantilla 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

Modelo de seguridad

  • Restrictivo por defecto: Si un endpoint no está en la lista blanca, se deniega

  • Validación de métodos: Solo se permiten los métodos HTTP especificados

  • Soporte de sub-endpoints: Si un endpoint principal está en la lista blanca (p. ej., monitors), todos los sub-endpoints están permitidos (p. ej., monitors.ad_hoc_query)

Por qué es importante

Todas las llamadas a la API se validan contra la lista blanca. Esto garantiza:

  • Solo se puede acceder a los endpoints aprobados

  • Solo se pueden utilizar los métodos HTTP aprobados

  • Las operaciones de creación requieren una configuración explícita en la lista blanca (p. ej., - views: [post])

Estructura de la plantilla YAML

El archivo de plantilla YAML define funciones de lista dinámica. Consulte TEMPLATE_STRUCTURE.md para obtener la documentación completa.

Cada comando en el archivo YAML define:

  • api_endpoints: A qué endpoints de la API de VAST llamar

  • per_row_endpoints (opcional): Endpoints llamados para cada fila en el conjunto de datos base, con parámetros de consulta derivados de los datos de la fila usando la sintaxis $field_name

  • fields: Campos de salida con transformaciones (jq, conversión de unidades, resúmenes)

  • arguments: Parámetros de la herramienta MCP con validación

  • description: Descripción de la herramienta para el contexto MCP

Consulte TEMPLATE_STRUCTURE.md para ver ejemplos detallados y mejores prácticas.

Arquitectura

El servidor utiliza:

  • fastmcp: Marco de trabajo del servidor MCP

  • vastpy: Cliente de API de VAST

  • template_parser: Análisis de plantillas YAML

  • command_executor: Ejecución de comandos dinámicos

  • jq: Herramienta de línea de comandos del sistema para transformaciones JSON (necesaria para expresiones jq en plantillas YAML)

Funciones de creación

El servidor incluye funciones de creación para crear objetos de VAST. Estas funciones están disponibles cuando el servidor MCP se inicia con el flag --read-write:

  • create_view_vast: Crear una nueva vista de VAST

  • create_view_from_template_vast: Crear vistas a partir de una plantilla predefinida

  • create_snapshot_vast: Crear una instantánea para una vista de VAST

  • create_clone_vast: Crear un clon a partir de una instantánea

  • create_quota_vast: Crear o actualizar una cuota para una ruta y un tenant específicos

Importante: Las funciones de creación requieren que el servidor MCP se inicie con el flag --read-write. Si se llaman en modo de solo lectura, se notificará al usuario LLM que se requiere el modo de lectura/escritura.

Seguridad: Todas las funciones de creación utilizan listas blancas de API para garantizar que solo se pueda acceder a los endpoints y métodos HTTP permitidos. Consulte la sección Lista blanca de API para obtener más detalles.

Comunidad y soporte

El servidor MCP VASTOps agradece preguntas, comentarios y solicitudes de funciones. Únase a la conversación en https://community.vastdata.com/

Licencia

Licencia Apache 2.0

Consulte el archivo LICENSE para obtener más detalles.

Autor

Haim Marko haim.marko@vastdata.com

Related MCP Connectors

Related MCP Servers