openstack-mcp
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-mcpApú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-mcpClaude 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 --checkopenstack-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_volumesEl 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. |
| Añade |
| Añade |
| Limita cuántos elementos devuelve cualquier herramienta de listado. |
| Qué entrada de |
Dos salvaguardas adicionales:
**
delete_serverexige confirmación. Debes pasarconfirm_nameque coincida exactamente el nombre exacto de la instancia resuelta. Pídele que elimineweb-1cuando la VM se llamaweb-01y 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 |
| Qué nube, región y proyecto al que estás apuntando y qué operaciones están habilitadas |
| 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; |
`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
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
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.
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/abhishekambad-leapswitch/openstack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server