Skip to main content
Glama
ssotoa70

VASTOps MCP Server

by ssotoa70

VASTOps MCP-Server

PyPI Version Python Version License

Der VASTOps MCP-Server ist ein Model Context Protocol (MCP)-Server für VAST Data-Verwaltungsaufgaben. Er stellt KI-Assistenten Werkzeuge zur Verfügung, um mit VAST-Clustern für Überwachungs-, Auflistungs- und Verwaltungsoperationen zu interagieren. Er wird sowohl für Cluster- als auch für Mandantenadministratoren unterstützt.

Funktionen

  • MCP-Integration: Vollständige MCP-Server-Implementierung für die Integration von KI-Assistenten

  • Cluster-Verwaltung: VAST-Cluster auflisten und überwachen

  • Leistungsmetriken: Abrufen von Leistungsdaten für Cluster-Objekte und Erstellung von Diagrammen

  • Dynamische Listenfunktionen: Automatische Generierung von MCP-Funktionen aus YAML-Vorlagen für Endbenutzeranpassungen

  • Sichere Anmeldedaten: Sichere Passwortspeicherung mittels Keyring

  • Schreibgeschützte und Lese-/Schreib-Modi: Zugriffsebene steuern (Lese-/Schreib-Modus für Erstellungsoperationen)

Related MCP server: MCP Server Kubernetes

Schnellstart

1. Installation

Installieren Sie vastops-mcp:

# If installed via pip
pip install vastops-mcp

2. Ersteinrichtung

Konfigurieren Sie Ihre VAST-Cluster-Verbindung:

# 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-Server in Ihrer KI-Assistenz konfigurieren

Verwenden Sie mcpsetup, um Anweisungen für gängige KI-Assistenz-Tools zu erhalten:

# 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

** Fügen Sie das Flag --read-write als 2. Argument hinzu, um Aktualisierungen in VAST-Clustern vornehmen zu können

Prompt-Beispiele

Für den schreibgeschützten Modus

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

Für den Lese-/Schreib-Modus

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

Installation

Voraussetzungen

  • Python 3.10+

  • jq: Befehlszeilen-JSON-Prozessor (erforderlich für Feldtransformationen in YAML-Vorlagen)

jq installieren

macOS:

brew install jq

Linux (Ubuntu/Debian):

sudo apt-get install jq

Linux (RHEL/CentOS):

sudo yum install jq

Grundlegende Installation

pip install vastops-mcp

Für eine vollständige Schritt-für-Schritt-Anleitung (Voraussetzungen, vastops-mcp setup, Einbindung in Claude Desktop / Claude Code, Rauchtests), siehe docs/user-guide/installation.md.

CLI

Sie können Funktionen testen:

Verfügbare Befehle auflisten

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

Einen dynamischen Befehl ausführen

# 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

Statische Befehle

# 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

Befehle erstellen

# 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

Ausgabeformate

  • table (Standard): Menschenlesbares Tabellenformat

  • json: JSON-Ausgabe

  • csv: CSV-Format

MCP-Tools

Statische Listen-Tools

  • list_clusters_vast: Informationen über VAST-Cluster, deren Status, Kapazität und Auslastung abrufen

  • list_performance_vast: Leistungsmetriken für VAST-Cluster-Objekte abrufen

  • query_users_vast: Benutzernamen vom VAST-Cluster abfragen

Dynamische Listen-Tools

Zusätzliche Listen-Tools werden automatisch aus der YAML-Vorlagendatei unter ~/.vastops-mcp/mcp_list_cmds_template.yaml registriert. Diese Tools folgen dem Namensmuster list_{command_name}_vast.

Hinweis: Befehle mit create_mcp_tool: false in der YAML-Vorlage werden nicht als eigenständige MCP-Tools registriert. Sie können weiterhin in zusammengeführten Befehlen und über die CLI verwendet werden, erscheinen jedoch nicht in der MCP-Tool-Liste.

Erstellungs-Tools

Die folgenden Erstellungs-Tools sind verfügbar, wenn der MCP-Server mit --read-write gestartet wird:

  • create_view_vast: Eine neue VAST-Ansicht erstellen

  • create_view_from_template_vast: Ansichten aus einer vordefinierten Vorlage erstellen

  • create_snapshot_vast: Einen Snapshot für eine VAST-Ansicht erstellen

  • create_clone_vast: Einen Klon aus einem Snapshot erstellen

  • create_quota_vast: Kontingent für einen bestimmten Pfad und Mandanten erstellen oder aktualisieren

