Vast Admin MCP
MCP server for VAST Data cluster administration - monitoring, management, and diagnostics
Install / Use
/learn @vast-data/Vast Admin MCPQuality Score
Category
Development & EngineeringSupported Platforms
README
VAST Admin MCP Server
VAST Admin MCP Server is a Model Context Protocol (MCP) server for VAST Data administration tasks. It provides AI assistants with tools to interact with VAST clusters for monitoring, listing, and management operations. It is supported both for Cluster and Tenant admins.
<img src="static/vast-admin-mcp-fast.gif" alt="VAST Admin MCP Demo" width="90%">Features
- MCP Integration: Full MCP server implementation for AI assistant integration
- Cluster Management: List and monitor VAST clusters
- Performance Metrics: Retrieve performance data for cluster objects and graphs generation
- Dynamic List Functions: Automatically generate MCP functions from YAML templates for end user modifications
- Secure Credentials: Secure password storage using keyring
- Read-only and Read-write Modes: Control access level (read-write mode for create operations)
Quick Start
1. Install
Install vast-admin-mcp:
# If installed via pip
pip install vast-admin-mcp
2. Initial Setup
Configure your VAST cluster connection:
# If installed via pip
vast-admin-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. Configure MCP Server in you AI assistance
Use mcpsetup to get instructions for common AI assistance tools:
# create the syntax for popular ai assistances (currently has builtin support for cursor,claude-desktop,windsurf,vscode)
vast-admin-mcp mcpsetup vscode
🔧 Configuring MCP server for: vscode
Detected command: vast-admin-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 VAST Admin MCP entry to the existing 'servers' section:
{
"servers": {
"VAST Admin MCP": {
"command": "vast-admin-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
** Add the --read-write flag as a 2nd argument to be able to make updates in VAST clusters
Prompt Examples
For Read-only mode
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
For Read-write mode
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
Prerequisites
- Python 3.10+
- jq: Command-line JSON processor (required for field transformations in YAML templates)
Installing jq
macOS:
brew install jq
Linux (Ubuntu/Debian):
sudo apt-get install jq
Linux (RHEL/CentOS):
sudo yum install jq
Basic Installation
pip install vast-admin-mcp
Docker Installation
Building the Docker Image
Quick Build (Recommended)
Use the provided build script that automatically handles versioning:
make build-docker
This will:
- Extract version from
src/vast_admin_mcp/__about__.py - Tag the image with both version number and
latest - Add metadata labels (version, build date, git commit)
Manual Build
# Simple build
docker build -t vast-admin-mcp:latest .
# Build with version tags
VERSION=$(grep -E '^__version__' src/vast_admin_mcp/__about__.py | sed 's/__version__\s*=\s*"\([^"]*\)"/\1/')
docker build \
--build-arg VERSION="${VERSION}" \
--build-arg BUILD_DATE="$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \
--build-arg VCS_REF="$(git rev-parse --short HEAD)" \
-t vast-admin-mcp:${VERSION} \
-t vast-admin-mcp:latest \
.
Running CLI Commands in Docker
Option 1: Using the helper script (recommended)
# Run any CLI command
./vast-admin-mcp-docker.sh clusters
./vast-admin-mcp-docker.sh list views --cluster cluster1
./vast-admin-mcp-docker.sh setup
./vast-admin-mcp-docker.sh mcpsetup cursor
Option 2: Using docker run directly
# One-off command execution
docker run --rm -it \
-v ~/.vast-admin-mcp:/root/.vast-admin-mcp \
vast-admin-mcp:latest \
vast-admin-mcp list clusters
Option 3: Using docker-compose
# Optional: Set version (defaults to 0.1.3)
export VERSION=0.2.0
# Start container in background
docker-compose up -d
# Execute commands in running container
docker-compose exec app vast-admin-mcp list clusters
docker-compose exec app vast-admin-mcp setup
# Stop container
docker-compose down
Volume Mounts
The Docker setup mounts the following directories/files:
-
Config Directory (
~/.vast-admin-mcp→/root/.vast-admin-mcp):config.json- Cluster configurationsmcp_list_template_modifications.yaml- User template customizationsvast_admin_mcp.log- Log file
-
Default Template File (built into image):
mcp_list_cmds_template.yamlis copied into the image during build- To override, mount a custom template file:
docker run --rm -it \ -v ~/.vast-admin-mcp:/root/.vast-admin-mcp \ -v /path/to/custom-template.yaml:/app/mcp_list_cmds_template.yaml:ro \ vast-admin-mcp:latest \ vast-admin-mcp list clusters
Volume Mounting Behavior:
docker run(used by helper script by default): Volumes are mounted each time you run a command. No persistent container needed.docker exec(with persistent containers): Volumes must be mounted when the container is created, not during exec. This is a Docker limitation -docker execruns in an existing container and cannot mount new volumes.
Using the helper script (vast-admin-mcp-docker.sh):
- By default, uses
docker runwhich mounts volumes automatically each time - Only uses
docker execifDOCKER_CONTAINER_NAMEenvironment variable is set - No persistent container needed for normal usage
Using docker-compose:
docker-compose.ymlautomatically mounts the config directory when the container is created- You can then use
docker-compose execto run commands in the persistent container
Creating a persistent container manually:
If you want to use docker exec with a persistent container, ensure volumes are mounted at creation:
docker run -d --name vast-admin-mcp \
-v ~/.vast-admin-mcp:/root/.vast-admin-mcp \
vast-admin-mcp:latest tail -f /dev/null
Configuring MCP Server for Desktop LLMs (Docker)
When running mcpsetup inside Docker, it will automatically detect Docker and generate appropriate docker run or docker exec commands:
# Inside Docker container
./vast-admin-mcp-docker.sh mcpsetup claude-desktop
# Or using docker-compose
docker-compose exec app vast-admin-mcp mcpsetup claude-desktop
The generated configuration will use Docker commands that the host can execute, with proper volume mounts for configuration files.
Environment Variables for Docker:
DOCKER_CONTAINER_NAME: Use exi
