Skip to main content

Cloud Compute & Storage MCP — Full Capabilities Reference

Complete technical reference for every tool, action, and parameter exposed by this MCP server.


Overview

PropertyValue
Tools10
Total actions85
TransportStreamable HTTP (/mcp) + optional STDIO
AuthAuthorization: apikey <key>, x-api-key, or CLOUD_API_KEY env
DomainsCompute, Storage, Networking, Load Balancing, Security, IP Management

1. discover_infrastructure

One-stop discovery of projects, regions, and quota capacity.

ActionDescriptionRequired ParamsOptional Params
discoverReturns all projects and regions. Optionally enriches each region with quota data (fetched in parallel).include_quotas, client_id
create_projectCreates a new project.project_name

Parameters:

NameTypeDefaultDescription
action"discover" | "create_project""discover"Operation to perform
include_quotasboolfalseEnrich regions with quota capacity (needs client_id)
client_idintAccount ID for quota lookups
project_namestrName for the new project (only with create_project)

Returns:

  • discover: {"projects": [...], "regions": [...]}
    With include_quotas=True: each region gets quotas and has_capacity fields, sorted capacity-first.
  • create_project: {"project": {...}}

2. provision_vm

Smart, quota-aware VM provisioning in a single call. Replaces the 6-step manual workflow: list_projects → list_regions → list_images → list_flavors → create → poll.

Parameters:

NameTypeDefaultRequiredDescription
namestrYesVM name (3-63 chars, alphanumeric + . - _)
image_patternstrYesRegex to match OS image (e.g. "ubuntu.*24", "centos")
flavor_patternstrYesRegex to match flavor (e.g. "g1-standard-2-4", "standard-2")
boot_disk_gbint20NoBoot disk size in GB
project_idintenv defaultNoProject ID
region_idintenv defaultNoRegion ID. Omit + provide client_id for auto-selection
client_idintNoEnables quota pre-check and auto-region selection
user_datastrNoCloud-init script in base64. Ignored when password is set. See cloud-init examples
network_typestr"external"NoInterface type: "external", "subnet", "any_subnet", "reserved_fixed_ip"
volume_idslist[str]NoExisting volume IDs to attach as data disks alongside the boot disk

Intelligence built-in:

  • Fetches images + flavors in parallel
  • Matches by regex on display_name then name
  • Detects image architecture (ARM/x86) and filters flavors for compatibility
  • Pre-checks VM count, external IP, and volume storage quotas when client_id provided
  • Auto-selects first region with capacity when region_id omitted + client_id given

Returns: {"instance": {...}, "region_id": int, "image_used": {...}, "flavor_used": str}


3. provision_baremetal

Smart, quota-aware bare metal server provisioning.

Parameters:

NameTypeDefaultRequiredDescription
namestrYesServer name
image_patternstrYesRegex to match OS image
flavor_patternstrYesRegex to match bare metal flavor (e.g. "bm1-hf")
project_idintenv defaultNoProject ID
region_idintenv defaultNoRegion ID
client_idintNoFor auto-region selection via quota check
user_datastrNoCloud-init user data (base64)
network_typestr"external"NoNetwork type

Returns: {"server": {...}, "region_id": int, "image_used": {...}, "flavor_used": str}


4. provision_load_balancer

Create a load balancer with optional quota pre-check.

Parameters:

NameTypeDefaultRequiredDescription
namestrYesLB name
project_idintenv defaultNoProject ID
region_idintenv defaultNoRegion ID
client_idintNoChecks LB quota before creating
flavorstrNoLB flavor (e.g. "lb1-1-2", "lb2-2-2"). Use manage_compute(action="list_lb_flavors") to see options
listenerslist[dict]NoListener configs. Each needs: name, protocol, protocol_port. Can include nested pools with members
vip_network_idstrNoVIP network. Default: external network
vip_subnet_idstrNoVIP subnet within the VIP network

Returns: {"load_balancer": {...}}


5. manage_compute

VM and bare metal lifecycle, network interfaces, and catalog browsing.

Actions

