Vast Storage MCP Server

Un servidor MCP (Model Context Protocol) que permite a los LLMs interactuar con las API de almacenamiento de VAST Data. Este servidor expone los endpoints de gestión de VAST Data como herramientas para la administración y automatización integral de la infraestructura de almacenamiento.

Documentación

Servidor MCP de VAST

Un servidor MCP (Model Context Protocol) que permite a los LLMs interactuar con las APIs de almacenamiento de VAST Data. Este servidor expone los endpoints de gestión de VAST Data como herramientas para la gestión integral de infraestructura de almacenamiento y automatización.

Descripción General

Este proyecto implementa un servidor MCP (Model Context Protocol) para la API de almacenamiento de VAST Data, permitiendo que LLMs como GitHub Copilot y Claude interactúen con la infraestructura de almacenamiento de VAST mediante comandos en lenguaje natural.

Arquitectura

  • TypeScript para una implementación con seguridad de tipos
  • @modelcontextprotocol/sdk para el manejo del protocolo MCP
  • Axios para la comunicación HTTP/REST API
  • Winston para el registro de logs (a stderr para evitar la corrupción del protocolo)
  • Especificación OpenAPI 3.0 para la generación automática de herramientas

Características

Gestión de Almacenamiento

  • Vistas (4 herramientas): Vistas de sistemas de archivos NFS, SMB y S3
  • Cuotas (4 herramientas): Cuotas de directorio y usuario con límites estrictos/flexibles

Red e Infraestructura

  • Pools VIP (4 herramientas): Gestión de pools de IP virtuales
  • Clústeres (2 herramientas): Monitoreo y estado del clúster
  • Nodos (2 herramientas): Información y salud de los nodos del clúster

Protección de Datos

  • Rutas Protegidas (3 herramientas): Configuración de protección de datos y replicación
  • Instantáneas (4 herramientas): Creación de instantáneas y gestión del ciclo de vida

Gestión de Accesos

  • Usuarios (4 herramientas): Gestión de cuentas de usuario
  • Inquilinos (4 herramientas): Configuración de multi-tenencia

Monitoreo y Observabilidad

  • Alarmas (4 herramientas): Monitoreo, reconocimiento y gestión de alarmas
  • Eventos (2 herramientas): Consulta y filtrado de registros de eventos
  • Analíticas (2 herramientas): Analíticas de rendimiento y capacidad con datos de series temporales

Requisitos Previos

  • Node.js 18+ instalado
  • VSCode con GitHub Copilot o Claude Desktop
  • Clúster de VAST Data con acceso a la API
  • Credenciales de la API de VAST (nombre de usuario y contraseña)

Instalación

Paso 1: Compilar

npm install
npm run build

Paso 2: Configurar el Entorno

Opción A: Configuración Interactiva (Recomendada)

node setup.js

Opción B: Configuración Manual

cp .env.example .env
# Edit .env with your VAST cluster details

Variables de entorno requeridas:

VAST_API_BASE_URL=https://your-vast-cluster.example.com
VAST_API_USERNAME=your-username
VAST_API_PASSWORD=your-password
VAST_SSL_VERIFY=false
LOG_LEVEL=info

Paso 3: Configurar el Cliente LLM

Para VSCode con GitHub Copilot

  1. Abra la Configuración de VSCode: Cmd+Shift+P → "Preferences: Open User Settings (JSON)"

  2. Agregue esta configuración a su settings.json:

{
  "github.copilot.chat.mcp.servers": {
    "vast": {
      "command": "node",
      "args": ["/path/to/vast_MCP/dist/main.js"],
      "env": {
        "VAST_API_BASE_URL": "https://your-vast-cluster.example.com",
        "VAST_API_USERNAME": "your-username",
        "VAST_API_PASSWORD": "your-password",
        "LOG_LEVEL": "info"
      }
    }
  }
}
  1. Recargue VS Code: Cmd+Shift+P → "Developer: Reload Window"

Para Claude Desktop

  1. Localice su archivo de configuración de Claude Desktop:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. Agregue esta configuración a claude_desktop_config.json:

{
  "mcpServers": {
    "vast": {
      "command": "node",
      "args": ["/path/to/vast_MCP/dist/main.js"],
      "env": {
        "VAST_API_BASE_URL": "https://your-vast-cluster.example.com",
        "VAST_API_USERNAME": "your-username",
        "VAST_API_PASSWORD": "your-password",
        "LOG_LEVEL": "info"
      }
    }
  }
}
  1. Reinicie la aplicación Claude Desktop

