90+ production-safe OpenStack tools for AI agents via MCP. Project-scoped & read-only by default. Works with Claude, Open WebUI & any MCP client. FastMCP + OpenStack SDK. Available on PyPI, Docker Hub & Smithery.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http counts 41 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
get_availability_zones
-
get_floating_ip_pools
-
get_floating_ips
-
get_heat_stacks
-
get_hypervisor_details
-
get_image_detail_list
-
get_instance
-
get_instance_by_name
-
get_instance_details
-
get_instances_by_status
-
get_keypair_list
-
get_load_balancer_amphorae
-
get_load_balancer_availability_zones
-
get_load_balancer_details
-
get_load_balancer_flavors
-
get_load_balancer_health_monitors
-
get_load_balancer_l7_policies
-
get_load_balancer_l7_rules
-
get_load_balancer_list
-
get_load_balancer_listeners
-
get_load_balancer_pool_members
-
get_load_balancer_pools
-
get_load_balancer_providers
-
get_load_balancer_quotas
-
get_network_details
-
get_project_details
-
get_quota
-
get_resource_monitoring
-
get_role_assignments
-
get_routers
-
get_security_groups
-
get_server_events
-
get_server_groups
-
get_server_volumes
-
get_service_status
-
get_usage_statistics
-
get_user_list
-
get_volume_list
-
get_volume_snapshots
-
get_volume_types
-
search_instances
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 3f82bed · analyzer v33 · 1w ago
skills & prompt files 1
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 124
filesystem 1
- fs call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/mcp_main.py :278
with open(file_path, 'r', encoding='utf-8') as f:
network 2
- net call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/mcp_main.py :458
logging.getLogger("aiohttp.client").setLevel("WARNING") # reduce noise at DEBUG - net call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/services/core.py :96
import requests
secrets 3
- secrets call518-MCP-OpenStack-Ops-3f82bed/diagnose_openstack.py :24
password=os.environ.get('OS_PASSWORD'), - secrets call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/connection.py :98
password=os.environ.get("OS_PASSWORD"), - secrets call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/mcp_main.py :482
secret_key = args.secret_key or os.getenv("REMOTE_SECRET_KEY", "")
tool registrations 41
- get_availability_zones call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_availability_zones.py :11
- get_floating_ip_pools call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_floating_ip_pools.py :11
- get_floating_ips call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_floating_ips.py :11
- get_heat_stacks call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_heat_stacks.py :11
- get_hypervisor_details call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_hypervisor_details.py :11
- get_image_detail_list call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_image_detail_list.py :11
- get_instance call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_instance.py :15
- get_instance_by_name call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_instance_by_name.py :11
- get_instance_details call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_instance_details.py :11
- get_instances_by_status call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_instances_by_status.py :11
- get_keypair_list call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_keypair_list.py :11
- get_load_balancer_amphorae call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_amphorae.py :11
- get_load_balancer_availability_zones call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_availability_zones.py :11
- get_load_balancer_details call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_details.py :11
- get_load_balancer_flavors call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_flavors.py :11
- get_load_balancer_health_monitors call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_health_monitors.py :10
- get_load_balancer_l7_policies call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_l7_policies.py :11
- get_load_balancer_l7_rules call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_l7_rules.py :11
- get_load_balancer_list call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_list.py :11
- get_load_balancer_listeners call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_listeners.py :11
- get_load_balancer_pool_members call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_pool_members.py :10
- get_load_balancer_pools call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_pools.py :11
- get_load_balancer_providers call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_providers.py :11
- get_load_balancer_quotas call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_load_balancer_quotas.py :11
- get_network_details call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_network_details.py :11
- get_project_details call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_project_details.py :11
- get_quota call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_quota.py :11
- get_resource_monitoring call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_resource_monitoring.py :11
- get_role_assignments call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_role_assignments.py :11
- get_routers call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_routers.py :11
- get_security_groups call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_security_groups.py :11
- get_server_events call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_server_events.py :11
- get_server_groups call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_server_groups.py :11
- get_server_volumes call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_server_volumes.py :11
- get_service_status call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_service_status.py :11
- get_usage_statistics call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_usage_statistics.py :11
- get_user_list call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_user_list.py :11
- get_volume_list call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_volume_list.py :11
- get_volume_snapshots call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_volume_snapshots.py :11
- get_volume_types call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/get_volume_types.py :11
- search_instances call518-MCP-OpenStack-Ops-3f82bed/src/mcp_openstack_ops/tools/search_instances.py :11
declared dependencies 7
- fastmcp@>=2.12.3
- openstacksdk@>=4.1.0,<=4.17.0
- python-dotenv@>=1.1.1
- setuptools-scm@>=10.0.5
- pre-commit@>=4.6.0
- pytest@>=7.0.0
- pytest-asyncio@>=0.21.0