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) |
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mdegrasse/vcf-ops-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server