Herramientas Disponibles

El servidor MCP genera automáticamente herramientas a partir de la especificación de la API de VAST:

📁 Gestión de Vistas (4 herramientas)

  • viewsGetAll - Listar todas las vistas de sistemas de archivos
  • viewsGetById - Obtener detalles de una vista específica
  • viewsCreate - Crear nuevas vistas de sistemas de archivos (NFS, SMB, S3)
  • viewsUpdate - Actualizar la configuración de una vista
  • viewsDelete - Eliminar una vista

📊 Gestión de Cuotas (4 herramientas)

  • quotasGetAll - Listar todas las cuotas
  • quotasGetById - Obtener detalles de una cuota específica
  • quotasCreate - Crear nuevas cuotas con límites estrictos/flexibles
  • quotasUpdate - Actualizar la configuración de una cuota
  • quotasDelete - Eliminar una cuota

🌐 Gestión de Red (4 herramientas)

  • vippoolsGetAll - Listar todos los pools VIP
  • vippoolsGetById - Obtener detalles de un pool VIP específico
  • vippoolsCreate - Crear nuevos pools VIP
  • vippoolsUpdate - Actualizar la configuración de un pool VIP
  • vippoolsDelete - Eliminar un pool VIP

🖥️ Gestión de Clústeres (4 herramientas)

  • clustersGetAll - Listar todos los clústeres
  • clustersGetById - Obtener detalles del clúster
  • cnodesGetAll - Listar todos los nodos del clúster
  • cnodesGetById - Obtener detalles y estado del nodo

🛡️ Protección de Datos (4 herramientas)

  • protectedPathsGetAll - Listar todas las rutas protegidas
  • protectedPathsGetById - Obtener detalles de una ruta protegida
  • protectedPathsCreate - Crear nuevas rutas protegidas
  • protectedPathsDelete - Eliminar una ruta protegida

📸 Instantáneas (4 herramientas)

  • snapshotsGetAll - Listar todas las instantáneas
  • snapshotsGetById - Obtener detalles de una instantánea
  • snapshotsCreate - Crear nuevas instantáneas
  • snapshotsDelete - Eliminar una instantánea

👥 Gestión de Usuarios (4 herramientas)

  • usersGetAll - Listar todos los usuarios
  • usersGetById - Obtener detalles de un usuario
  • usersCreate - Crear nuevos usuarios
  • usersUpdate - Actualizar la configuración de un usuario
  • usersDelete - Eliminar un usuario

🏢 Gestión de Inquilinos (4 herramientas)

  • tenantsGetAll - Listar todos los inquilinos
  • tenantsGetById - Obtener detalles de un inquilino
  • tenantsCreate - Crear nuevos inquilinos
  • tenantsUpdate - Actualizar la configuración de un inquilino
  • tenantsDelete - Eliminar un inquilino

🚨 Gestión de Alarmas (4 herramientas)

  • alarmsGetAll - Listar todas las alarmas con filtrado por severidad, estado y categoría
  • alarmsGetById - Obtener detalles de una alarma específica
  • alarmsUpdate - Actualizar el estado de una alarma (reconocer o limpiar alarmas)
  • alarmsDelete - Eliminar una alarma

📋 Gestión de Eventos (2 herramientas)

  • eventsGetAll - Listar todos los eventos con filtrado por tipo, severidad, rango de tiempo y categoría
  • eventsGetById - Obtener detalles de un evento específico

📊 Analíticas (2 herramientas)

  • analyticsGetAll - Listar métricas analíticas con filtrado por tipo de métrica, rango de tiempo e intervalo
  • analyticsGetById - Obtener datos analíticos específicos por ID

## Advanced Configuration

### Using with Multiple VAST Clusters

Configure multiple server instances in your LLM client:

```json
{
  "mcpServers": {
    "vast-prod": {
      "command": "node",
      "args": ["/path/to/vast_MCP/dist/main.js"],
      "env": {
        "VAST_API_BASE_URL": "https://prod-cluster.example.com",
        ...
      }
    },
    "vast-dev": {
      "command": "node",
      "args": ["/path/to/vast_MCP/dist/main.js"],
      "env": {
        "VAST_API_BASE_URL": "https://dev-cluster.example.com",
        ...
      }
    }
  }
}

Especificación OpenAPI Personalizada

Para usar una especificación de API de VAST personalizada o extendida:

# In .env or client config
OPENAPI_SPEC_PATH=/path/to/custom_vast_spec.json

Referencias