get_availability_zones
List availability zones and their status
Returns: JSON string with availability zones information
Inspect an OpenStack project from the conversation — instances, networks, volumes, images, quotas and load balancers — read-only unless you say otherwise.
LABSCO SUMMARY
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.
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 credentials — uvx mcp-openstack-ops, then supply credentials
USE CASES
Look it up by name, read its details, then its events and attached volumes.
Read the load balancer, then its listeners, pools, members and health monitors.
Check the security groups, the network details and the routers, and confirm the floating IP is where you think it is.
Read the project's quotas against its usage statistics and current resource monitoring.
List the instances by status, the volumes and their snapshots, and the images available.
Read service status, hypervisor details and availability zones.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
get_availability_zonesList availability zones and their status
Returns: JSON string with availability zones information
get_floating_ip_poolsGet list of floating IP pools (external networks).
Functions:
Use when user requests:
Returns: List of floating IP pools with capacity information in JSON format.
get_floating_ipsGet list of floating IPs with their associations.
Functions:
Use when user requests floating IP information, external connectivity queries, or IP management tasks.
Returns: List of floating IPs with detailed association information in JSON format.
get_heat_stacksGet list of Heat orchestration stacks.
Functions:
Use when user requests stack information, orchestration queries, or infrastructure-as-code status.
Returns: List of Heat stacks with detailed information in JSON format.
get_hypervisor_detailsGet detailed information about hypervisors
get_image_detail_listGet detailed list of all images with comprehensive metadata.
Functions:
Use when user requests image listing, image information, or image metadata details.
Returns: Comprehensive image list in JSON format with detailed metadata, properties, and status information.
get_instanceUnified instance query tool supporting all instance retrieval patterns. Consolidates functionality from get_instance_details, get_instance_by_name, get_instances_by_status, and search_instances.
Functions:
Use when user requests instance information, status checks, or instance searches.
get_instance_by_nameGet detailed information for a specific instance by name.
get_instance_detailsProvides detailed information and status for OpenStack instances with pagination support.
Functions:
Use when user requests specific instance information, VM details, server analysis, or instance troubleshooting.
get_instances_by_statusGet instances filtered by status.
get_keypair_listGet list of SSH keypairs for the current user.
Functions:
Use when user requests SSH key management, keypair information, or security key queries.
Returns: List of SSH keypairs with detailed information in JSON format.
get_load_balancer_amphoraeGet amphora instances for a load balancer or all amphorae.
get_load_balancer_availability_zonesGet load balancer availability zones.
Returns: JSON string containing availability zones information
get_load_balancer_detailsGet detailed information about a specific OpenStack load balancer.
Functions:
Use when user requests:
get_load_balancer_flavorsGet load balancer flavors.
Returns: JSON string containing flavors information
get_load_balancer_health_monitorsGet health monitors, optionally filtered by pool.
Functions:
Use when user requests:
get_load_balancer_l7_policiesGet L7 policies for a listener or all L7 policies.
get_load_balancer_l7_rulesGet L7 rules for a specific L7 policy.
get_load_balancer_listRetrieve comprehensive list of OpenStack load balancers with detailed information.
Functions:
Use when user requests:
get_load_balancer_listenersGet listeners for a specific OpenStack load balancer.
Functions:
Use when user requests:
get_load_balancer_pool_membersGet members for a specific OpenStack load balancer pool.
Functions:
Use when user requests:
get_load_balancer_poolsGet load balancer pools, optionally filtered by listener.
Functions:
Use when user requests:
get_load_balancer_providersGet load balancer providers.
Returns: JSON string containing providers information
get_load_balancer_quotasGet load balancer quotas for a project or all projects.
get_network_detailsProvides detailed information for OpenStack networks, subnets, routers, and security groups.
Functions:
Use when user requests network information, subnet details, router configuration, or network troubleshooting.
get_project_detailsGet OpenStack project details (similar to 'openstack project list/show').
get_quotaGet quota information for projects (similar to 'openstack quota show').
get_resource_monitoringMonitors real-time resource usage across the OpenStack cluster.
Functions:
Use when user requests resource monitoring, capacity planning, usage analysis, or performance monitoring.
Returns: Resource monitoring data in JSON format with cluster summary, hypervisor details, and usage statistics.
get_role_assignmentsGet role assignments for the current project.
Functions:
Use when user requests permission information, access control queries, or security auditing.
Returns: List of role assignments with detailed scope information in JSON format.
get_routersGet list of routers with their configuration.
Functions:
Use when user requests router information, network connectivity queries, or routing configuration.
Returns: List of routers with detailed configuration in JSON format.
get_security_groupsGet list of security groups with their rules.
Functions:
Use when user requests security group information, firewall rules, or network security queries.
Returns: List of security groups with detailed rules in JSON format.
get_server_eventsGet recent events for a specific server
get_server_groupsList all server groups with their details
Returns: JSON string with server groups information
get_server_volumesGet all volumes attached to a specific server
get_service_statusProvides status and health check information for each OpenStack service.
Functions:
Use when user requests service status, API status, health checks, or service troubleshooting.
Returns: Service status information in JSON format with service details and health summary.
get_usage_statisticsGet usage statistics for projects (similar to 'openstack usage list' command).
Functions:
Use when user requests usage statistics, billing information, resource consumption analysis, or project usage reports.
get_user_listGet list of OpenStack users in the current domain.
Functions:
Use when user requests user management information, identity queries, or user administration tasks.
Returns: List of users with detailed information in JSON format.
get_volume_listGet list of all volumes with detailed information.
Functions:
Use when user requests volume listing, volume information, or storage overview.
Returns: Detailed volume list in JSON format with volume information, attachments, and metadata.
get_volume_snapshotsGet list of volume snapshots.
Functions:
Use when user requests snapshot information, backup queries, or volume restoration planning.
Returns: List of volume snapshots with detailed information in JSON format.
get_volume_typesGet list of volume types with their specifications.
Functions:
Use when user requests volume type information, storage backend queries, or volume creation planning.
Returns: List of volume types with detailed specifications in JSON format.
search_instancesSearch for OpenStack instances based on various criteria with efficient pagination.
Functions:
BEFORE YOU INSTALL
41 tools when we connected; the project documents 93. Every default tool is a read; the set_* modify tools register only with ALLOW_MODIFY_OPERATIONS=true, and changing it requires a restart.
REMOTE_SECRET_KEY in your environment
INSTALLATION
uvx mcp-openstack-ops{
"mcpServers": {
"mcp-openstack-ops": {
"command": "uvx",
"args": [
"--python",
"3.12",
"mcp-openstack-ops"
],
"env": {
"OS_AUTH_HOST": "<YOUR_OS_AUTH_HOST>",
"OS_AUTH_PORT": "5000",
"OS_PROJECT_NAME": "<YOUR_OS_PROJECT_NAME>",
"OS_USERNAME": "<YOUR_OS_USERNAME>",
"OS_PASSWORD": "<YOUR_OS_PASSWORD>",
"OS_USER_DOMAIN_NAME": "Default",
"OS_PROJECT_DOMAIN_NAME": "Default",
"OS_REGION_NAME": "RegionOne",
"OS_IDENTITY_API_VERSION": "3",
"OS_INTERFACE": "internal",
"OS_COMPUTE_PORT": "8774",
"OS_NETWORK_PORT": "9696",
"OS_VOLUME_PORT": "8776",
"OS_IMAGE_PORT": "9292",
"OS_PLACEMENT_PORT": "8780",
"OS_HEAT_STACK_PORT": "8004",
"OS_HEAT_STACK_CFN_PORT": "18888",
"ALLOW_MODIFY_OPERATIONS": "false",
"MCP_LOG_LEVEL": "INFO"
}
}
}
}{
"mcpServers": {
"openstack-production": {
"command": "uvx",
"args": [
"--python",
"3.12",
"mcp-openstack-ops"
],
"env": {
"OS_PROJECT_NAME": "production",
"OS_USERNAME": "admin",
"OS_PASSWORD": "<YOUR_OS_PASSWORD>",
"OS_AUTH_HOST": "192.168.35.2"
}
},
"openstack-development": {
"command": "uvx",
"args": [
"--python",
"3.12",
"mcp-openstack-ops"
],
"env": {
"OS_PROJECT_NAME": "development",
"OS_USERNAME": "admin",
"OS_PASSWORD": "<YOUR_OS_PASSWORD>",
"OS_AUTH_HOST": "192.168.35.2"
}
},
"openstack-testing": {
"command": "uvx",
"args": [
"--python",
"3.12",
"mcp-openstack-ops"
],
"env": {
"OS_PROJECT_NAME": "testing",
"OS_USERNAME": "admin",
"OS_PASSWORD": "<YOUR_OS_PASSWORD>",
"OS_AUTH_HOST": "192.168.35.2"
}
}
}
}One entry per OpenStack project, each with its own OS_PROJECT_NAME. The README's version of this block starts each entry with python -m mcp_openstack_ops, which only works where the package is installed into that python; these entries use the same uvx launch as the single-project setup instead. admin and 192.168.35.2 are samples; yours are your OpenStack username and host. Copy any other OS_* settings you need from the single-project block.
{
"mcpServers": {
"mcp-openstack-ops": {
"type": "streamable-http",
"url": "http://<YOUR_SERVER>:8000/mcp",
"headers": {
"Authorization": "Bearer <YOUR_SECURE_SECRET_KEY>"
}
}
}
}For a server you run yourself in streamable-http mode. With REMOTE_AUTH_ENABLE=true and REMOTE_SECRET_KEY in that server's .env (or --auth-enable --secret-key), the value after Bearer is that same key, and <YOUR_SERVER> is the server's address. The Claude Desktop setups run over stdio and need neither.
Clients spell the "type" value differently: Claude Code and VS Code use "http", Cline uses "streamableHttp", and Roo Code uses "streamable-http". Claude Desktop does not accept a URL entry in its config file; remote servers go under Settings → Connectors.