Skip to main content
Glama

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 details

Configuración necesaria (mediante .env o variables de entorno reales):

Variable

Descripción

VCFOPS_BASE_URL

URL base de la instancia de VCF Operations, p. ej. https://ops.example.com

VCFOPS_USERNAME

Usuario con el que autenticarse

VCFOPS_PASSWORD

Contraseña de ese usuario

VCFOPS_AUTH_SOURCE

Nombre del origen de autenticación (por defecto LOCAL)

VCFOPS_VERIFY_SSL

Establece false para omitir la verificación TLS en instancias de laboratorio con certificados autofirmados

VCFOPS_TIMEOUT

Tiempo de espera por solicitud en segundos (por defecto 30)

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

VCFOPS_MCP_TRANSPORT

streamable-http (por defecto) o stdio

VCFOPS_MCP_HOST

Host de enlace para streamable-http (por defecto 127.0.0.1)

VCFOPS_MCP_PORT

Puerto de enlace para streamable-http (por defecto 8000)

VCFOPS_MCP_BEARER_TOKEN

Necesario para streamable-http. Los clientes deben enviar Authorization: Bearer <value>

VCFOPS_MCP_ALLOWED_HOSTS

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_mcp

GET /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/salud

  • get_resource — detalle completo de un recurso

  • get_resource_properties — propiedades de configuración recopiladas

  • get_resource_relationships — objetos padre/hijo

Métricas

  • list_metric_keys — statKeys disponibles para un par de adaptador/tipo de recurso

  • get_latest_stats — valor(es) de métrica más reciente(s) de un recurso

  • query_stats — series temporales históricas entre recursos, con rollup/intervalo

Alertas

  • list_alerts — alertas activas o todas, opcionalmente filtradas por recurso o criticidad

  • get_alert — detalle completo de una alerta

  • list_alert_definitions — las definiciones de reglas de las alertas

Pruebas

pip install -e ".[dev]"
pytest

Las 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ó FastMCP como MCPServer y lo trasladó a mcp.server.mcpserver. Este proyecto apunta a la API mcp.server.fastmcp.FastMCP, la bien establecida de la rama 1.x.

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

Latest Blog Posts

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