The safety model is not a warning in the README — modifying tools are not registered at all unless the flag is set, and every call checks the resource against the configured project. The coverage is unusually deep on Octavia: listeners, pools, members, health monitors and L7 rules are separate reads, which is what a load-balancer problem actually needs.
An operations server scoped to a single OpenStack project: every tool validates that the resource belongs to the configured project, and modifying tools are not even registered until you enable them.
- Compute visibility at several grains: instances listed, found by name, filtered by status, searched, and read in detail with their events, volumes and server groups
- Networking read back — network details, routers, security groups, floating IPs and the pools they come from, and availability zones
- Storage: volumes with their types and snapshots, and which volumes are attached to a given server
- Images listed with their details, and keypairs
- Octavia load balancing in depth — balancers with their details, listeners, pools and members, health monitors, L7 policies and rules, amphorae, flavors, providers, quotas and availability zones
- Heat stacks for the project
- Capacity and identity context: quotas, usage statistics, resource monitoring, hypervisor details, service status, project details, the user list and role assignments
- Bulk and filtered operations, with comma-delimited lists accepted where you would otherwise call the same tool repeatedly
OpenStack credentials in the standard variables — OS_AUTH_HOST and OS_AUTH_PORT with OS_AUTH_PROTOCOL, OS_IDENTITY_API_VERSION, OS_USERNAME, OS_PASSWORD, OS_PROJECT_NAME with its domain names and OS_REGION_NAME, plus OS_CACERT when you run it over HTTPS. Service ports are configurable per service. Published on PyPI as mcp-openstack-ops, with a Docker image and compose setup as an alternative. Writes stay off until ALLOW_MODIFY_OPERATIONS is set to true, at which point the modifying tools appear.
One command plus a key — uvx mcp-openstack-ops, then supply credentials
