vcf-ops-mcp
vcf-ops-mcp
Un servidor MCP que envuelve la API REST de VCF Operations suite-api y expone recursos, métricas y alertas como herramientas MCP para que un cliente LLM pueda consultar la infraestructura monitorizada directamente.
Configuración
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env # then fill in your VCF Operations detailsConfiguración necesaria (mediante .env o variables de entorno reales):
Variable | Descripción |
| URL base de la instancia de VCF Operations, p. ej. |
| Usuario con el que autenticarse |
| Contraseña de ese usuario |
| Nombre del origen de autenticación (por defecto |
| Establece |
| Tiempo de espera por solicitud en segundos (por defecto |
El servidor obtiene un token de /suite-api/api/auth/token/acquire en el primer uso, lo guarda en caché y lo vuelve a obtener de forma transparente cuando está a punto de expirar o se rechaza con un 401.
Configuración de transporte y autenticación del servidor (también mediante .env o variables de entorno reales):
Variable | Descripción |
|
|
| Host de enlace para streamable-http (por defecto |
| Puerto de enlace para streamable-http (por defecto |
| Necesario para streamable-http. Los clientes deben enviar |
| Lista de cabeceras Host permitidas separadas por comas, como protección contra rebinding de DNS (ver más abajo) |
Related MCP server: VMware-Monitor
Ejecución
Por defecto se ejecuta como un servidor remoto independiente sobre streamable-http, vinculado a 127.0.0.1:8000, y exige un token de portador en cada solicitud:
export VCFOPS_MCP_BEARER_TOKEN="$(openssl rand -hex 32)"
vcf-ops-mcp
# or
python -m vcf_ops_mcpGET /healthz no requiere autenticación (para las comprobaciones de actividad del balanceador de carga o del orquestador); todo lo demás exige el token de portador. 127.0.0.1 solo escucha en local; para alcanzarlo desde otro host, define VCFOPS_MCP_HOST=0.0.0.0 (o ejecútalo detrás de un proxy inverso) y asegúrate de que el token de portador sea lo único que se interpone entre la red y las credenciales capaces de consultar toda la infraestructura monitorizada. Trátalo como cualquier otro secreto y prefiere una terminación TLS (por ejemplo, mediante un proxy inverso delante de él) en lugar de HTTP en claro sobre una red no fiable.
Cuando VCFOPS_MCP_HOST no es 127.0.0.1/localhost, la propia protección de FastMCP contra el rebinding de DNS (una comprobación de la cabecera Host de la solicitud entrante) no tiene nada que listar por defecto, ya que solo configura automáticamente esa lista para un host de loopback. Si se deja sin definir, no se aplica ninguna comprobación de la cabecera Host y el token de portador es tu única barrera; esto es correcto en una red de confianza, pero establece VCFOPS_MCP_ALLOWED_HOSTS con los nombres de host o direcciones IP:puerto a través de los que los clientes realmente conectan (separados por comas) para aplicar una defensa en profundidad en una red compartida o no fiable.
Conecta un cliente MCP como servidor streamable-http, por ejemplo en Claude Code:
claude mcp add --transport http vcf-operations http://<host>:8000/mcp \
--header "Authorization: Bearer <your-token>"Ejecutar con stdio en su lugar
Para un uso local en el que el cliente MCP lanza el propio servidor como subproceso (sin necesidad de exponer la red), define VCFOPS_MCP_TRANSPORT=stdio; en este modo no se requiere el token de portador. Ejemplo de configuración de Claude Desktop:
{
"mcpServers": {
"vcf-operations": {
"command": "/absolute/path/to/.venv/bin/vcf-ops-mcp",
"env": {
"VCFOPS_MCP_TRANSPORT": "stdio",
"VCFOPS_BASE_URL": "https://ops.example.com",
"VCFOPS_USERNAME": "admin",
"VCFOPS_PASSWORD": "changeme"
}
}
}
}Herramientas
Recursos
list_resources— busca objetos monitorizados por nombre/tipo de adaptador/tipo de recurso/saludget_resource— detalle completo de un recursoget_resource_properties— propiedades de configuración recopiladasget_resource_relationships— objetos padre/hijo
Métricas
list_metric_keys— statKeys disponibles para un par de adaptador/tipo de recursoget_latest_stats— valor(es) de métrica más reciente(s) de un recursoquery_stats— series temporales históricas entre recursos, con rollup/intervalo
Alertas
list_alerts— alertas activas o todas, opcionalmente filtradas por recurso o criticidadget_alert— detalle completo de una alertalist_alert_definitions— las definiciones de reglas de las alertas
Pruebas
pip install -e ".[dev]"
pytestLas pruebas simulan la API HTTP de VCF Operations con respx — no se necesita una instancia real.
Notas
Fijado a
mcp<2.0.0: la línea 2.x del SDK de Python de MCP renombróFastMCPcomoMCPServery lo trasladó amcp.server.mcpserver. Este proyecto apunta a la APImcp.server.fastmcp.FastMCP, la bien establecida de la rama 1.x.
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Related MCP Servers
- AlicenseAqualityAmaintenanceAI-powered VMware vCenter/ESXi monitoring and operations. 20 MCP tools for inventory queries, health monitoring, VM lifecycle management, fast provisioning (Linked Clone, OVA, template deploy), snapshot management, and datastore browsing. Supports vSphere 6.5–8.0. Works with local models via Ollama/LM Studio.44270 PyPI74MIT
- AlicenseAqualityAmaintenanceRead-only VMware vCenter/ESXi monitoring. 8 MCP tools for VM inventory, host status, datastore capacity, cluster info, alarms, events, and VM details. Code-level enforced safety — no destructive operations exist in the codebase. Supports vSphere 6.5–8.0. Works with local models via Ollama/LM Studio.32491 PyPI15MIT
- FlicenseNot gradedqualityDmaintenanceExposes MCP tools that enable remote LLMs to query local Docker containers, OS processes, and system services in real time.-
- FlicenseAqualityDmaintenanceExposes two MCP tools (discover and execute) that enable agents to query an OpenAPI schema via natural language and execute matched API operations.2-