mcp-openstack-ops 3.5.0__tar.gz → 3.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/PKG-INFO +2 -2
  2. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/README.md +0 -1
  3. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/pyproject.toml +12 -2
  4. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops.egg-info/PKG-INFO +2 -2
  5. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops.egg-info/requires.txt +1 -0
  6. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/uv.lock +91 -0
  7. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.env.example +0 -0
  8. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.env.test +0 -0
  9. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.github/FUNDING.yml +0 -0
  10. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.github/copilot-instructions.md +0 -0
  11. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.github/dependabot.yml +0 -0
  12. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.github/workflows/pypi-publish.yml +0 -0
  13. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.gitignore +0 -0
  14. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.gitleaks.toml +0 -0
  15. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.pre-commit-config.yaml +0 -0
  16. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/.python-version +0 -0
  17. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/Dockerfile.MCP-Server +0 -0
  18. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/Dockerfile.MCPO-Proxy +0 -0
  19. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/LICENSE +0 -0
  20. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/MANIFEST.in +0 -0
  21. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/build-mcp-server-docker-image.sh +0 -0
  22. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/build-mcpo-server-docker-image.sh +0 -0
  23. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/diagnose_openstack.py +0 -0
  24. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/docker-compose.yml +0 -0
  25. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/img/MCP-Workflow-of-Quickstart-Tutorial.png +0 -0
  26. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/img/screenshot-claude-desktop.png +0 -0
  27. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/img/screenshot-claude-desktop.png:Zone.Identifier +0 -0
  28. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/img/screenshot-example-cluster-status.png +0 -0
  29. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/img/screenshot-openstack-dashboard.png +0 -0
  30. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/main.py +0 -0
  31. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/mcp-config.json.http +0 -0
  32. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/mcp-config.json.multi-project +0 -0
  33. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/mcp-config.json.stdio +0 -0
  34. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/scripts/mcp-server-docker-cmd.sh +0 -0
  35. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/scripts/run-mcp-inspector-local.sh +0 -0
  36. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/scripts/run-mcp-inspector-pypi.sh +0 -0
  37. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/setup.cfg +0 -0
  38. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/__init__.py +0 -0
  39. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/__main__.py +0 -0
  40. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/connection.py +0 -0
  41. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/functions.py +0 -0
  42. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/mcp_main.py +0 -0
  43. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/prompt_template.md +0 -0
  44. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/__init__.py +0 -0
  45. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/compute.py +0 -0
  46. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/core.py +0 -0
  47. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/identity.py +0 -0
  48. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/image.py +0 -0
  49. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/load_balancer/__init__.py +0 -0
  50. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/load_balancer/amphorae.py +0 -0
  51. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/load_balancer/core.py +0 -0
  52. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/load_balancer/health_monitors.py +0 -0
  53. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/load_balancer/l7_policies.py +0 -0
  54. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/load_balancer/listeners.py +0 -0
  55. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/load_balancer/management.py +0 -0
  56. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/load_balancer/pools.py +0 -0
  57. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/monitoring.py +0 -0
  58. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/network.py +0 -0
  59. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/orchestration.py +0 -0
  60. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/services/storage.py +0 -0
  61. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/__init__.py +0 -0
  62. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_availability_zones.py +0 -0
  63. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_floating_ip_pools.py +0 -0
  64. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_floating_ips.py +0 -0
  65. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_heat_stacks.py +0 -0
  66. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_hypervisor_details.py +0 -0
  67. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_image_detail_list.py +0 -0
  68. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_instance.py +0 -0
  69. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_instance_by_name.py +0 -0
  70. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_instance_details.py +0 -0
  71. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_instances_by_status.py +0 -0
  72. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_keypair_list.py +0 -0
  73. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_amphorae.py +0 -0
  74. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_availability_zones.py +0 -0
  75. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_details.py +0 -0
  76. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_flavors.py +0 -0
  77. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_health_monitors.py +0 -0
  78. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_l7_policies.py +0 -0
  79. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_l7_rules.py +0 -0
  80. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_list.py +0 -0
  81. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_listeners.py +0 -0
  82. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_pool_members.py +0 -0
  83. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_pools.py +0 -0
  84. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_providers.py +0 -0
  85. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_load_balancer_quotas.py +0 -0
  86. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_network_details.py +0 -0
  87. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_project_details.py +0 -0
  88. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_quota.py +0 -0
  89. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_resource_monitoring.py +0 -0
  90. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_role_assignments.py +0 -0
  91. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_routers.py +0 -0
  92. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_security_groups.py +0 -0
  93. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_server_events.py +0 -0
  94. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_server_groups.py +0 -0
  95. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_server_volumes.py +0 -0
  96. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_service_status.py +0 -0
  97. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_usage_statistics.py +0 -0
  98. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_user_list.py +0 -0
  99. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_volume_list.py +0 -0
  100. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_volume_snapshots.py +0 -0
  101. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/get_volume_types.py +0 -0
  102. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/search_instances.py +0 -0
  103. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_alarms.py +0 -0
  104. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_compute_agents.py +0 -0
  105. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_domains.py +0 -0
  106. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_flavor.py +0 -0
  107. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_floating_ip.py +0 -0
  108. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_floating_ip_port_forwarding.py +0 -0
  109. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_heat_stack.py +0 -0
  110. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_identity_groups.py +0 -0
  111. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_image.py +0 -0
  112. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_image_members.py +0 -0
  113. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_image_metadata.py +0 -0
  114. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_image_visibility.py +0 -0
  115. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_instance.py +0 -0
  116. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_keypair.py +0 -0
  117. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer.py +0 -0
  118. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_amphora.py +0 -0
  119. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_availability_zone.py +0 -0
  120. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_flavor.py +0 -0
  121. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_health_monitor.py +0 -0
  122. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_l7_policy.py +0 -0
  123. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_l7_rule.py +0 -0
  124. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_listener.py +0 -0
  125. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_pool.py +0 -0
  126. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_pool_member.py +0 -0
  127. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_load_balancer_quota.py +0 -0
  128. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_metrics.py +0 -0
  129. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_network_agents.py +0 -0
  130. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_network_ports.py +0 -0
  131. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_network_qos_policies.py +0 -0
  132. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_networks.py +0 -0
  133. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_project.py +0 -0
  134. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_quota.py +0 -0
  135. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_roles.py +0 -0
  136. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_backup.py +0 -0
  137. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_dump.py +0 -0
  138. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_fixed_ip.py +0 -0
  139. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_floating_ip.py +0 -0
  140. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_group.py +0 -0
  141. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_migration.py +0 -0
  142. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_network.py +0 -0
  143. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_properties.py +0 -0
  144. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_security_group.py +0 -0
  145. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_server_volume.py +0 -0
  146. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_service_logs.py +0 -0
  147. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_services.py +0 -0
  148. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_snapshot.py +0 -0
  149. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_subnets.py +0 -0
  150. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_volume.py +0 -0
  151. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_volume_backups.py +0 -0
  152. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_volume_groups.py +0 -0
  153. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops/tools/set_volume_qos.py +0 -0
  154. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops.egg-info/SOURCES.txt +0 -0
  155. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops.egg-info/dependency_links.txt +0 -0
  156. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops.egg-info/entry_points.txt +0 -0
  157. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/src/mcp_openstack_ops.egg-info/top_level.txt +0 -0
  158. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/test_compatibility.sh +0 -0
  159. {mcp_openstack_ops-3.5.0 → mcp_openstack_ops-3.5.1}/test_project_isolation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-openstack-ops
