mcp-openstack-ops 3.5.9__tar.gz → 3.6.0__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.
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.env.example +3 -2
- mcp_openstack_ops-3.6.0/.github/workflows/tests.yml +28 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.gitignore +4 -1
- mcp_openstack_ops-3.6.0/AGENTS.md +42 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/PKG-INFO +175 -93
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/README.md +174 -92
- mcp_openstack_ops-3.6.0/docs/main-live-retest-2026-10-30.json +2342 -0
- mcp_openstack_ops-3.6.0/docs/main-live-retest-2026-10-30.md +268 -0
- mcp_openstack_ops-3.6.0/docs/main-live-validation-2026-10-30.json +2745 -0
- mcp_openstack_ops-3.6.0/docs/main-live-validation-2026-10-30.md +315 -0
- mcp_openstack_ops-3.6.0/docs/multi-user-phase1.md +300 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/connection.py +6 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/mcp_main.py +29 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/compute.py +71 -50
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/core.py +26 -18
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/monitoring.py +20 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/network.py +12 -6
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/orchestration.py +2 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_health_monitors.py +1 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_pool_members.py +1 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_heat_stack.py +0 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_image.py +0 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_pool.py +1 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_pool_member.py +1 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_quota.py +36 -1
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_backup.py +2 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_properties.py +4 -4
- mcp_openstack_ops-3.6.0/src/mcp_openstack_ops/user_connection.py +294 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops.egg-info/PKG-INFO +175 -93
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops.egg-info/SOURCES.txt +12 -2
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops.egg-info/scm_file_list.json +11 -1
- mcp_openstack_ops-3.6.0/src/mcp_openstack_ops.egg-info/scm_version.json +8 -0
- mcp_openstack_ops-3.6.0/tests/test_floating_ip.py +99 -0
- mcp_openstack_ops-3.6.0/tests/test_instance_image.py +108 -0
- mcp_openstack_ops-3.6.0/tests/test_live_regressions.py +242 -0
- mcp_openstack_ops-3.6.0/tests/test_user_connection.py +362 -0
- mcp_openstack_ops-3.5.9/img/screenshot-claude-desktop.png:Zone.Identifier +0 -4
- mcp_openstack_ops-3.5.9/src/mcp_openstack_ops.egg-info/scm_version.json +0 -8
- mcp_openstack_ops-3.5.9/tests/test_floating_ip.py +0 -42
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.env.test +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.github/FUNDING.yml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.github/copilot-instructions.md +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.github/dependabot.yml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.github/workflows/pypi-publish.yml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.gitleaks.toml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.pre-commit-config.yaml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/.python-version +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/Dockerfile.MCP-Server +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/Dockerfile.MCPO-Proxy +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/LICENSE +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/MANIFEST.in +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/build-mcp-server-docker-image.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/build-mcpo-server-docker-image.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/diagnose_openstack.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/docker-compose.yml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/docs/integration-validation.md +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/img/MCP-Workflow-of-Quickstart-Tutorial.png +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/img/screenshot-claude-desktop.png +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/img/screenshot-example-cluster-status.png +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/img/screenshot-openstack-dashboard.png +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/main.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/mcp-config.json.http +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/mcp-config.json.multi-project +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/mcp-config.json.stdio +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/pyproject.toml +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/scripts/check_release.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/scripts/mcp-server-docker-cmd.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/scripts/publish_release.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/scripts/run-mcp-inspector-local.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/scripts/run-mcp-inspector-pypi.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/setup.cfg +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/__init__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/__main__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/functions.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/prompt_template.md +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/__init__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/alarms.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/identity.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/image.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/load_balancer/__init__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/load_balancer/amphorae.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/load_balancer/core.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/load_balancer/health_monitors.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/load_balancer/l7_policies.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/load_balancer/listeners.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/load_balancer/management.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/load_balancer/pools.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/services/storage.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/__init__.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_availability_zones.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_domains.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_floating_ip_pools.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_floating_ips.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_heat_stack_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_heat_stacks.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_hypervisor_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_identity_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_image_detail_list.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_image_members.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_instance.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_instance_by_name.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_instance_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_instances_by_status.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_keypair_list.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_amphorae.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_availability_zones.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_flavors.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_l7_policies.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_l7_rules.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_list.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_listeners.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_pools.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_providers.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_load_balancer_quotas.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_network_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_network_qos_policies.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_project_details.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_quota.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_resource_monitoring.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_role_assignments.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_routers.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_security_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_server_events.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_server_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_server_volumes.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_service_status.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_usage_statistics.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_user_list.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_volume_backups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_volume_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_volume_list.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_volume_qos.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_volume_snapshots.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_volume_transfers.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/get_volume_types.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/search_instances.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_alarms.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_compute_agents.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_domains.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_flavor.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_floating_ip.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_floating_ip_port_forwarding.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_identity_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_image_members.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_image_metadata.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_image_visibility.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_instance.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_keypair.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_amphora.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_availability_zone.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_flavor.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_health_monitor.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_l7_policy.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_l7_rule.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_listener.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_load_balancer_quota.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_metrics.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_network_agents.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_network_ports.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_network_qos_policies.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_networks.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_project.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_roles.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_routers.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_security_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_dump.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_fixed_ip.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_floating_ip.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_group.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_migration.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_network.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_security_group.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_server_volume.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_service_logs.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_services.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_snapshot.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_subnets.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_users.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_volume.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_volume_backups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_volume_groups.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_volume_qos.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops/tools/set_volume_types.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops.egg-info/dependency_links.txt +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops.egg-info/entry_points.txt +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops.egg-info/requires.txt +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/src/mcp_openstack_ops.egg-info/top_level.txt +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/test_compatibility.sh +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/test_project_isolation.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/tests/test_connection.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/tests/test_operational_tools.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/tests/test_publish_release.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/tests/test_release.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/tests/test_tool_registration.py +0 -0
- {mcp_openstack_ops-3.5.9 → mcp_openstack_ops-3.6.0}/uv.lock +0 -0
|
@@ -19,8 +19,9 @@ FASTMCP_TYPE=streamable-http
|
|
|
19
19
|
FASTMCP_HOST=0.0.0.0
|
|
20
20
|
FASTMCP_PORT=8000
|
|
21
21
|
|
|
22
|
-
# (Optional) Enable authentication for streamable-http mode
|
|
23
|
-
#
|
|
22
|
+
# (Optional) Enable HTTP Bearer token authentication for streamable-http mode.
|
|
23
|
+
# Clients must send Authorization: Bearer <REMOTE_SECRET_KEY> when enabled.
|
|
24
|
+
# Recommended for production; use a strong, unique REMOTE_SECRET_KEY.
|
|
24
25
|
REMOTE_AUTH_ENABLE=false
|
|
25
26
|
REMOTE_SECRET_KEY=your-secure-secret-key-here
|
|
26
27
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Unit tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main", "feat/73-per-user-connections"]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
timeout-minutes: 10
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v7
|
|
17
|
+
with:
|
|
18
|
+
persist-credentials: false
|
|
19
|
+
fetch-depth: 0
|
|
20
|
+
- uses: actions/setup-python@v7
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.12.x"
|
|
23
|
+
- name: Install uv
|
|
24
|
+
run: pip install uv==0.7.20
|
|
25
|
+
- name: Install locked test dependencies
|
|
26
|
+
run: uv sync --locked --extra dev
|
|
27
|
+
- name: Run unit tests without cloud credentials
|
|
28
|
+
run: uv run --locked --extra dev python -m pytest -q tests
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Repository instructions
|
|
2
|
+
|
|
3
|
+
These instructions supplement the user's global guidelines. They do not authorize
|
|
4
|
+
Git writes, external publication, or changes to existing cloud resources.
|
|
5
|
+
|
|
6
|
+
## Maintain the CLI-to-tool mapping and validation snapshot
|
|
7
|
+
|
|
8
|
+
For every improvement or fix, review README.md's **OpenStack CLI vs MCP Tools
|
|
9
|
+
Mapping** section. Keep its summary, tool rows, Status, Notes, and linked evidence
|
|
10
|
+
consistent with the resulting implementation and actual verification.
|
|
11
|
+
|
|
12
|
+
- Update affected rows whenever tools, actions, parameters, prerequisites,
|
|
13
|
+
permissions, limitations, or behavior change. Use registered tool names and
|
|
14
|
+
supported actions; do not advertise missing tools or unimplemented actions.
|
|
15
|
+
- Distinguish implementation from verification. Mark implemented paths without
|
|
16
|
+
successful live validation as **Live unverified**, with the specific reason.
|
|
17
|
+
Missing services/APIs, policy denials, failures, and timeouts are not passes.
|
|
18
|
+
Keep intentional capability limitations and unimplemented actions explicit.
|
|
19
|
+
- Keep **Live tool checks** and **Local unit tests** in separate summary groups.
|
|
20
|
+
Live classifications count unique tools; unit tests count test cases. Multiple
|
|
21
|
+
tests for one tool do not increase the unique-tool count. Keep classification
|
|
22
|
+
totals consistent with the stated inventory and scope.
|
|
23
|
+
- Show unit-test results concisely as `160/160 (100%)`, using the actual results,
|
|
24
|
+
not this example's values. Account for failures and skipped tests separately
|
|
25
|
+
when present; do not count skipped tests as passes. Do not treat unit-test
|
|
26
|
+
success as proof of live service functionality.
|
|
27
|
+
- Run relevant verification after functional changes. Update dates, source
|
|
28
|
+
revision or working-tree identity, counts, percentages, and evidence links only
|
|
29
|
+
from checks actually performed. Do not present an older snapshot as validation
|
|
30
|
+
of newer code. Mark affected paths as unverified or the snapshot as outdated
|
|
31
|
+
when validation cannot be repeated.
|
|
32
|
+
- Replace a complete live summary only after repeating its stated coverage.
|
|
33
|
+
Label targeted retests as partial; do not extrapolate them to the full toolset.
|
|
34
|
+
Document polling limits and distinguish accepted requests from confirmed final
|
|
35
|
+
resource states. Explain changes in test conditions that affect comparisons.
|
|
36
|
+
- Keep dated reports as historical evidence and link the latest applicable
|
|
37
|
+
report from README.md. Reports must state verification limits, observed
|
|
38
|
+
failures, and cleanup results without exposing credentials, private endpoints,
|
|
39
|
+
or sensitive resource data.
|
|
40
|
+
- Before completion, check summary arithmetic, percentages, tool/action names,
|
|
41
|
+
Status/Notes, source identity, and evidence links for agreement. If README.ko.md
|
|
42
|
+
exists, maintain equivalent information in both README files.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-openstack-ops
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.6.0
|
|
4
4
|
Summary: OpenStack operations automation MCP server
|
|
5
5
|
Author-email: JungJungIn <call518@gmail.com>
|
|
6
6
|
Requires-Python: >=3.12
|
|
@@ -41,6 +41,11 @@ Dynamic: license-file
|
|
|
41
41
|
|
|
42
42
|
## Features
|
|
43
43
|
|
|
44
|
+
Experimental per-user remote connections are available for testing with the
|
|
45
|
+
opt-in `--multi-user` mode. See the [phase 1 setup and validation guide](docs/multi-user-phase1.md)
|
|
46
|
+
for authentication, client limitations, and the test checklist. Administrator
|
|
47
|
+
cross-project queries are outside this phase.
|
|
48
|
+
|
|
44
49
|
- ✅ **Project-Scoped Operations**: Every tool enforces the configured `OS_PROJECT_NAME`, validating resource ownership so actions stay inside a single tenant.
|
|
45
50
|
- ✅ **Safety-Gated Writes**: Modify (`set_*`) tooling only registers when `ALLOW_MODIFY_OPERATIONS=true`, keeping default deployments read-only and auditable.
|
|
46
51
|
- ✅ **90+ Purpose-Built Tools**: Broad coverage across compute, networking, storage, images, identity, Heat, and Octavia load balancing tasks. Project resources are scoped to the active project; cloud-wide administrative APIs remain subject to OpenStack policy.
|
|
@@ -178,13 +183,44 @@ New consolidated `get_instance` tool replaces multiple separate tools:
|
|
|
178
183
|
|
|
179
184
|
## 📊 OpenStack CLI vs MCP Tools Mapping
|
|
180
185
|
|
|
181
|
-
**
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
+
**Validation snapshot — 2026-10-30** (main working tree based on `dd98993`,
|
|
187
|
+
with the uncommitted fixes described in the report):
|
|
188
|
+
|
|
189
|
+
<table border="1" rules="cols">
|
|
190
|
+
<thead>
|
|
191
|
+
<tr><th>Verification type</th><th>Item</th><th>Result</th></tr>
|
|
192
|
+
</thead>
|
|
193
|
+
<tbody>
|
|
194
|
+
<tr><td rowspan="5">Live tool checks</td><td>Registered tools invoked and classified</td><td><strong>105</strong></td></tr>
|
|
195
|
+
<tr><td>Passed within the exercised live scenarios</td><td><strong>74</strong></td></tr>
|
|
196
|
+
<tr><td>Implemented, live unverified: service/API unavailable</td><td><strong>28</strong></td></tr>
|
|
197
|
+
<tr><td>Intentional capability limitations</td><td><strong>3</strong></td></tr>
|
|
198
|
+
<tr><td>Reproduced code defects / state-check timeouts in the retest</td><td><strong>0 / 0</strong></td></tr>
|
|
199
|
+
<tr><td>Local unit tests</td><td>Test cases in <code>tests/test_*.py</code></td><td><strong>160/160 (100%)</strong></td></tr>
|
|
200
|
+
</tbody>
|
|
201
|
+
</table>
|
|
202
|
+
|
|
203
|
+
State polling allowed 180 seconds; soft reboot completed in 131.66 seconds
|
|
204
|
+
(previously it exceeded the 90-second check). No reboot implementation change
|
|
205
|
+
was needed.
|
|
206
|
+
|
|
207
|
+
The 10 previously reproduced tool defects were corrected. The 28 unavailable
|
|
208
|
+
paths are **not live-validated successes**: 24 Octavia tools, two Neutron QoS
|
|
209
|
+
tools, one Aodh tool, and one Neutron port-forwarding tool. Each affected table
|
|
210
|
+
row is marked **⚠️ Live unverified**. An absent tool/action is marked **❌ Not
|
|
211
|
+
implemented** rather than presented as an available feature.
|
|
212
|
+
|
|
213
|
+
✅ means an implemented API path; it does not certify every action or backend.
|
|
214
|
+
The live-pass count covers only the scenarios in the
|
|
215
|
+
[latest retest report](docs/main-live-retest-2026-10-30.md), with
|
|
216
|
+
[sanitized evidence](docs/main-live-retest-2026-10-30.json). API policy, asynchronous
|
|
217
|
+
completion, production HTTPS/client compatibility, load, and guest I/O limits
|
|
218
|
+
are stated there. All test resources were cleaned up; the final audit found zero
|
|
219
|
+
remaining test resources across 24 categories. See also
|
|
186
220
|
[API prerequisites and result semantics](#api-prerequisites-and-result-semantics).
|
|
187
221
|
|
|
222
|
+
**Detailed Mapping by Category**
|
|
223
|
+
|
|
188
224
|
### 1. 🖥️ **Compute (Nova)**
|
|
189
225
|
|
|
190
226
|
| OpenStack CLI Command | MCP Tool | Status | Notes |
|
|
@@ -194,7 +230,7 @@ Live-validated paths and deployment limits are listed in
|
|
|
194
230
|
| `openstack server create` | `set_instance` (action="create") | ✅ | **ENHANCED** - Bulk creation support |
|
|
195
231
|
| `openstack server start/stop/reboot` | `set_instance` | ✅ | **ENHANCED** - Bulk operations with filtering |
|
|
196
232
|
| `openstack server delete` | `set_instance` (action="delete") | ✅ | **ENHANCED** - Bulk deletion with name_contains filtering |
|
|
197
|
-
| `openstack server backup create` | `set_server_backup` | ✅ |
|
|
233
|
+
| `openstack server backup create` | `set_server_backup` | ✅ | Nova backup action with rotation; asynchronous, no custom metadata |
|
|
198
234
|
| `openstack server image create` | `set_instance` (action="snapshot") | ✅ | Image/snapshot creation |
|
|
199
235
|
| `openstack server shelve/unshelve` | `set_instance` | ✅ | Instance shelving |
|
|
200
236
|
| `openstack server lock/unlock` | `set_instance` | ✅ | Instance locking |
|
|
@@ -226,11 +262,11 @@ Live-validated paths and deployment limits are listed in
|
|
|
226
262
|
| `openstack server remove volume` | `set_server_volume` (action="detach") | ✅ | Volume detachment |
|
|
227
263
|
| `openstack server set` | `set_server_properties` (action="set") | ✅ | Server property setting |
|
|
228
264
|
| `openstack server unset` | `set_server_properties` (action="unset") | ✅ | Server property unsetting |
|
|
229
|
-
| `openstack server dump create` | `set_server_dump` |
|
|
265
|
+
| `openstack server dump create` | `set_server_dump` | ❌ Unsupported | Returns an explicit unsupported result; no dump is created |
|
|
230
266
|
| `openstack server event list` | `get_server_events` | ✅ | Server event tracking |
|
|
231
267
|
| `openstack server group list` | `get_server_groups` | ✅ | Server group listing |
|
|
232
268
|
| `openstack server group create/delete` | `set_server_group` | ✅ | Server group management |
|
|
233
|
-
| `openstack flavor list` | `
|
|
269
|
+
| `openstack flavor list` | `set_flavor` (action="list") | ✅ | Requires modification tools to be enabled for registration |
|
|
234
270
|
| `openstack flavor create/delete` | `set_flavor` | ✅ | Flavor management |
|
|
235
271
|
| `openstack keypair list` | `get_keypair_list` | ✅ | Keypair listing |
|
|
236
272
|
| `openstack keypair create/delete` | `set_keypair` | ✅ | Keypair management |
|
|
@@ -257,17 +293,17 @@ Live-validated paths and deployment limits are listed in
|
|
|
257
293
|
| `openstack floating ip show` | `set_floating_ip` (action="show") | ✅ | Floating IP details |
|
|
258
294
|
| `openstack floating ip unset` | `set_floating_ip` (action="unset") | ✅ | Floating IP property clearing |
|
|
259
295
|
| `openstack floating ip pool list` | `get_floating_ip_pools` | ✅ | Floating IP pool listing |
|
|
260
|
-
| `openstack floating ip port forwarding create` | `set_floating_ip_port_forwarding` (action="create") |
|
|
261
|
-
| `openstack floating ip port forwarding delete` | `set_floating_ip_port_forwarding` (action="delete") |
|
|
262
|
-
| `openstack floating ip port forwarding list` | `set_floating_ip_port_forwarding` (action="list") |
|
|
263
|
-
| `openstack floating ip port forwarding set` | `set_floating_ip_port_forwarding` (action="set") |
|
|
264
|
-
| `openstack floating ip port forwarding show` | `set_floating_ip_port_forwarding` (action="show") |
|
|
296
|
+
| `openstack floating ip port forwarding create` | `set_floating_ip_port_forwarding` (action="create") | ⚠️ Live unverified | Implemented; test platform port-forwarding endpoint returns HTTP 404 |
|
|
297
|
+
| `openstack floating ip port forwarding delete` | `set_floating_ip_port_forwarding` (action="delete") | ⚠️ Live unverified | Implemented; test platform port-forwarding endpoint returns HTTP 404 |
|
|
298
|
+
| `openstack floating ip port forwarding list` | `set_floating_ip_port_forwarding` (action="list") | ⚠️ Live unverified | Implemented; test platform port-forwarding endpoint returns HTTP 404 |
|
|
299
|
+
| `openstack floating ip port forwarding set` | `set_floating_ip_port_forwarding` (action="set") | ⚠️ Live unverified | Implemented; test platform port-forwarding endpoint returns HTTP 404 |
|
|
300
|
+
| `openstack floating ip port forwarding show` | `set_floating_ip_port_forwarding` (action="show") | ⚠️ Live unverified | Implemented; test platform port-forwarding endpoint returns HTTP 404 |
|
|
265
301
|
| `openstack security group list` | `get_security_groups` | ✅ | Security group listing |
|
|
266
302
|
| `openstack security group create/delete` | `set_security_groups` | ✅ | Project-owned security groups |
|
|
267
303
|
| `openstack port list` | `get_network_details` (includes ports) | ✅ | Port information included |
|
|
268
304
|
| `openstack port create/delete` | `set_network_ports` | ✅ | Port management |
|
|
269
|
-
| `openstack network qos policy list` | `get_network_qos_policies` |
|
|
270
|
-
| `openstack network qos policy create` | `set_network_qos_policies` |
|
|
305
|
+
| `openstack network qos policy list` | `get_network_qos_policies` | ⚠️ Live unverified | Implemented; test platform QoS endpoint returns HTTP 404 |
|
|
306
|
+
| `openstack network qos policy create` | `set_network_qos_policies` | ⚠️ Live unverified | Implemented; test platform QoS endpoint returns HTTP 404. Policy containers only; no bandwidth rules |
|
|
271
307
|
| `openstack network agent list` | `get_service_status` (includes agents) | ✅ | Network agents |
|
|
272
308
|
| `openstack network agent set` | `set_network_agents` | ✅ | Enable/disable cloud-wide agents; usually admin-only |
|
|
273
309
|
|
|
@@ -349,95 +385,95 @@ Live-validated paths and deployment limits are listed in
|
|
|
349
385
|
|
|
350
386
|
| OpenStack CLI Command | MCP Tool | Status | Notes |
|
|
351
387
|
|---------------------|---------|------|------|
|
|
352
|
-
| `openstack loadbalancer list` | `
|
|
353
|
-
| `openstack loadbalancer show` | `
|
|
354
|
-
| `openstack loadbalancer create` | `set_load_balancer` (action="create") |
|
|
355
|
-
| `openstack loadbalancer delete` | `set_load_balancer` (action="delete") |
|
|
356
|
-
| `openstack loadbalancer set` | `set_load_balancer` (action="update") |
|
|
357
|
-
| `openstack loadbalancer stats show` | `
|
|
358
|
-
| `openstack loadbalancer status show` | `
|
|
359
|
-
| `openstack loadbalancer failover` | `set_load_balancer` (action="failover") |
|
|
360
|
-
| `openstack loadbalancer unset` | `set_load_balancer` (action="unset") |
|
|
388
|
+
| `openstack loadbalancer list` | `get_load_balancer_list` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer listing with pagination |
|
|
389
|
+
| `openstack loadbalancer show` | `get_load_balancer_details` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer detailed information |
|
|
390
|
+
| `openstack loadbalancer create` | `set_load_balancer` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer creation |
|
|
391
|
+
| `openstack loadbalancer delete` | `set_load_balancer` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer deletion |
|
|
392
|
+
| `openstack loadbalancer set` | `set_load_balancer` (action="update") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer property update |
|
|
393
|
+
| `openstack loadbalancer stats show` | `set_load_balancer` (action="stats") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer statistics |
|
|
394
|
+
| `openstack loadbalancer status show` | `set_load_balancer` (action="status") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer status tree |
|
|
395
|
+
| `openstack loadbalancer failover` | `set_load_balancer` (action="failover") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer failover |
|
|
396
|
+
| `openstack loadbalancer unset` | `set_load_balancer` (action="unset") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Load balancer property unset |
|
|
361
397
|
| **Listener Management** | | | |
|
|
362
|
-
| `openstack loadbalancer listener list` | `get_load_balancer_listeners` |
|
|
363
|
-
| `openstack loadbalancer listener create` | `set_load_balancer_listener` (action="create") |
|
|
364
|
-
| `openstack loadbalancer listener delete` | `set_load_balancer_listener` (action="delete") |
|
|
365
|
-
| `openstack loadbalancer listener show` | `get_load_balancer_listeners` |
|
|
366
|
-
| `openstack loadbalancer listener set` | `set_load_balancer_listener` (action="update") |
|
|
367
|
-
| `openstack loadbalancer listener stats show` | `
|
|
368
|
-
| `openstack loadbalancer listener unset` | `set_load_balancer_listener` (action="unset") |
|
|
398
|
+
| `openstack loadbalancer listener list` | `get_load_balancer_listeners` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Listener listing for load balancer |
|
|
399
|
+
| `openstack loadbalancer listener create` | `set_load_balancer_listener` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Listener creation (HTTP/HTTPS/TCP/UDP) |
|
|
400
|
+
| `openstack loadbalancer listener delete` | `set_load_balancer_listener` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Listener deletion |
|
|
401
|
+
| `openstack loadbalancer listener show` | `get_load_balancer_listeners` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Listener detailed information |
|
|
402
|
+
| `openstack loadbalancer listener set` | `set_load_balancer_listener` (action="update") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Listener property update |
|
|
403
|
+
| `openstack loadbalancer listener stats show` | `set_load_balancer_listener` (action="stats") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Listener statistics |
|
|
404
|
+
| `openstack loadbalancer listener unset` | `set_load_balancer_listener` (action="unset") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Listener property unset |
|
|
369
405
|
| **Pool Management** | | | |
|
|
370
|
-
| `openstack loadbalancer pool list` | `get_load_balancer_pools` |
|
|
371
|
-
| `openstack loadbalancer pool create` | `set_load_balancer_pool` (action="create") |
|
|
372
|
-
| `openstack loadbalancer pool delete` | `set_load_balancer_pool` (action="delete") |
|
|
373
|
-
| `openstack loadbalancer pool set` | `set_load_balancer_pool` (action="
|
|
374
|
-
| `openstack loadbalancer pool show` | `get_load_balancer_pools` |
|
|
375
|
-
| `openstack loadbalancer pool stats show` |
|
|
376
|
-
| `openstack loadbalancer pool unset` |
|
|
406
|
+
| `openstack loadbalancer pool list` | `get_load_balancer_pools` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool listing (all or by listener) |
|
|
407
|
+
| `openstack loadbalancer pool create` | `set_load_balancer_pool` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool creation with algorithms |
|
|
408
|
+
| `openstack loadbalancer pool delete` | `set_load_balancer_pool` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool deletion |
|
|
409
|
+
| `openstack loadbalancer pool set` | `set_load_balancer_pool` (action="set") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool property update |
|
|
410
|
+
| `openstack loadbalancer pool show` | `get_load_balancer_pools` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool detailed information |
|
|
411
|
+
| `openstack loadbalancer pool stats show` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
412
|
+
| `openstack loadbalancer pool unset` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
377
413
|
| **Member Management** | | | |
|
|
378
|
-
| `openstack loadbalancer member list` | `
|
|
379
|
-
| `openstack loadbalancer member create` | `
|
|
380
|
-
| `openstack loadbalancer member delete` | `
|
|
381
|
-
| `openstack loadbalancer member set` | `
|
|
382
|
-
| `openstack loadbalancer member show` | `
|
|
383
|
-
| `openstack loadbalancer member unset` |
|
|
414
|
+
| `openstack loadbalancer member list` | `get_load_balancer_pool_members` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool member listing |
|
|
415
|
+
| `openstack loadbalancer member create` | `set_load_balancer_pool_member` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool member creation |
|
|
416
|
+
| `openstack loadbalancer member delete` | `set_load_balancer_pool_member` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool member deletion |
|
|
417
|
+
| `openstack loadbalancer member set` | `set_load_balancer_pool_member` (action="set") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool member property update |
|
|
418
|
+
| `openstack loadbalancer member show` | `get_load_balancer_pool_members` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Pool member detailed information |
|
|
419
|
+
| `openstack loadbalancer member unset` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
384
420
|
| **Health Monitor Management** | | | |
|
|
385
|
-
| `openstack loadbalancer healthmonitor list` | `get_load_balancer_health_monitors` |
|
|
386
|
-
| `openstack loadbalancer healthmonitor create` | `set_load_balancer_health_monitor` (action="create") |
|
|
387
|
-
| `openstack loadbalancer healthmonitor delete` | `set_load_balancer_health_monitor` (action="delete") |
|
|
388
|
-
| `openstack loadbalancer healthmonitor set` | `set_load_balancer_health_monitor` (action="
|
|
389
|
-
| `openstack loadbalancer healthmonitor show` | `get_load_balancer_health_monitors` |
|
|
390
|
-
| `openstack loadbalancer healthmonitor unset` |
|
|
421
|
+
| `openstack loadbalancer healthmonitor list` | `get_load_balancer_health_monitors` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Health monitor listing |
|
|
422
|
+
| `openstack loadbalancer healthmonitor create` | `set_load_balancer_health_monitor` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Health monitor creation |
|
|
423
|
+
| `openstack loadbalancer healthmonitor delete` | `set_load_balancer_health_monitor` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Health monitor deletion |
|
|
424
|
+
| `openstack loadbalancer healthmonitor set` | `set_load_balancer_health_monitor` (action="set") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Health monitor update |
|
|
425
|
+
| `openstack loadbalancer healthmonitor show` | `get_load_balancer_health_monitors` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Health monitor detailed information |
|
|
426
|
+
| `openstack loadbalancer healthmonitor unset` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
391
427
|
| **L7 Policy Management** | | | |
|
|
392
|
-
| `openstack loadbalancer l7policy list` | `get_load_balancer_l7_policies` |
|
|
393
|
-
| `openstack loadbalancer l7policy create` | `set_load_balancer_l7_policy` (action="create") |
|
|
394
|
-
| `openstack loadbalancer l7policy delete` | `set_load_balancer_l7_policy` (action="delete") |
|
|
395
|
-
| `openstack loadbalancer l7policy set` |
|
|
396
|
-
| `openstack loadbalancer l7policy show` | `get_load_balancer_l7_policies` |
|
|
397
|
-
| `openstack loadbalancer l7policy unset` |
|
|
428
|
+
| `openstack loadbalancer l7policy list` | `get_load_balancer_l7_policies` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. L7 policy listing |
|
|
429
|
+
| `openstack loadbalancer l7policy create` | `set_load_balancer_l7_policy` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. L7 policy creation |
|
|
430
|
+
| `openstack loadbalancer l7policy delete` | `set_load_balancer_l7_policy` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. L7 policy deletion |
|
|
431
|
+
| `openstack loadbalancer l7policy set` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
432
|
+
| `openstack loadbalancer l7policy show` | `get_load_balancer_l7_policies` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. L7 policy details |
|
|
433
|
+
| `openstack loadbalancer l7policy unset` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
398
434
|
| **L7 Rule Management** 🆕 | | | |
|
|
399
|
-
| `openstack loadbalancer l7rule list` | `get_load_balancer_l7_rules` |
|
|
400
|
-
| `openstack loadbalancer l7rule create` | `set_load_balancer_l7_rule` (action="create") |
|
|
401
|
-
| `openstack loadbalancer l7rule delete` | `set_load_balancer_l7_rule` (action="delete") |
|
|
402
|
-
| `openstack loadbalancer l7rule set` |
|
|
403
|
-
| `openstack loadbalancer l7rule show` | `get_load_balancer_l7_rules` |
|
|
404
|
-
| `openstack loadbalancer l7rule unset` |
|
|
435
|
+
| `openstack loadbalancer l7rule list` | `get_load_balancer_l7_rules` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. L7 rule listing |
|
|
436
|
+
| `openstack loadbalancer l7rule create` | `set_load_balancer_l7_rule` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. L7 rule creation |
|
|
437
|
+
| `openstack loadbalancer l7rule delete` | `set_load_balancer_l7_rule` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. L7 rule deletion |
|
|
438
|
+
| `openstack loadbalancer l7rule set` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
439
|
+
| `openstack loadbalancer l7rule show` | `get_load_balancer_l7_rules` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. L7 rule details |
|
|
440
|
+
| `openstack loadbalancer l7rule unset` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
405
441
|
| **Amphora Management** 🆕 | | | |
|
|
406
|
-
| `openstack loadbalancer amphora list` | `get_load_balancer_amphorae` |
|
|
407
|
-
| `openstack loadbalancer amphora show` | `set_load_balancer_amphora` (action="show") |
|
|
408
|
-
| `openstack loadbalancer amphora configure` | `set_load_balancer_amphora` (action="configure") |
|
|
409
|
-
| `openstack loadbalancer amphora failover` | `set_load_balancer_amphora` (action="failover") |
|
|
442
|
+
| `openstack loadbalancer amphora list` | `get_load_balancer_amphorae` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Amphora listing |
|
|
443
|
+
| `openstack loadbalancer amphora show` | `set_load_balancer_amphora` (action="show") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Amphora details |
|
|
444
|
+
| `openstack loadbalancer amphora configure` | `set_load_balancer_amphora` (action="configure") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Amphora configuration |
|
|
445
|
+
| `openstack loadbalancer amphora failover` | `set_load_balancer_amphora` (action="failover") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Amphora failover |
|
|
410
446
|
| `openstack loadbalancer amphora delete` | N/A | ❌ | Not supported by OpenStack SDK |
|
|
411
447
|
| `openstack loadbalancer amphora stats show` | N/A | ❌ | Not supported by OpenStack SDK |
|
|
412
448
|
| **Provider Management** | | | |
|
|
413
|
-
| `openstack loadbalancer provider list` | `get_load_balancer_providers` |
|
|
414
|
-
| `openstack loadbalancer provider capability list` |
|
|
449
|
+
| `openstack loadbalancer provider list` | `get_load_balancer_providers` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Provider listing |
|
|
450
|
+
| `openstack loadbalancer provider capability list` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
415
451
|
| **Availability Zone Management** 🆕 | | | |
|
|
416
|
-
| `openstack loadbalancer availabilityzone list` | `get_load_balancer_availability_zones` |
|
|
417
|
-
| `openstack loadbalancer availabilityzone show` | `get_load_balancer_availability_zones` |
|
|
418
|
-
| `openstack loadbalancer availabilityzone create` | `set_load_balancer_availability_zone` (action="create") |
|
|
419
|
-
| `openstack loadbalancer availabilityzone delete` | `set_load_balancer_availability_zone` (action="delete") |
|
|
420
|
-
| `openstack loadbalancer availabilityzone set` |
|
|
421
|
-
| `openstack loadbalancer availabilityzone unset` |
|
|
452
|
+
| `openstack loadbalancer availabilityzone list` | `get_load_balancer_availability_zones` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Availability zone listing |
|
|
453
|
+
| `openstack loadbalancer availabilityzone show` | `get_load_balancer_availability_zones` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Availability zone details |
|
|
454
|
+
| `openstack loadbalancer availabilityzone create` | `set_load_balancer_availability_zone` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Availability zone creation |
|
|
455
|
+
| `openstack loadbalancer availabilityzone delete` | `set_load_balancer_availability_zone` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Availability zone deletion |
|
|
456
|
+
| `openstack loadbalancer availabilityzone set` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
457
|
+
| `openstack loadbalancer availabilityzone unset` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
422
458
|
| **Flavor Management** 🆕 | | | |
|
|
423
|
-
| `openstack loadbalancer flavor list` | `get_load_balancer_flavors` |
|
|
424
|
-
| `openstack loadbalancer flavor show` | `get_load_balancer_flavors` |
|
|
425
|
-
| `openstack loadbalancer flavor create` | `set_load_balancer_flavor` (action="create") |
|
|
426
|
-
| `openstack loadbalancer flavor delete` | `set_load_balancer_flavor` (action="delete") |
|
|
427
|
-
| `openstack loadbalancer flavor set` |
|
|
428
|
-
| `openstack loadbalancer flavor unset` |
|
|
459
|
+
| `openstack loadbalancer flavor list` | `get_load_balancer_flavors` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Flavor listing |
|
|
460
|
+
| `openstack loadbalancer flavor show` | `get_load_balancer_flavors` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Flavor details |
|
|
461
|
+
| `openstack loadbalancer flavor create` | `set_load_balancer_flavor` (action="create") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Flavor creation |
|
|
462
|
+
| `openstack loadbalancer flavor delete` | `set_load_balancer_flavor` (action="delete") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Flavor deletion |
|
|
463
|
+
| `openstack loadbalancer flavor set` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
464
|
+
| `openstack loadbalancer flavor unset` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
429
465
|
| **Flavor Profile Management** | | | |
|
|
430
|
-
| `openstack loadbalancer flavorprofile list` |
|
|
431
|
-
| `openstack loadbalancer flavorprofile show` |
|
|
432
|
-
| `openstack loadbalancer flavorprofile create` |
|
|
433
|
-
| `openstack loadbalancer flavorprofile set` |
|
|
434
|
-
| `openstack loadbalancer flavorprofile unset` |
|
|
435
|
-
| `openstack loadbalancer flavorprofile delete` |
|
|
466
|
+
| `openstack loadbalancer flavorprofile list` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
467
|
+
| `openstack loadbalancer flavorprofile show` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
468
|
+
| `openstack loadbalancer flavorprofile create` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
469
|
+
| `openstack loadbalancer flavorprofile set` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
470
|
+
| `openstack loadbalancer flavorprofile unset` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
471
|
+
| `openstack loadbalancer flavorprofile delete` | N/A | ❌ Not implemented | No registered tool/action for this CLI operation |
|
|
436
472
|
| **Quota Management** 🆕 | | | |
|
|
437
|
-
| `openstack loadbalancer quota list` | `get_load_balancer_quotas` |
|
|
438
|
-
| `openstack loadbalancer quota show` | `get_load_balancer_quotas` |
|
|
439
|
-
| `openstack loadbalancer quota set` | `set_load_balancer_quota` (action="set") |
|
|
440
|
-
| `openstack loadbalancer quota reset` | `set_load_balancer_quota` (action="reset") |
|
|
473
|
+
| `openstack loadbalancer quota list` | `get_load_balancer_quotas` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Quota listing |
|
|
474
|
+
| `openstack loadbalancer quota show` | `get_load_balancer_quotas` | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Quota details |
|
|
475
|
+
| `openstack loadbalancer quota set` | `set_load_balancer_quota` (action="set") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Quota setting |
|
|
476
|
+
| `openstack loadbalancer quota reset` | `set_load_balancer_quota` (action="reset") | ⚠️ Live unverified | Implemented; Octavia unavailable in the test platform. Quota reset |
|
|
441
477
|
|
|
442
478
|
### 8. 📊 **Monitoring & Logging**
|
|
443
479
|
|
|
@@ -448,7 +484,7 @@ Live-validated paths and deployment limits are listed in
|
|
|
448
484
|
| Cluster overview | `get_service_status` + `get_resource_monitoring` | ✅ | Service probes and current inventory |
|
|
449
485
|
| Service log metadata | `set_service_logs` | Partial | Service listing only; log retrieval is unavailable without a logging backend |
|
|
450
486
|
| Resource metadata | `set_metrics` | Partial | list/summary only; telemetry sample retrieval is unavailable |
|
|
451
|
-
| Alarm management | `set_alarms` |
|
|
487
|
+
| Alarm management | `set_alarms` | ⚠️ Live unverified | Implemented; Aodh/Gnocchi unavailable in the test platform. Requires services and collected metrics |
|
|
452
488
|
| Compute agents | `set_compute_agents` | ✅ | Compute agent management |
|
|
453
489
|
| Usage statistics | `get_usage_statistics` | ✅ | Period compute allocation-hours plus separately labeled current snapshots |
|
|
454
490
|
|
|
@@ -457,7 +493,8 @@ Live-validated paths and deployment limits are listed in
|
|
|
457
493
|
| OpenStack CLI Command | MCP Tool | Status | Notes |
|
|
458
494
|
|---------------------|---------|------|------|
|
|
459
495
|
| `openstack quota show` | `get_quota` | ✅ | Quota query |
|
|
460
|
-
| `openstack quota set` | `set_quota` | ✅ |
|
|
496
|
+
| `openstack quota set` | `set_quota` (action="set") | ✅ | Routes supplied fields to Nova/Neutron/Cinder; partial failures are reported |
|
|
497
|
+
| `openstack quota delete` | `set_quota` (action="delete") | ✅ | Resets all three service quotas to defaults; requires modification tools |
|
|
461
498
|
| `openstack usage show` | `get_usage_statistics` | ✅ | Current-project Nova simple tenant usage; not monetary charges |
|
|
462
499
|
| `openstack limits show` | `get_quota` (includes limits) | ✅ | Limits query |
|
|
463
500
|
| Resource allocations | `get_resource_monitoring` | ✅ | Flavor allocations; not CPU load or resident memory samples |
|
|
@@ -626,6 +663,51 @@ Add to your Claude Desktop configuration:
|
|
|
626
663
|
|
|
627
664
|
---
|
|
628
665
|
|
|
666
|
+
## Claude Code Integration
|
|
667
|
+
|
|
668
|
+
Install Claude Code and start the MCP server in `streamable-http` mode first.
|
|
669
|
+
Register the MCP server's `/mcp` URL, not the MCPO/OpenAPI proxy URL. The example
|
|
670
|
+
below uses the Docker host port `18005`; replace the host/port for your deployment
|
|
671
|
+
and use HTTPS for remote connections. Registration does not start the server.
|
|
672
|
+
|
|
673
|
+
For the existing single-account mode with `REMOTE_AUTH_ENABLE=true`, enter the
|
|
674
|
+
server's `REMOTE_SECRET_KEY` without saving its literal value in shell history:
|
|
675
|
+
|
|
676
|
+
```bash
|
|
677
|
+
read -rsp 'MCP Bearer token: ' OPENSTACK_MCP_TOKEN
|
|
678
|
+
echo
|
|
679
|
+
export OPENSTACK_MCP_TOKEN
|
|
680
|
+
|
|
681
|
+
claude mcp add-json --scope user openstack-ops '{"type":"http","url":"http://127.0.0.1:18005/mcp","headers":{"Authorization":"Bearer ${OPENSTACK_MCP_TOKEN}"}}'
|
|
682
|
+
claude mcp list
|
|
683
|
+
claude
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
Keep `OPENSTACK_MCP_TOKEN` exported in the terminal that launches Claude Code.
|
|
687
|
+
`--scope user` saves the registration in your normal user configuration. If server
|
|
688
|
+
authentication is disabled, use this registration command instead:
|
|
689
|
+
|
|
690
|
+
```bash
|
|
691
|
+
claude mcp add --transport http --scope user openstack-ops http://127.0.0.1:18005/mcp
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
In Claude Code, check `/mcp` and ask, for example:
|
|
695
|
+
|
|
696
|
+
```text
|
|
697
|
+
Use openstack-ops to list all instances in the project.
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
Remove the registration when no longer needed (this does not stop the server):
|
|
701
|
+
|
|
702
|
+
```bash
|
|
703
|
+
claude mcp remove --scope user openstack-ops
|
|
704
|
+
unset OPENSTACK_MCP_TOKEN
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
This Bearer configuration uses the server's configured OpenStack account. For
|
|
708
|
+
experimental per-user authentication, see the [phase 1 guide](docs/multi-user-phase1.md).
|
|
709
|
+
See also the [Claude Code MCP documentation](https://code.claude.com/docs/en/mcp).
|
|
710
|
+
|
|
629
711
|
## Server Configuration
|
|
630
712
|
|
|
631
713
|
### Command Line Options
|