Skip to main content
Glama

openstack-mcp

Un servidor MCP que permite a un asistente de IA inspeccionar y operar una nube OpenStack — listar instancias, comprobar cuotas, leer el registro de consola de una VM atascada y (si se lo permites) crear y eliminar servidores.

Funciona con cualquier despliegue de OpenStack: CloudPe, OVHcloud, Infomaniak, nubes universitarias y de investigación, o un DevStack local. Cualquier cosa a la que openstacksdk pueda llegar, esto puede manejarla.

Solo lectura por defecto. Las escrituras requieren una aceptación explícita, y las eliminaciones requieren una segunda. Un asistente que puede listar tu proyecto no puede destruirlo a menos que decidas que debería poder hacerlo.

Inicio rápido

Instalar desde el código fuente (aún no en PyPI):

pipx install git+https://github.com/abhishekambad-leapswitch/openstack-mcp

Apúntalo a una nube. openstacksdk lee la configuración estándar de OpenStack, así que o bien un clouds.yaml:

# ~/.config/openstack/clouds.yaml
clouds:
  cloudpe:
    auth_type: v3applicationcredential
    auth:
      auth_url: https://<your-region>.cloudpe.com:5000/v3
      application_credential_id: <id>
      application_credential_secret: <secret>
    region_name: RegionOne

...o las variables de entorno habituales (OS_AUTH_URL, OS_APPLICATION_CREDENTIAL_ID, OS_APPLICATION_CREDENTIAL_SECRET). Este servidor nunca almacena ni transmite tus credenciales por sí mismo — se las entrega a openstacksdk, que las resuelve de la misma manera que hace la CLI de openstack.

Claude Code

claude mcp add openstack --env OS_CLOUD=cloudpe -- openstack-mcp

Claude Desktop / Cursor / cualquier cliente MCP

{
  "mcpServers": {
    "openstack": {
      "command": "openstack-mcp",
      "env": { "OS_CLOUD": "cloudpe" }
    }
  }
}

Luego pregunta cosas como "¿qué VMs están caídas?", "¿tengo cuota para tres m1.large más?" o "web-03 no acepta SSH — revisa su registro de consola."

Para confirmar lo que has conectado antes de confiar en ello, ejecuta una comprobación en seco — imprime la configuración resuelta y exactamente qué herramientas están expuestas, sin servir ni conectar:

openstack-mcp --check
openstack-mcp 0.1.0
cloud: cloudpe
mode: read-only
max items per list: 50
12 tools: check_capacity, cloud_info, get_console_output, get_quotas, get_server,
list_flavors, list_images, list_keypairs, list_networks, list_security_groups,
list_servers, list_volumes

El modelo de seguridad

La mayoría de los servidores MCP de nube entregan al asistente la API completa y esperan lo mejor. Este está restringido, porque "elimina las VMs de prueba" es una frase que un modelo puede malinterpretar.

Variable de entorno

Efecto

(nada configurado)

Solo lectura. 12 herramientas de inspección. Las herramientas de escritura no están registradas en absoluto — el modelo no puede verlas ni llamarlas.

OPENSTACK_MCP_ALLOW_WRITE=true

Añade create_servers y power_action (14 herramientas).

OPENSTACK_MCP_ALLOW_DELETE=true

Añade delete_server (15 herramientas). Requiere también `ALLOW_WRITE — la eliminación sin escritura se trata como un error de configuración y se ignora.

OPENSTACK_MCP_MAX_ITEMS=50

Limita cuántos elementos devuelve cualquier herramienta de listado.

OPENSTACK_MCP_CLOUD / OS_CLOUD

Qué entrada de clouds.yaml usar.

Dos salvaguardas adicionales:

  • **delete_server exige confirmación. Debes pasar confirm_name que coincida exactamente el nombre exacto de la instancia resuelta. Pídele que elimine web-1 cuando la VM se llama web-01 y se niega en lugar de adivinar.

  • **Las herramientas llevan anotaciones MCP (read_only_hint, `destructivo_hint), para que los clientes que muestran el riesgo al usuario antes de ejecutar una herramienta pueden hacerlo correctamente.

La restricción de herramientas se aplica en el registro, no pidiendo amablemente al modelo — verificado en una sesión real de stdio en la suite de pruebas.

Herramientas

**Lectura (siempre disponible)

Herramienta

Propósito

cloud_info

Qué nube, región y proyecto al que estás apuntando y qué operaciones están habilitadas

list_servers

Instancias con estado y IPs; filtrar por estado o subcadena de nombre

`solicitar_servidor

Detalle completo de una instancia: sabor, imagen, par de claves, grupos de seguridad, direcciones

`list_flavors

Tamaños de instancia con vCPU, RAM, disco

`list_images

Imágenes de arranque

`list_redes

Redes, marcando cuáles son externas

`list_security_groups

Grupos de seguridad y recuento de reglas

`list_keypairs

Pares de claves SSH registrados

`list_volumes

Volúmenes de almacenamiento de bloque y a qué están adjuntos

`get_quotas

Uso de cuota de cómputo vs límites

`check_capacidad

Si N instancias de un sabor caben en la cuota restante y qué lo bloquea si no

`get_console_output

Registro de consola en serie — para VMs que arranca pero inalcanzable

**Escritura (opt-in)

Herramienta

Propósito

`create_servers

Crear una o muchas instancias; count > 1 los nombra <prefijo>-01, -02, …

`power_action

start / stop / reiniciar

`delete_server

Eliminar una instancia, con confirmación de nombre (necesita `ALLOW_DELETE)

Dos decisiones de diseño que vale la pena conocer

**Las respuestas son deliberadamente pequeñas. openstacksdk devuelve más de 60 atributos por servidor. Alimentar todo eso a un modelo es lento, costoso y entierra los campos útiles, así que cada herramienta devuelve una proyección recortada — para un servido que es id, nombre, estado y un mapa {red: [ips] en lugar de la estructura de direcciones anidada de nova.

**check_capacidad existe para que los lotes falla temprano. Pedir ocho VMs y descubrir el límite de cuota en el quinto deja un desastre a medio construir. Esto informa cuál de instancias/vCPUs/RAM se agota primero, antes de crear nada. create_servers también informa fallos parciales por instancia en lugar de descartar lo que tuvo éxito.

Desarrollo

git clone https://github.com/abhishekambad-leapswitch/openstack-mcp
cd openstack-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest && ruff check .

La suite se ejecuta completamente sin conexión contra una conexión falsa de `openstacksdk — sin nube, sin credenciales, sin cargos. Cubre la restricción de herramientas, el recorte, la aritmética de cuota, el informe de fallos parciales y la confirmación de eliminación.

Aprovisionamiento a escala

Para levantar flotas de forma declarativa en lugar de conversacional, consulta [cloudpe-terraform-bulk-vm](https://github.com/abhisambad-leapswitch/cloudpe-terraform-bulk-vm — Terraform para la creación de VMs en la misma API.

Licencia

MIT

-
license - not tested
Not graded
quality - not tested
C
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

  • Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.

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/abhishekambad-leapswitch/openstack-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server