ActionDescriptionRequired ParamsOptional Params
VM Lifecycle
list_vmsList all VMsproject_id, region_id, limit, offset
get_vmVM details (status, IPs, flavor, volumes)instance_idproject_id, region_id
start_vmPower on a VMinstance_idproject_id, region_id
stop_vmPower off a VMinstance_idproject_id, region_id
delete_vmDelete a VM (stop first!)instance_idproject_id, region_id
resize_vmChange VM flavor (stop first!)instance_id, flavor_idproject_id, region_id
update_vmRename a VMinstance_idname, project_id, region_id
Network Interfaces
list_interfacesList VM network interfacesinstance_idproject_id, region_id
attach_interfaceAdd network to running VMinstance_id, network_typenetwork_id, subnet_id, port_id, project_id, region_id
detach_interfaceRemove network from VMinstance_id, port_id, ip_addressproject_id, region_id
Bare Metal
list_baremetalList bare metal serversproject_id, region_id, limit, offset
rebuild_baremetalRebuild server OSserver_id, image_iduser_data, project_id, region_id
Catalog
list_imagesList available VM OS imagesproject_id, region_id, limit, offset
list_vm_flavorsList VM sizes/pricinginclude_prices, project_id, region_id
list_baremetal_imagesList bare metal OS imagesproject_id, region_id
list_baremetal_flavorsList bare metal sizesproject_id, region_id
list_lb_flavorsList load balancer sizesproject_id, region_id

attach_interface network_type options:

  • "external" — public IP (default)
  • "subnet" — private; also needs network_id + subnet_id
  • "any_subnet" — auto-picks subnet; needs network_id
  • "reserved_fixed_ip" — use existing reserved IP; needs port_id

6. manage_storage

Block storage volumes and volume snapshots.

Actions

ActionDescriptionRequired ParamsOptional Params
Volumes
list_volumesList all volumesproject_id, region_id, limit, offset
get_volumeVolume details (size, status, attachments)volume_idproject_id, region_id
create_volumeCreate a new volumename, sizetype_name, source, project_id, region_id
delete_volumeDelete a volume (detach first!)volume_idproject_id, region_id
extend_volumeResize volume (increase only)volume_id, size (new total GB)project_id, region_id
attach_volumeAttach volume to a VMvolume_id, instance_idattachment_tag, project_id, region_id
detach_volumeDetach volume from a VMvolume_idproject_id, region_id
Snapshots
create_snapshotSnapshot a volumename, volume_iddescription, project_id, region_id
get_snapshotSnapshot detailssnapshot_idproject_id, region_id
update_snapshotRename a snapshotsnapshot_idname, project_id, region_id
delete_snapshotDelete a snapshotsnapshot_idproject_id, region_id

Volume source values:

ValueDescription
"new-volume"Blank disk (default)
"image"Boot from an OS image
"snapshot"Restore from a snapshot

Volume type_name values:

ValueDescription
"standard"Network SSD, 6 IOPS/GiB, max 4500 IOPS
"ssd_hiiops"High-performance SSD, 60 IOPS/GiB, max 9000 IOPS
"ssd_lowlatency"Low-latency SSD, avg 300µs. No snapshots or resize
"cold"Cold storage, cost-optimized
"ultra"Ultra-high performance

7. manage_networking

Networks, subnets, and routers.

Actions

ActionDescriptionRequired ParamsOptional Params
Networks
list_networksList all networksproject_id, region_id, limit, offset
get_networkNetwork detailsnetwork_idproject_id, region_id
create_networkCreate a networknamecreate_router_flag, network_type, project_id, region_id
update_networkRename a networknetwork_idname, project_id, region_id
delete_networkDelete a networknetwork_idproject_id, region_id
Subnets
list_subnetsList subnets in a networknetwork_idproject_id, region_id, limit, offset
get_subnetSubnet detailssubnet_idproject_id, region_id
create_subnetCreate a subnetname, network_id, cidrenable_dhcp, dns_nameservers, gateway_ip, connect_to_network_router, project_id, region_id
delete_subnetDelete a subnetsubnet_idproject_id, region_id
Routers
list_routersList all routersproject_id, region_id, limit, offset
get_routerRouter detailsrouter_idproject_id, region_id
create_routerCreate a routernameexternal_gateway_info, interfaces, routes, project_id, region_id
update_routerUpdate a routerrouter_idname, external_gateway_info, routes, project_id, region_id
delete_routerDelete a routerrouter_idproject_id, region_id
attach_subnetAttach subnet to routerrouter_id, subnet_idip_address, project_id, region_id
detach_subnetDetach subnet from routerrouter_id, subnet_idproject_id, region_id

create_subnet defaults: DHCP enabled, auto-connects to network's router.


8. manage_ips

Floating IPs (public) and reserved fixed IPs (private or VIP).

Actions

