Skip to main content
Glama
ssotoa70

VASTOps MCP Server

by ssotoa70

VASTOps MCPサーバー

PyPI Version Python Version License

VASTOps MCPサーバーは、VAST Data管理タスクのためのModel Context Protocol (MCP) サーバーです。AIアシスタントがVASTクラスターと対話し、監視、一覧表示、管理操作を行うためのツールを提供します。クラスター管理者およびテナント管理者の両方をサポートしています。

機能

  • MCP統合: AIアシスタント統合のための完全なMCPサーバー実装

  • クラスター管理: VASTクラスターの一覧表示と監視

  • パフォーマンスメトリクス: クラスターオブジェクトのパフォーマンスデータ取得およびグラフ生成

  • 動的リスト関数: YAMLテンプレートからMCP関数を自動生成し、エンドユーザーによる変更が可能

  • 安全な資格情報: 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. AIアシスタントでMCPサーバーを設定する

一般的なAIアシスタントツール向けの設定手順を取得するには 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

** VASTクラスターで更新を行うには、2番目の引数として --read-write フラグを追加してください

プロンプト例

読み取り専用モードの場合

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クラスターからユーザー名をクエリ

動的リストツール

追加のリストツールは、~/.vastops-mcp/mcp_list_cmds_template.yaml にあるYAMLテンプレートファイルから自動的に登録されます。これらのツールは list_{command_name}_vast という命名規則に従います。

注: YAMLテンプレートで create_mcp_tool: false と設定されたコマンドは、スタンドアロンのMCPツールとしては登録されません。これらはマージされたコマンドやCLI経由では引き続き使用できますが、MCPツールリストには表示されません。

作成ツール

MCPサーバーが --read-write で起動された場合、以下の作成ツールが利用可能です:

  • create_view_vast: 新しいVASTビューを作成

  • create_view_from_template_vast: 定義済みテンプレートからビューを作成

  • create_snapshot_vast: 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

プロキシ設定

サーバーは、企業やエンタープライズネットワーク環境を通じてVASTクラスターに到達するためのHTTP/HTTPSおよびSOCKSプロキシをサポートしています。プロキシは標準の環境変数を介して設定されます:

  • HTTPS_PROXY または https_proxy — 最優先(APIがHTTPSを使用するため、VASTには推奨)

  • 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

クライアント側DNSを使用するSOCKS5

ALL_PROXY

PySocks

SOCKS5h

リモートDNSを使用するSOCKS5 (プライバシーに推奨)

ALL_PROXY

PySocks

SOCKS4

レガシーSOCKS4プロトコル

ALL_PROXY

PySocks

SOCKS4a

リモートDNSを使用するSOCKS4

ALL_PROXY

PySocks

注: どのプロキシ環境変数もどのプロキシタイプでも機能しますが、SOCKSプロキシに ALL_PROXY を使用すると標準的な慣習に従い、設定が明確になります。

APIホワイトリスト

APIホワイトリストは、アクセス可能なVAST APIエンドポイントとHTTPメソッドを制限することでセキュリティを提供します。これはYAMLテンプレートファイルの api_whitelist セクションで設定されます。

デフォルトの動作

  • 単純な形式 (- views): デフォルトで GETのみ

  • メソッド指定あり (- views: [post]): GET + 指定されたメソッド を許可

    • 例: - views: [post] はviewsエンドポイントに対してGETとPOSTの両方を有効にします

    • 例: - quotas: [post, patch] はquotasエンドポイントに対してGET、POST、PATCHを有効にします

設定

ホワイトリストは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: 呼び出すVAST APIエンドポイント

  • per_row_endpoints (オプション): ベースデータセットの各行に対して呼び出されるエンドポイント。クエリパラメータは $field_name 構文を使用して行データから派生します

  • fields: 変換(jq、単位変換、要約)を伴う出力フィールド

  • arguments: 検証付きのMCPツールパラメータ

  • description: MCPコンテキスト用のツール説明

詳細な例とベストプラクティスについては TEMPLATE_STRUCTURE.md を参照してください。

アーキテクチャ

サーバーは以下を使用します:

  • fastmcp: MCPサーバーフレームワーク

  • vastpy: VAST APIクライアント

  • template_parser: YAMLテンプレート解析

  • command_executor: 動的コマンド実行

  • jq: JSON変換用のシステムコマンドラインツール(YAMLテンプレート内のjq式に必要)

作成関数

サーバーには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サーバーへの質問、フィードバック、機能リクエストを歓迎します。https://community.vastdata.com/ で会話に参加してください。

ライセンス

Apache License 2.0

詳細については LICENSE ファイルを参照してください。

著者

Haim Marko haim.marko@vastdata.com

Related MCP Connectors

Related MCP Servers