3
- Version: 3.5.0
3
+ Version: 3.5.1
4
4
  Summary: OpenStack operations automation MCP server
5
5
  Author-email: JungJungIn <call518@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -10,6 +10,7 @@ Requires-Dist: fastmcp>=2.12.3
10
10
  Requires-Dist: openstacksdk<=4.11.0,>=4.1.0
11
11
  Requires-Dist: python-dotenv>=1.1.1
12
12
  Requires-Dist: setuptools-scm>=10.0.5
13
+ Requires-Dist: pre-commit>=4.6.0
13
14
  Provides-Extra: dev
14
15
  Requires-Dist: pytest>=7.0.0; extra == "dev"
15
16
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
@@ -22,7 +23,6 @@ Dynamic: license-file
22
23
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
23
24
  ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white)
24
25
  ![Docker Pulls](https://img.shields.io/docker/pulls/call518/mcp-server-openstack-ops)
25
- [![smithery badge](https://smithery.ai/badge/@call518/mcp-openstack-ops)](https://smithery.ai/server/@call518/mcp-openstack-ops)
26
26
  [![BuyMeACoffee](https://raw.githubusercontent.com/pachadotdev/buymeacoffee-badges/main/bmc-donate-yellow.svg)](https://www.buymeacoffee.com/call518)
27
27
 
28
28
  [![Deploy to PyPI with tag](https://github.com/call518/MCP-OpenStack-Ops/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/call518/MCP-OpenStack-Ops/actions/workflows/pypi-publish.yml)
@@ -5,7 +5,6 @@
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
6
6
  ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white)
7
7
  ![Docker Pulls](https://img.shields.io/docker/pulls/call518/mcp-server-openstack-ops)
8
- [![smithery badge](https://smithery.ai/badge/@call518/mcp-openstack-ops)](https://smithery.ai/server/@call518/mcp-openstack-ops)
9
8
  [![BuyMeACoffee](https://raw.githubusercontent.com/pachadotdev/buymeacoffee-badges/main/bmc-donate-yellow.svg)](https://www.buymeacoffee.com/call518)
10
9
 
11
10
  [![Deploy to PyPI with tag](https://github.com/call518/MCP-OpenStack-Ops/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/call518/MCP-OpenStack-Ops/actions/workflows/pypi-publish.yml)
@@ -10,6 +10,7 @@ dependencies = [
10
10
  "openstacksdk>=4.1.0,<=4.11.0",
11
11
  "python-dotenv>=1.1.1",
12
12
  "setuptools-scm>=10.0.5",
13
+ "pre-commit>=4.6.0",
13
14
  ]
14
15
 
15
16
  [project.optional-dependencies]
@@ -26,8 +27,17 @@ requires = ["setuptools>=61.0", "wheel", "setuptools-scm"]
26
27
  build-backend = "setuptools.build_meta"
27
28
 
28
29
  [tool.setuptools_scm]
29
- version_scheme = "no-guess-dev"
30
- local_scheme = "no-local-version"
30
+ ### version_scheme options:
31
+ ### uncommented: raises LookupError (uses fallback_version) when not on a tag
32
+ ### commented-out (default guess-next-dev): auto-generates e.g. 1.0.1.dev2+gabcdef for commits after a tag
33
+ # version_scheme = "no-guess-dev"
34
+ ### local_scheme options:
35
+ ### node-and-date (default) e.g. 1.0.1.dev2+gabcdef.d20260430
36
+ ### node-and-timestamp e.g. 1.0.1.dev2+gabcdef.1746000000
37
+ ### dirty-tag e.g. 1.0.1.dev2+dirty (only when working tree is dirty)
38
+ ### no-local-version e.g. 1.0.1.dev2 (omits local part entirely; only this option allows non-tagged commits to be uploaded to PyPI)
39
+ local_scheme = "node-and-date"
40
+ fallback_version = "0.0.0"
31
41
 
32
42
  [tool.setuptools.packages.find]
33
43
  where = ["src"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-openstack-ops
3
- Version: 3.5.0
3
+ Version: 3.5.1
4
4
  Summary: OpenStack operations automation MCP server
5
5
  Author-email: JungJungIn <call518@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -10,6 +10,7 @@ Requires-Dist: fastmcp>=2.12.3
10
10
  Requires-Dist: openstacksdk<=4.11.0,>=4.1.0
11
11
  Requires-Dist: python-dotenv>=1.1.1
12
12
  Requires-Dist: setuptools-scm>=10.0.5
13
+ Requires-Dist: pre-commit>=4.6.0
13
14
  Provides-Extra: dev
14
15
  Requires-Dist: pytest>=7.0.0; extra == "dev"
15
16
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
@@ -22,7 +23,6 @@ Dynamic: license-file
22
23
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
23
24
  ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white)
24
25
  ![Docker Pulls](https://img.shields.io/docker/pulls/call518/mcp-server-openstack-ops)
25
- [![smithery badge](https://smithery.ai/badge/@call518/mcp-openstack-ops)](https://smithery.ai/server/@call518/mcp-openstack-ops)
26
26
  [![BuyMeACoffee](https://raw.githubusercontent.com/pachadotdev/buymeacoffee-badges/main/bmc-donate-yellow.svg)](https://www.buymeacoffee.com/call518)
27
27
 
28
28
  [![Deploy to PyPI with tag](https://github.com/call518/MCP-OpenStack-Ops/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/call518/MCP-OpenStack-Ops/actions/workflows/pypi-publish.yml)
@@ -2,6 +2,7 @@ fastmcp>=2.12.3
2
2
  openstacksdk<=4.11.0,>=4.1.0
3
3
  python-dotenv>=1.1.1
4
4
  setuptools-scm>=10.0.5
5
+ pre-commit>=4.6.0
5
6
 
6
7
  [dev]
7
8
  pytest>=7.0.0
@@ -162,6 +162,15 @@ wheels = [
162
162
  { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" },
163
163
  ]
164
164
 
165
+ [[package]]
166
+ name = "cfgv"
167
+ version = "3.5.0"
168
+ source = { registry = "https://pypi.org/simple" }
169
+ sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload-time = "2025-11-19T20:55:51.612Z" }
170
+ wheels = [
171
+ { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload-time = "2025-11-19T20:55:50.744Z" },
172
+ ]
173
+
165
174
  [[package]]
166
175
  name = "charset-normalizer"
167
176
  version = "3.4.4"
@@ -317,6 +326,15 @@ wheels = [
317
326
  { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" },
318
327
  ]
319
328
 
329
+ [[package]]
330
+ name = "distlib"
331
+ version = "0.4.0"
332
+ source = { registry = "https://pypi.org/simple" }
333
+ sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" }
334
+ wheels = [
335
+ { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" },
336
+ ]
337
+
320
338
  [[package]]
321
339
  name = "dnspython"
322
340
  version = "2.8.0"
@@ -414,6 +432,15 @@ wheels = [
414
432
  { url = "https://files.pythonhosted.org/packages/4f/67/684fa2d2de1e7504549d4ca457b4f854ccec3cd3be03bd86b33b599fbf58/fastmcp-3.2.0-py3-none-any.whl", hash = "sha256:e71aba3df16f86f546a4a9e513261d3233bcc92bef0dfa647bac3fa33623f681", size = 705550, upload-time = "2026-03-30T20:25:35.499Z" },
415
433
  ]
416
434
 
435
+ [[package]]
436
+ name = "filelock"
437
+ version = "3.29.0"
438
+ source = { registry = "https://pypi.org/simple" }
439
+ sdist = { url = "https://files.pythonhosted.org/packages/b5/fe/997687a931ab51049acce6fa1f23e8f01216374ea81374ddee763c493db5/filelock-3.29.0.tar.gz", hash = "sha256:69974355e960702e789734cb4871f884ea6fe50bd8404051a3530bc07809cf90", size = 57571, upload-time = "2026-04-19T15:39:10.068Z" }
440
+ wheels = [
441
+ { url = "https://files.pythonhosted.org/packages/81/47/dd9a212ef6e343a6857485ffe25bba537304f1913bdbed446a23f7f592e1/filelock-3.29.0-py3-none-any.whl", hash = "sha256:96f5f6344709aa1572bbf631c640e4ebeeb519e08da902c39a001882f30ac258", size = 39812, upload-time = "2026-04-19T15:39:08.752Z" },
442
+ ]
443
+
417
444
  [[package]]
418
445
  name = "h11"
419
446
  version = "0.16.0"
@@ -460,6 +487,15 @@ wheels = [
460
487
  { url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960, upload-time = "2025-10-10T21:48:21.158Z" },
461
488
  ]
462
489
 
490
+ [[package]]
491
+ name = "identify"
492
+ version = "2.6.19"
493
+ source = { registry = "https://pypi.org/simple" }
494
+ sdist = { url = "https://files.pythonhosted.org/packages/52/63/51723b5f116cc04b061cb6f5a561790abf249d25931d515cd375e063e0f4/identify-2.6.19.tar.gz", hash = "sha256:6be5020c38fcb07da56c53733538a3081ea5aa70d36a156f83044bfbf9173842", size = 99567, upload-time = "2026-04-17T18:39:50.265Z" }
495
+ wheels = [
496
+ { url = "https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl", hash = "sha256:20e6a87f786f768c092a721ad107fc9df0eb89347be9396cadf3f4abbd1fb78a", size = 99397, upload-time = "2026-04-17T18:39:49.221Z" },
497
+ ]
498
+
463
499
  [[package]]
464
500
  name = "idna"
465
501
  version = "3.11"
@@ -699,6 +735,7 @@ source = { editable = "." }
699
735
  dependencies = [
700
736
  { name = "fastmcp" },
701
737
  { name = "openstacksdk" },
738
+ { name = "pre-commit" },
702
739
  { name = "python-dotenv" },
703
740
  { name = "setuptools-scm" },
704
741
  ]
@@ -713,6 +750,7 @@ dev = [
713
750
  requires-dist = [
714
751
  { name = "fastmcp", specifier = ">=2.12.3" },
715
752
  { name = "openstacksdk", specifier = ">=4.1.0,<=4.11.0" },
753
+ { name = "pre-commit", specifier = ">=4.6.0" },
716
754
  { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.0.0" },
717
755
  { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.21.0" },
718
756
  { name = "python-dotenv", specifier = ">=1.1.1" },
@@ -738,6 +776,15 @@ wheels = [
738
776
  { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" },
739
777
  ]
740
778
 
779
+ [[package]]
780
+ name = "nodeenv"
781
+ version = "1.10.0"
782
+ source = { registry = "https://pypi.org/simple" }
783
+ sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" }
784
+ wheels = [
785
+ { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" },
786
+ ]
787
+
741
788
  [[package]]
742
789
  name = "openapi-pydantic"
743
790
  version = "0.5.1"
@@ -849,6 +896,22 @@ wheels = [
849
896
  { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" },
850
897
  ]
851
898
 
899
+ [[package]]
900
+ name = "pre-commit"
901
+ version = "4.6.0"
902
+ source = { registry = "https://pypi.org/simple" }
903
+ dependencies = [
904
+ { name = "cfgv" },
905
+ { name = "identify" },
906
+ { name = "nodeenv" },
907
+ { name = "pyyaml" },
908
+ { name = "virtualenv" },
909
+ ]
910
+ sdist = { url = "https://files.pythonhosted.org/packages/8e/22/2de9408ac81acbb8a7d05d4cc064a152ccf33b3d480ebe0cd292153db239/pre_commit-4.6.0.tar.gz", hash = "sha256:718d2208cef53fdc38206e40524a6d4d9576d103eb16f0fec11c875e7716e9d9", size = 198525, upload-time = "2026-04-21T20:31:41.613Z" }
911
+ wheels = [
912
+ { url = "https://files.pythonhosted.org/packages/80/6e/4b28b62ecb6aae56769c34a8ff1d661473ec1e9519e2d5f8b2c150086b26/pre_commit-4.6.0-py2.py3-none-any.whl", hash = "sha256:e2cf246f7299edcabcf15f9b0571fdce06058527f0a06535068a86d38089f29b", size = 226472, upload-time = "2026-04-21T20:31:40.092Z" },
913
+ ]
914
+
852
915
  [[package]]
853
916
  name = "psutil"
854
917
  version = "7.2.1"
@@ -1077,6 +1140,19 @@ wheels = [
1077
1140
  { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" },
1078
1141
  ]
1079
1142
 
1143
+ [[package]]
1144
+ name = "python-discovery"
1145
+ version = "1.2.2"
1146
+ source = { registry = "https://pypi.org/simple" }
1147
+ dependencies = [
1148
+ { name = "filelock" },
1149
+ { name = "platformdirs" },
1150
+ ]
1151
+ sdist = { url = "https://files.pythonhosted.org/packages/de/ef/3bae0e537cfe91e8431efcba4434463d2c5a65f5a89edd47c6cf2f03c55f/python_discovery-1.2.2.tar.gz", hash = "sha256:876e9c57139eb757cb5878cbdd9ae5379e5d96266c99ef731119e04fffe533bb", size = 58872, upload-time = "2026-04-07T17:28:49.249Z" }
1152
+ wheels = [
1153
+ { url = "https://files.pythonhosted.org/packages/d8/db/795879cc3ddfe338599bddea6388cc5100b088db0a4caf6e6c1af1c27e04/python_discovery-1.2.2-py3-none-any.whl", hash = "sha256:e1ae95d9af875e78f15e19aed0c6137ab1bb49c200f21f5061786490c9585c7a", size = 31894, upload-time = "2026-04-07T17:28:48.09Z" },
1154
+ ]
1155
+
1080
1156
  [[package]]
1081
1157
  name = "python-dotenv"
1082
1158
  version = "1.2.2"
@@ -1446,6 +1522,21 @@ wheels = [
1446
1522
  { url = "https://files.pythonhosted.org/packages/e6/60/73603fbcdbe5e803855bcce4414f94eaeed449083bd8183e67161af78188/vcs_versioning-1.1.1-py3-none-any.whl", hash = "sha256:b541e2ba79fc6aaa3850f8a7f88af43d97c1c80649c01142ee4146eddbc599e4", size = 79851, upload-time = "2026-03-27T20:42:40.45Z" },
1447
1523
  ]
1448
1524
 
1525
+ [[package]]
1526
+ name = "virtualenv"
1527
+ version = "21.2.4"
1528
+ source = { registry = "https://pypi.org/simple" }
1529
+ dependencies = [
1530
+ { name = "distlib" },
1531
+ { name = "filelock" },
1532
+ { name = "platformdirs" },
1533
+ { name = "python-discovery" },
1534
+ ]
1535
+ sdist = { url = "https://files.pythonhosted.org/packages/0c/98/3a7e644e19cb26133488caff231be390579860bbbb3da35913c49a1d0a46/virtualenv-21.2.4.tar.gz", hash = "sha256:b294ef68192638004d72524ce7ef303e9d0cf5a44c95ce2e54a7500a6381cada", size = 5850742, upload-time = "2026-04-14T22:15:31.438Z" }
1536
+ wheels = [
1537
+ { url = "https://files.pythonhosted.org/packages/27/8d/edd0bd910ff803c308ee9a6b7778621af0d10252219ad9f19ef4d4982a61/virtualenv-21.2.4-py3-none-any.whl", hash = "sha256:29d21e941795206138d0f22f4e45ff7050e5da6c6472299fb7103318763861ac", size = 5831232, upload-time = "2026-04-14T22:15:29.342Z" },
1538
+ ]
1539
+
1449
1540
  [[package]]
1450
1541
  name = "watchfiles"
1451
1542
  version = "1.1.1"