Vast Storage MCP Server
Um servidor MCP (Model Context Protocol) que permite que LLMs interajam com as APIs de armazenamento da VAST Data. Este servidor expõe endpoints de gerenciamento da VAST Data como ferramentas para gerenciamento e automação abrangentes da infraestrutura de armazenamento.
Documentação
Servidor MCP VAST
Um servidor MCP (Model Context Protocol) que permite que LLMs interajam com as APIs de armazenamento da VAST Data. Este servidor expõe os endpoints de gerenciamento da VAST Data como ferramentas para gerenciamento abrangente e automação da infraestrutura de armazenamento.
Visão Geral
Este projeto implementa um servidor MCP (Model Context Protocol) para a API de armazenamento da VAST Data, permitindo que LLMs como GitHub Copilot e Claude interajam com a infraestrutura de armazenamento VAST por meio de comandos em linguagem natural.
Arquitetura
- TypeScript para implementação com segurança de tipos
- @modelcontextprotocol/sdk para manipulação do protocolo MCP
- Axios para comunicação HTTP/REST API
- Winston para registro de logs (para stderr para evitar corrupção do protocolo)
- Especificação OpenAPI 3.0 para geração automática de ferramentas
Recursos
Gerenciamento de Armazenamento
- Views (4 ferramentas): Visualizações de sistemas de arquivos NFS, SMB e S3
- Quotas (4 ferramentas): Quotas de diretório e usuário com limites rígidos/flexíveis
Rede e Infraestrutura
- VIP Pools (4 ferramentas): Gerenciamento de pools de IP virtual
- Clusters (2 ferramentas): Monitoramento e status do cluster
- Nodes (2 ferramentas): Informações e saúde dos nós do cluster
Proteção de Dados
- Protected Paths (3 ferramentas): Configuração de proteção de dados e replicação
- Snapshots (4 ferramentas): Criação de snapshots e gerenciamento do ciclo de vida
Gerenciamento de Acesso
- Users (4 ferramentas): Gerenciamento de contas de usuário
- Tenants (4 ferramentas): Configuração de multi-tenancy
Monitoramento e Observabilidade
- Alarms (4 ferramentas): Monitoramento, reconhecimento e gerenciamento de alarmes
- Events (2 ferramentas): Consulta e filtragem de logs de eventos
- Analytics (2 ferramentas): Análises de desempenho e capacidade com dados de séries temporais
Pré-requisitos
- Node.js 18+ instalado
- VSCode com GitHub Copilot ou Claude Desktop
- Cluster VAST Data com acesso à API
- Credenciais da API VAST (nome de usuário e senha)
Instalação
Passo 1: Build
npm install
npm run build
Passo 2: Configurar o Ambiente
Opção A: Configuração Interativa (Recomendada)
node setup.js
Opção B: Configuração Manual
cp .env.example .env
# Edit .env with your VAST cluster details
Variáveis de ambiente necessárias:
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
Passo 3: Configurar o Cliente LLM
Para VSCode com GitHub Copilot
-
Abra as Configurações do VSCode:
Cmd+Shift+P→ "Preferences: Open User Settings (JSON)" -
Adicione esta configuração ao seu
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"
}
}
}
}
- Recarregue o VS Code:
Cmd+Shift+P→ "Developer: Reload Window"
Para Claude Desktop
-
Localize o arquivo de configuração do 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
- macOS:
-
Adicione esta configuração ao
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"
}
}
}
}
- Reinicie o aplicativo Claude Desktop
Ferramentas Disponíveis
O servidor MCP gera automaticamente ferramentas a partir da especificação da API VAST:
📁 Gerenciamento de Views (4 ferramentas)
- viewsGetAll - Listar todas as visualizações de sistemas de arquivos
- viewsGetById - Obter detalhes de uma visualização específica
- viewsCreate - Criar novas visualizações de sistemas de arquivos (NFS, SMB, S3)
- viewsUpdate - Atualizar configuração de visualização
- viewsDelete - Excluir uma visualização
📊 Gerenciamento de Quotas (4 ferramentas)
- quotasGetAll - Listar todas as quotas
- quotasGetById - Obter detalhes de uma quota específica
- quotasCreate - Criar novas quotas com limites rígidos/flexíveis
- quotasUpdate - Atualizar configuração de quota
- quotasDelete - Excluir uma quota
🌐 Gerenciamento de Rede (4 ferramentas)
- vippoolsGetAll - Listar todos os VIP pools
- vippoolsGetById - Obter detalhes de um VIP pool específico
- vippoolsCreate - Criar novos VIP pools
- vippoolsUpdate - Atualizar configuração de VIP pool
- vippoolsDelete - Excluir um VIP pool
🖥️ Gerenciamento de Cluster (4 ferramentas)
- clustersGetAll - Listar todos os clusters
- clustersGetById - Obter detalhes do cluster
- cnodesGetAll - Listar todos os nós do cluster
- cnodesGetById - Obter detalhes e status do nó
🛡️ Proteção de Dados (4 ferramentas)
- protectedPathsGetAll - Listar todos os caminhos protegidos
- protectedPathsGetById - Obter detalhes do caminho protegido
- protectedPathsCreate - Criar novos caminhos protegidos
- protectedPathsDelete - Excluir caminho protegido
📸 Snapshots (4 ferramentas)
- snapshotsGetAll - Listar todos os snapshots
- snapshotsGetById - Obter detalhes do snapshot
- snapshotsCreate - Criar novos snapshots
- snapshotsDelete - Excluir um snapshot
👥 Gerenciamento de Usuários (4 ferramentas)
- usersGetAll - Listar todos os usuários
- usersGetById - Obter detalhes do usuário
- usersCreate - Criar novos usuários
- usersUpdate - Atualizar configuração do usuário
- usersDelete - Excluir um usuário
🏢 Gerenciamento de Tenants (4 ferramentas)
- tenantsGetAll - Listar todos os tenants
- tenantsGetById - Obter detalhes do tenant
- tenantsCreate - Criar novos tenants
- tenantsUpdate - Atualizar configuração do tenant
- tenantsDelete - Excluir um tenant
🚨 Gerenciamento de Alarmes (4 ferramentas)
- alarmsGetAll - Listar todos os alarmes com filtragem por severidade, estado e categoria
- alarmsGetById - Obter detalhes de um alarme específico
- alarmsUpdate - Atualizar estado do alarme (reconhecer ou limpar alarmes)
- alarmsDelete - Excluir um alarme
📋 Gerenciamento de Eventos (2 ferramentas)
- eventsGetAll - Listar todos os eventos com filtragem por tipo, severidade, intervalo de tempo e categoria
- eventsGetById - Obter detalhes de um evento específico
📊 Analytics (2 ferramentas)
- analyticsGetAll - Listar métricas de análise com filtragem por tipo de métrica, intervalo de tempo e intervalo
- analyticsGetById - Obter dados de análise 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",
...
}
}
}
}
Especificação OpenAPI Personalizada
Para usar uma especificação de API VAST personalizada ou estendida:
# In .env or client config
OPENAPI_SPEC_PATH=/path/to/custom_vast_spec.json