servers / python-openstackmcp-server

python-openstackmcp-server MCP server

communitystdiolocaldestructive capablehealthy

openstack mcp server


01Tools · 75

How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.

ToolRiskSide effectsApproval
get_server
Get a specific Compute server.
readfalseunknown
get_servers
Get the list of Compute servers. :return: A list of Server objects.
readfalseunknown
delete_region
Delete a region.
destructivetruetrue
get_project
Get a project.
readfalseunknown
delete_network
Delete a Network.
destructivetruetrue
get_port_detail
Get detailed information about a specific Port.
readfalseunknown
get_domains
Get the list of Identity domains. :return: A list of Domain objects representing the domains.
readfalseunknown
delete_project
Delete a project.
destructivetruetrue
get_network_detail
Get detailed information about a specific Network.
readfalseunknown
get_ports
Get the list of Ports with optional filtering.
readfalseunknown
delete_port
Delete a Port.
destructivetruetrue
delete_domain
Delete a domain.
destructivetruetrue
delete_subnet
Delete a Subnet.
destructivetruetrue
delete_floating_ip
Delete a Floating IP.
destructivetruetrue
delete_router
Delete a Router.
destructivetruetrue
delete_security_group
Delete a Security Group.
destructivetruetrue
delete_volume
Delete a volume.
destructivetruetrue
get_cloud_config
Provide cloud configuration with secrets masked of current user's config file. :return: Cloud configuration dictionary with credentials masked.
readfalseunknown
get_router_interfaces
List interfaces attached to a Router.
readfalseunknown
get_security_group_detail
Get detailed information about a specific Security Group.
readfalseunknown
get_volume_details
Get detailed information about a specific volume.
readfalseunknown
get_attachment_details
Get detailed information about a specific attachment.
readfalseunknown
get_cloud_name
Return the currently selected cloud name. :return: current OpenStack cloud name.
readfalseunknown
create_region
Create a new region.
writetrueunknown
get_port_allowed_address_pairs
Get allowed address pairs configured on a port.
readfalseunknown
remove_router_interface
Remove an interface from a Router by subnet or port. Provide either subnet_id or port_id.
destructivetruetrue
get_domain
Get a domain.
readfalseunknown
get_images
Get the list of OpenStack images with optional filtering. The filtering behavior is as follows: - By default, all available images are returned without any filtering applied. - Filters are only applied when specific values are provided by the user.
readfalseunknown
create_image
Create a new Openstack image. This method handles both cases of image creation: 1. If a volume is provided, it creates an image from the volume. 2. If no volume is provided, it creates an image using the Image imports method import_options field is required for this method. Following import methods are supported: - glance-direct: The image data is made available to the Image service via the Stage binary - web-download: The image data is made available to the Image service by being posted to an accessible location with a URL that you know. - must provide a URI to the image data. - copy-image: The image data is made available to the Image service by copying existing image - glance-download: The image data is made available to the Image service by fetching an image accessible from another glance service specified by a region name and an image id that you know. - must provide a glance_region and glance_image_id.
writetrueunknown
get_subnets
Get the list of Subnets with optional filtering. Use this to narrow results by network, project, IP version, gateway presence, and DHCP-enabled state. Notes: - has_gateway is applied client-side after retrieval and checks whether `gateway_ip` is set. - `is_dhcp_enabled` maps to Neutron's `enable_dhcp` filter. - Combining filters further restricts the result (logical AND). Examples: - All IPv4 subnets in a network: `network_id="net-1"`, `ip_version=4` - Only subnets with a gateway: `has_gateway=True` - DHCP-enabled subnets for a project: `project_id="proj-1"`, `is_dhcp_enabled=True`
readfalseunknown
create_subnet
Create a new Subnet.
writetrueunknown
update_port
Update an existing Port. Only provided parameters are changed; omitted parameters remain untouched. Typical use-cases: - Set admin state down: is_admin_state_up=False - Toggle admin state: read current via get_port_detail(); pass inverted value - Replace security groups: security_group_ids=["sg-1", "sg-2"] - Replace allowed address pairs: 1) current = get_port_allowed_address_pairs(port_id) 2) edit the list (append/remove dicts) 3) update_port(port_id, allowed_address_pairs=current) - Replace fixed IPs: 1) current = get_port_detail(port_id).fixed_ips 2) edit the list 3) update_port(port_id, fixed_ips=current) Notes: - List-typed fields (security groups, allowed address pairs, fixed IPs) replace the entire list with the provided value. Pass [] to remove all entries. - For fixed IPs, each dict typically includes keys like "subnet_id" and/or "ip_address". Examples: - Add a fixed IP: read current, append a new {"subnet_id": "subnet-2", "ip_address": "10.0.1.10"}, then pass fixed_ips=[...] - Clear all security groups: security_group_ids=[]
writetrueunknown
create_floating_ip
Create a new Floating IP. Typical use-cases: - Allocate in a pool and attach immediately: provide port_id (and optionally fixed_ip_address). - Allocate for later use: omit port_id (unassigned state). - Add metadata: provide description.
writetrueunknown
update_floating_ip
Update Floating IP attributes. Only provided parameters are changed; omitted parameters remain untouched. Typical use-cases: - Attach to a port: port_id="port-1" (optionally fixed_ip_address="10.0.0.10"). - Detach from its port: clear_port=True and omit port_id (sets port_id=None). - Keep current port: clear_port=False and omit port_id. - Update description: description="new desc" or clear with description=None. - Reassign to another port: port_id="new-port" (optionally with fixed_ip_address). Notes: - Passing None for description clears it. - clear_port controls whether to detach when no port_id is provided. - fixed_ip_address is optional and can be provided alongside port_id.
writetrueunknown
create_router
Create a new Router. Typical use-cases: - Create basic router: name="r1" (defaults to admin_state_up=True) - Create distributed router: is_distributed=True - Create with external gateway for north-south traffic: external_gateway_info={"network_id": "ext-net", "enable_snat": True, "external_fixed_ips": [{"subnet_id": "ext-subnet", "ip_address": "203.0.113.10"}]} - Create with project ownership: project_id="proj-1" Notes: - external_gateway_info should follow Neutron schema: at minimum include "network_id"; optional keys include "enable_snat" and "external_fixed_ips".
writetrueunknown
add_router_interface
Add an interface to a Router by subnet or port. Provide either subnet_id or port_id.
writetrueunknown
get_cloud_names
List available cloud configurations. :return: Names of OpenStack clouds from user's config file.
readfalseunknown
get_router_detail
Get detailed information about a specific Router.
readfalseunknown
update_router
Update Router attributes atomically. Only provided parameters are changed; omitted parameters remain untouched. Typical use-cases: - Rename and change description: name="r-new", description="d". - Toggle admin state: read current via get_router_detail(); pass inverted bool to is_admin_state_up. - Set distributed flag: is_distributed=True or False. - Set external gateway: external_gateway_info={"network_id": "ext-net", "enable_snat": True, "external_fixed_ips": [...]}. - Clear external gateway: clear_external_gateway=True (takes precedence over external_gateway_info). - Replace static routes: routes=[{"destination": "192.0.2.0/24", "nexthop": "10.0.0.1"}]. Pass [] to remove all routes. Notes: - For list-typed fields (routes), the provided list replaces the entire list on the server. - To clear external gateway, use clear_external_gateway=True. If both provided, clear_external_gateway takes precedence.
writetrueunknown
set_cloud_name
Set cloud name to use for later connections. Must set name from currently valid cloud config file.
writetrueunknown
get_flavors
Get flavors (server hardware configurations). :return: A list of Flavor objects.
readfalseunknown
delete_image
Delete an OpenStack image.
destructivetruetrue
create_domain
Create a new domain.
writetrueunknown
get_projects
Get the list of Identity projects. :return: A list of Project objects representing the projects.
readfalseunknown
get_volumes
Get the list of Block Storage volumes. :return: A list of Volume objects representing the volumes.
readfalseunknown
create_floating_ips_bulk
Create multiple floating IPs on the specified external network.
writetrueunknown
delete_server
Delete a Compute server.
destructivetruetrue
get_image
Get an OpenStack image by ID.
readfalseunknown
detach_volume
Detach a volume from a Compute server.
unknownunknownunknown
assign_first_available_floating_ip
Assign the first available floating IP from a network to a port. If none are available, create a new one and assign it.
writetrueunknown
update_server
Update a Compute server's name, hostname, or description.
writetrueunknown
create_network
Create a new Network.
writetrueunknown
update_network
Update an existing Network.
writetrueunknown
update_subnet
Update subnet attributes atomically. Only provided parameters are changed; omitted parameters remain untouched. Typical use-cases: - Set gateway: `gateway_ip="10.0.0.1"`. - Clear gateway: `clear_gateway=True`. - Enable/disable DHCP: `is_dhcp_enabled=True or False`. - Batch updates: update name/description and DNS nameservers together. Notes: - `clear_gateway=True` explicitly clears `gateway_ip` (sets to None). If both `gateway_ip` and `clear_gateway=True` are provided, `clear_gateway` takes precedence. - For list-typed fields (`dns_nameservers`, `allocation_pools`, `host_routes`), the provided list replaces the entire list on the server. Pass `[]` to remove all entries. - For a DHCP toggle, read the current value via `get_subnet_detail()` and pass the inverted boolean to `is_dhcp_enabled`. Examples: - Clear the gateway and disable DHCP: `clear_gateway=True`, `is_dhcp_enabled=False` - Replace DNS servers: `dns_nameservers=["8.8.8.8", "1.1.1.1"]`
writetrueunknown
set_port_binding
Set binding attributes for a port.
writetrueunknown
action_server
Perform an action on a Compute server.
unknownunknownunknown
attach_volume
Attach a volume to a Compute server.
unknownunknownunknown
get_subnet_detail
Get detailed information about a specific Subnet.
readfalseunknown
get_routers
Get the list of Routers with optional filtering.
readfalseunknown
get_regions
Get the list of Identity regions. :return: A list of Region objects representing the regions.
readfalseunknown
update_region
Update a region.
writetrueunknown
create_project
Create a new project.
writetrueunknown
extend_volume
Extend a volume to a new size.
unknownunknownunknown
get_attachments
Get the list of attachments.
readfalseunknown
get_security_groups
Get the list of Security Groups with optional filtering.
readfalseunknown
update_security_group
Update an existing Security Group.
writetrueunknown
create_security_group
Create a new Security Group.
writetrueunknown
create_server
Create a new Compute server.
writetrueunknown
update_project
Update a project.
writetrueunknown
get_floating_ips
Get the list of Floating IPs with optional filtering.
readfalseunknown
create_port
Create a new Port.
writetrueunknown
get_networks
Get the list of Networks with optional filtering.
readfalseunknown
get_region
Get a region.
readfalseunknown
update_domain
Update a domain.
writetrueunknown
create_volume
Create a new volume.
writetrueunknown

02Install & source
uvx python-openstackmcp-server
uvx

03Access granted
Generate images · writeMaps & location · write

The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.


05Provenance & freshness
sourcesGitHub repo search [p4]
last_checked2026-08-16 11:20Z
next_check2026-08-18 11:12Z
cadenceevery 48h
verifiedtools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed
index_statusindex9 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. python-openstackmcp-server MCP — as seen on mcpexplorer.com

[![python-openstackmcp-server MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/python-openstackmcp-server.svg)](https://mcpexplorer.com/servers/python-openstackmcp-server)

Next step

This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.

Explore loadouts →