Hinweis: Erstellungs-Tools werden immer registriert (für LLMs sichtbar), lösen jedoch einen Fehler aus, wenn sie aufgerufen werden, während sich der Server nicht im Lese-/Schreib-Modus befindet.

Konfiguration

  • Konfigurationsdatei: ~/.vastops-mcp/config.json (Cluster-Konfigurationen, keine Umgebungsvariablen-Überschreibung)

  • Standard-Vorlagendatei: mcp_list_cmds_template.yaml im Projektstammverzeichnis (mitgelieferte Vorlage)

  • Vorlagen-Änderungsdatei: ~/.vastops-mcp/mcp_list_template_modifications.yaml (Benutzeranpassungen)

  • Ansichtsvorlagendatei: ~/.vastops-mcp/view_templates.json (für die vorlagenbasierte Erstellung von Ansichten). Diese Datei kann basierend auf dem Vorlagenbeispiel view_templates_example.yaml im Projektstammverzeichnis (mitgelieferte Vorlage) geändert werden.

  • Protokolldateien: ~/.vastops-mcp/vastops_mcp.log

Umgebungsvariablen

Pfade zu Vorlagendateien

Die Pfade zu Vorlagendateien können über Umgebungsvariablen überschrieben werden:

  • VASTOPS_MCP_DEFAULT_TEMPLATE_FILE: Pfad zur Standard-Vorlagendatei überschreiben

  • VASTOPS_MCP_TEMPLATE_MODIFICATIONS_FILE: Pfad zur Vorlagen-Änderungsdatei überschreiben

  • VASTOPS_MCP_VIEW_TEMPLATE_FILE: Pfad zur Ansichtsvorlagendatei überschreiben

Beispiel:

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

Proxy-Konfiguration

Der Server unterstützt HTTP/HTTPS- und SOCKS-Proxys, um VAST-Cluster über Unternehmens- oder Firmennetzwerke zu erreichen. Proxys werden über Standard-Umgebungsvariablen konfiguriert:

  • HTTPS_PROXY oder https_proxy — höchste Priorität (für VAST empfohlen, da die API HTTPS verwendet)

  • HTTP_PROXY oder http_proxy — Fallback

  • ALL_PROXY oder all_proxy — Catch-all, empfohlen für SOCKS-Proxys

Proxy umgehen (NO_PROXY):

Verwenden Sie NO_PROXY (oder no_proxy), um Hosts aufzulisten, die direkt verbunden werden sollen, ohne den Proxy zu verwenden. Trennen Sie mehrere Einträge durch Kommas. Ein Platzhalter * umgeht den Proxy für alle Hosts.

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

HTTP/HTTPS-Proxy-Beispiele:

# 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-Proxy-Unterstützung:

SOCKS-Proxys (SOCKS4, SOCKS4a, SOCKS5, SOCKS5h) werden unterstützt, erfordern jedoch die optionale PySocks-Bibliothek:

# 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

Proxy-Typen auf einen Blick:

Typ

Beschreibung

Umgebungsvariable

Abhängigkeit

HTTP/HTTPS

Standard-Unternehmens-Proxys

HTTPS_PROXY / HTTP_PROXY

Integriert

SOCKS5

SOCKS5 mit clientseitigem DNS

ALL_PROXY

PySocks

SOCKS5h

SOCKS5 mit Remote-DNS (empfohlen für Privatsphäre)

ALL_PROXY

PySocks

SOCKS4

Legacy SOCKS4-Protokoll

ALL_PROXY

PySocks

SOCKS4a

SOCKS4 mit Remote-DNS

ALL_PROXY

PySocks

Hinweis: Jede Proxy-Umgebungsvariable funktioniert mit jedem Proxy-Typ, aber die Verwendung von ALL_PROXY für SOCKS-Proxys folgt den Standardkonventionen und hält Ihre Konfiguration übersichtlich.

API-Whitelist

Die API-Whitelist bietet Sicherheit, indem sie einschränkt, auf welche VAST-API-Endpunkte und HTTP-Methoden zugegriffen werden kann. Sie wird im Abschnitt api_whitelist der YAML-Vorlagendatei konfiguriert.