ActionDescriptionRequired ParamsOptional Params
Floating IPs
list_floating_ipsList public IPsproject_id, region_id, limit, offset
get_floating_ipFloating IP detailsfloating_ip_idproject_id, region_id
create_floating_ipAllocate a new public IPport_id, project_id, region_id
assign_floating_ipAssign to a port/VMfloating_ip_id, port_idfixed_ip_address, project_id, region_id
unassign_floating_ipDetach from portfloating_ip_idproject_id, region_id
delete_floating_ipRelease a public IPfloating_ip_idproject_id, region_id
Reserved Fixed IPs
list_reserved_ipsList reserved IPsproject_id, region_id, limit, offset
get_reserved_ipReserved IP detailsport_idproject_id, region_id
create_reserved_ip_externalReserve on external networkis_vip, project_id, region_id
create_reserved_ip_subnetReserve on a subnetsubnet_idis_vip, project_id, region_id
update_reserved_ipToggle VIP flagport_idis_vip, project_id, region_id
delete_reserved_ipDelete reserved IPport_idproject_id, region_id

9. manage_security

Security groups (firewall rules) and SSH keys.

Actions

ActionDescriptionRequired ParamsOptional Params
Security Groups
list_security_groupsList all groupsproject_id, region_id, limit, offset
get_security_groupGroup details + rulesgroup_idproject_id, region_id
create_security_groupCreate group with rulesnamedescription, rules, project_id, region_id
update_security_groupUpdate group/rulesgroup_idname, description, rules, project_id, region_id
delete_security_groupDelete a groupgroup_idproject_id, region_id
SSH Keys
list_ssh_keysList SSH keys (project-scoped)project_id, limit, offset
get_ssh_keyKey detailsssh_key_idproject_id
create_ssh_keyImport or generate an SSH keynamepublic_key, shared_in_project, project_id
update_ssh_keyUpdate sharing flagssh_key_idshared_in_project, project_id
delete_ssh_keyDelete an SSH keyssh_key_idproject_id

Security group rule example:

{
"direction": "ingress",
"protocol": "tcp",
"port_range_min": 80,
"port_range_max": 80,
"remote_ip_prefix": "0.0.0.0/0"
}

SSH key modes:

  • Import: provide public_key (e.g. "ssh-rsa AAAA...")
  • Generate: omit public_key — server generates a keypair and returns the private key (save it immediately!)

10. manage_load_balancers

Full load balancer lifecycle: LBs, listeners (front-end ports), pools (backend groups), and members (backend servers).

Actions

ActionDescriptionRequired ParamsOptional Params
LB Lifecycle
listList all load balancersproject_id, region_id, limit, offset
getLB details (VIP, listeners, status)load_balancer_idproject_id, region_id
updateRename a LBload_balancer_idname, project_id, region_id
deleteDelete a LBload_balancer_idproject_id, region_id
Listeners
list_listenersList listeners on a LBload_balancer_idproject_id, region_id
create_listenerAdd front-end listenerload_balancer_id, name, protocol, protocol_portproject_id, region_id
get_listenerListener detailslistener_idproject_id, region_id
delete_listenerRemove a listenerlistener_idproject_id, region_id
Pools
list_poolsList pools on a LBload_balancer_idproject_id, region_id
create_poolCreate backend poolname, lb_algorithm, protocolload_balancer_id, listener_id, project_id, region_id
get_poolPool details + memberspool_idproject_id, region_id
delete_poolDelete a poolpool_idproject_id, region_id
Members
add_memberAdd backend server to poolpool_id, address, protocol_portinstance_id, subnet_id, weight, project_id, region_id
delete_memberRemove server from poolpool_id, member_idproject_id, region_id

Listener protocols: HTTP, HTTPS, TCP, UDP, TERMINATED_HTTPS

Pool algorithms: ROUND_ROBIN, LEAST_CONNECTIONS, SOURCE_IP

Pool protocols: HTTP, HTTPS, TCP, UDP


Common Parameters (All Tools)

ParameterDescriptionDefault Behavior
project_idSubstrate Cloud project IDFalls back to CLOUD_DEFAULT_PROJECT_ID env var
region_idSubstrate Cloud region IDFalls back to CLOUD_DEFAULT_REGION_ID env var
limitPagination page size100
offsetPagination offset0

Environment Variables

VariableRequiredDescription
CLOUD_API_KEYYes (or via header)Substrate Cloud API key
CLOUD_DEFAULT_PROJECT_IDNoDefault project for all tools
CLOUD_DEFAULT_REGION_IDNoDefault region for all tools
HOSTNoServer bind address (default 0.0.0.0)
PORTNoServer port (default 8000)
LOG_LEVELNoLogging level (default info)

Error Handling

All API errors return detailed messages in the format:

Cloud API error <status_code>: <detailed response body>

Common error patterns:

  • 400 — Invalid parameters (missing required fields, wrong values)
  • 403 — Insufficient permissions or API key issue
  • 404 — Resource not found (wrong ID)
  • 409 — Conflict (e.g. deleting attached volume, resizing running VM)
  • Quota exceeded — Pre-check catches this before API call when client_id is provided