Standardverhalten

  • Einfaches Format (- views): Standardmäßig nur GET

  • Mit Methoden (- views: [post]): Erlaubt GET + angegebene Methoden

    • Beispiel: - views: [post] aktiviert sowohl GET als auch POST für den Views-Endpunkt

    • Beispiel: - quotas: [post, patch] aktiviert GET, POST und PATCH für den Quotas-Endpunkt

Konfiguration

Die Whitelist wird in der YAML-Vorlagendatei definiert:

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

Sicherheitsmodell

  • Standardmäßig restriktiv: Wenn ein Endpunkt nicht in der Whitelist steht, wird er verweigert

  • Methodenvalidierung: Nur angegebene HTTP-Methoden sind erlaubt

  • Unterstützung für Unter-Endpunkte: Wenn ein übergeordneter Endpunkt auf der Whitelist steht (z. B. monitors), sind alle Unter-Endpunkte erlaubt (z. B. monitors.ad_hoc_query)

Warum das wichtig ist

Alle API-Aufrufe werden gegen die Whitelist validiert. Dies stellt sicher:

  • Nur genehmigte Endpunkte können aufgerufen werden

  • Nur genehmigte HTTP-Methoden können verwendet werden

  • Erstellungsoperationen erfordern eine explizite Whitelist-Konfiguration (z. B. - views: [post])

Struktur der YAML-Vorlage

Die YAML-Vorlagendatei definiert dynamische Listenfunktionen. Siehe TEMPLATE_STRUCTURE.md für die vollständige Dokumentation.

Jeder Befehl in der YAML-Datei definiert:

  • api_endpoints: Welche VAST-API-Endpunkte aufgerufen werden sollen

  • per_row_endpoints (optional): Endpunkte, die für jede Zeile im Basisdatensatz aufgerufen werden, wobei Abfrageparameter mithilfe der $field_name-Syntax aus Zeilendaten abgeleitet werden

  • fields: Ausgabefelder mit Transformationen (jq, Einheitenumrechnung, Zusammenfassungen)

  • arguments: MCP-Tool-Parameter mit Validierung

  • description: Tool-Beschreibung für den MCP-Kontext

Siehe TEMPLATE_STRUCTURE.md für detaillierte Beispiele und bewährte Verfahren.

Architektur

Der Server verwendet:

  • fastmcp: MCP-Server-Framework

  • vastpy: VAST-API-Client

  • template_parser: YAML-Vorlagen-Parsing

  • command_executor: Dynamische Befehlsausführung

  • jq: System-Befehlszeilen-Tool für JSON-Transformationen (erforderlich für jq-Ausdrücke in YAML-Vorlagen)

Erstellungsfunktionen

Der Server enthält Erstellungsfunktionen zum Erstellen von VAST-Objekten. Diese Funktionen sind verfügbar, wenn der MCP-Server mit dem Flag --read-write gestartet wird:

  • create_view_vast: Eine neue VAST-Ansicht erstellen

  • create_view_from_template_vast: Ansichten aus einer vordefinierten Vorlage erstellen

  • create_snapshot_vast: Einen Snapshot für eine VAST-Ansicht erstellen

  • create_clone_vast: Einen Klon aus einem Snapshot erstellen

  • create_quota_vast: Kontingent für einen bestimmten Pfad und Mandanten erstellen oder aktualisieren

Wichtig: Erstellungsfunktionen erfordern, dass der MCP-Server mit dem Flag --read-write gestartet wird. Wenn sie im schreibgeschützten Modus aufgerufen werden, wird der LLM-Benutzer benachrichtigt, dass der Lese-/Schreib-Modus erforderlich ist.

Sicherheit: Alle Erstellungsfunktionen verwenden API-Whitelisting, um sicherzustellen, dass nur auf erlaubte Endpunkte und HTTP-Methoden zugegriffen werden kann. Siehe Abschnitt API-Whitelist für Details.

Community & Support

Der VASTOps MCP-Server freut sich über Fragen, Feedback und Funktionsanfragen. Treten Sie der Diskussion unter https://community.vastdata.com/ bei.

Lizenz

Apache License 2.0

Siehe LICENSE-Datei für Details.

Autor

Haim Marko haim.marko@vastdata.com

Related MCP Connectors

Related MCP Servers