OpenStack
OCI · GHCR.IO/OOMCHILLER/OPENSTACK-MCP-SERVER
Read-only-first OpenStack inspection: servers, images, volumes, networks, Keystone catalog.
Available components
Last scanned (2 hours ago)
Scores higher than 62% of OCI servers
Category Cloud Infrastructure
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 2 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability84
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3542 tokens (~107/item across 33 items; 32 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
- Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 32 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 34 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Checks we ran (12)
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Checks we could not complete (4)
These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.
- Malware scan in Supply Chain Security (scores 0 for this)No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
- Known CVEs in Supply Chain Security (scores 0 for this)Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
- Install scripts in Supply Chain Security (scores 0 for this)Install-script risk not yet assessed.
- Dependency health in Supply Chain Security (scores 0 for this)Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 3 Nov 26 43
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 6 Nov 2026 · Analysed oci/ghcr.io/oomchiller/openstack-mcp-server@0.1.2
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_image Get image ~98
Get one image by ID: status, visibility, formats, size, minimum disk and RAM, tags. Use list_images to find IDs by name. Returns not_found if the image does not exist or is not visible to the selected project.
| Name | Type | Req | Description |
|---|---|---|---|
| image_id | string | yes | Image ID, as returned by list_images. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| checksum | – | – | – |
| container_format | – | – | – |
| created_at | – | – | – |
| disk_format | – | – | – |
| hash_algo | – | – | – |
| hash_value | – | – | – |
| id | string | yes | – |
| is_hidden | – | – | – |
| is_protected | – | – | – |
| min_disk | – | – | – |
| min_ram | – | – | – |
| name | – | – | – |
| owner | – | – | – |
| size | – | – | – |
| status | – | – | – |
| tags | – | – | – |
| updated_at | – | – | – |
| virtual_size | – | – | – |
| visibility | – | – | – |
No examples provided.
get_network Get network ~101
Get one network by ID: status, sharing and external flags, MTU, subnets, provider data. Use list_networks to find IDs, with shared=true for shared networks. Returns not_found if the network is not visible to the selected project.
| Name | Type | Req | Description |
|---|---|---|---|
| network_id | string | yes | Network ID, as returned by list_networks. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| availability_zones | – | – | – |
| description | – | – | – |
| id | string | yes | – |
| is_admin_state_up | – | – | – |
| is_router_external | – | – | – |
| is_shared | – | – | – |
| mtu | – | – | – |
| name | – | – | – |
| project_id | – | – | – |
| provider_network_type | – | – | – |
| provider_physical_network | – | – | – |
| provider_segmentation_id | – | – | – |
| status | – | – | – |
| subnet_ids | – | – | – |
No examples provided.
get_port Get port ~98
Get one port by ID: network, device, MAC, fixed IPs, security groups, address pairs. Use list_ports to find IDs by network or device. Returns not_found if the port is not visible to the selected project.
| Name | Type | Req | Description |
|---|---|---|---|
| port_id | string | yes | Port ID, as returned by list_ports. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| allowed_address_pairs | – | – | – |
| description | – | – | – |
| device_id | – | – | – |
| device_owner | – | – | – |
| fixed_ips | – | – | – |
| id | string | yes | – |
| is_admin_state_up | – | – | – |
| mac_address | – | – | – |
| name | – | – | – |
| network_id | – | – | – |
| project_id | – | – | – |
| security_group_ids | – | – | – |
| status | – | – | – |
No examples provided.
get_router Get router ~95
Get one router by ID: status, external gateway, static routes, HA and distributed flags. Use list_router_interfaces for its internal subnets. Returns not_found if the router is not visible to the selected project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| router_id | string | yes | Router ID, as returned by list_routers. |
| Name | Type | Req | Description |
|---|---|---|---|
| description | – | – | – |
| external_gateway_info | – | – | – |
| id | string | yes | – |
| is_admin_state_up | – | – | – |
| is_distributed | – | – | – |
| is_ha | – | – | – |
| name | – | – | – |
| project_id | – | – | – |
| routes | – | – | – |
| status | – | – | – |
No examples provided.
get_scope Show server scope ~31
Show mode, allowed projects, limits and whether credentials are configured. Does not contact the cloud. Call it first.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| cloud_access_verified | boolean | yes | Always false: get_scope does not contact the cloud. |
| configured | boolean | yes | – |
| credential_source | string | yes | – |
| default_project_id | – | yes | Project used when project_id is omitted; null when the configuration names the project only by name. |
| interface | – | yes | – |
| limits | – | yes | – |
| mode | string | yes | – |
| project_ids | array | yes | Allowlisted projects; empty if none. |
| reason | – | yes | Why the cloud is not usable: missing_credentials, insecure_transport or invalid_cloud_config. |
| region_name | – | yes | – |
| server_version | string | yes | – |
| tls | string | yes | – |
| write_tools_registered | boolean | yes | – |
No examples provided.
get_security_group Get security group ~97
Get one security group by ID with all its rules: direction, protocol, ports, remote. Use list_security_groups to find IDs by name. Returns not_found if the group is not visible to the selected project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| security_group_id | string | yes | Security group ID, as returned by list_security_groups. |
| Name | Type | Req | Description |
|---|---|---|---|
| description | – | – | – |
| id | string | yes | – |
| name | – | – | – |
| project_id | – | – | – |
| security_group_rules | – | – | – |
| stateful | – | – | – |
No examples provided.
get_server Get server ~95
Get one server by ID: status, flavor, image, addresses, security groups and volumes. Use list_servers to find IDs by name or status. Returns not_found if the ID is not in the selected project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| server_id | string | yes | Server ID, as returned by list_servers. |
| Name | Type | Req | Description |
|---|---|---|---|
| addresses | – | – | – |
| attached_volumes | – | – | – |
| availability_zone | – | – | – |
| created_at | – | – | – |
| description | – | – | – |
| flavor | – | – | – |
| hostname | – | – | – |
| id | string | yes | – |
| image | – | – | – |
| key_name | – | – | – |
| name | string | yes | – |
| security_groups | – | – | – |
| status | – | – | – |
| updated_at | – | – | – |
No examples provided.
get_subnet Get subnet ~102
Get one subnet by ID: CIDR, gateway, DHCP, allocation pools, DNS servers and routes. Use list_subnets to find IDs, optionally for one network. Returns not_found if the subnet is not visible to the selected project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| subnet_id | string | yes | Subnet ID, as returned by list_subnets. |
| Name | Type | Req | Description |
|---|---|---|---|
| allocation_pools | – | – | – |
| cidr | – | – | – |
| description | – | – | – |
| dns_nameservers | – | – | – |
| gateway_ip | – | – | – |
| host_routes | – | – | – |
| id | string | yes | – |
| ip_version | – | – | – |
| is_dhcp_enabled | – | – | – |
| name | – | – | – |
| network_id | – | – | – |
| project_id | – | – | – |
No examples provided.
get_volume Get volume ~98
Get one volume by ID: status, size (GiB), type, bootable, encrypted, attachments. Use list_volumes to find IDs by name or status. Returns not_found if the ID is not in the selected project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| volume_id | string | yes | Volume ID, as returned by list_volumes. |
| Name | Type | Req | Description |
|---|---|---|---|
| attachments | array | – | – |
| availability_zone | – | – | – |
| created_at | – | – | – |
| description | – | – | – |
| id | string | yes | – |
| is_bootable | – | – | – |
| is_encrypted | – | – | – |
| name | – | – | – |
| size | – | – | – |
| status | – | – | – |
| updated_at | – | – | – |
| volume_type | – | – | – |
No examples provided.
get_volume_attachment Get volume attachment ~65
Get one Cinder attachment record by ID, without connection details.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment_id | string | yes | Attachment ID, as returned by list_volume_attachments. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| attach_mode | – | – | – |
| attached_at | – | – | – |
| detached_at | – | – | – |
| id | string | yes | – |
| instance | – | – | – |
| status | – | – | – |
| volume_id | – | – | – |
No examples provided.
list_aggregates List host aggregates ~95
List Nova host aggregates with availability zone and hosts. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_compute_services List compute services ~120
List running Nova daemons such as nova-compute with host and state. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| binary | – | – | Service binary, for example nova-compute. |
| host | – | – | Host name filter. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_domains List domains ~95
List Keystone domains. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| name | – | – | Exact domain name. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_endpoints List catalog endpoints ~134
List Keystone catalog endpoints with interface and URL. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| interface | – | – | Endpoint interface: public, internal or admin. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| region_id | – | – | Region ID, as returned by list_regions. |
| service_id | – | – | Service ID, as returned by list_services. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_flavors List flavors ~107
List flavors visible to the project: vCPUs, RAM (MiB), disk (GiB). Paged with limit and marker. Use it to resolve the flavor of a server.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_floating_ips List floating IPs ~161
List the project's floating IPs with the fixed IP, port and router they map to. Paged with limit and marker. There is no get tool: filter by port_id to find the floating IP of one port.
| Name | Type | Req | Description |
|---|---|---|---|
| floating_network_id | – | – | External network ID the floating IPs come from. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| port_id | – | – | Port ID the floating IP is associated with. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| status | – | – | Floating IP status filter, for example ACTIVE or DOWN. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_hypervisors List hypervisors ~96
List Nova hypervisors with state and capacity. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_images List images ~134
List images visible to the project with status, visibility, formats and size. Paged with limit and marker. Use get_image for one image by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| name | – | – | Exact image name. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| status | – | – | Image status filter, for example active. |
| visibility | – | – | Visibility filter: public, private, shared or community. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_network_agents List network agents ~118
List Neutron agents with host and liveness. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_type | – | – | Agent type, for example 'Open vSwitch agent'. |
| host | – | – | Host name filter. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_networks List networks ~125
List the project's networks, or shared networks with shared=true. Paged with limit and marker.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| shared | boolean | – | List shared networks visible to the project, whatever their owner, instead of the project's own networks. |
| status | – | – | Network status filter, for example ACTIVE. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_ports List ports ~126
List the project's ports with fixed IPs and security groups. Paged with limit and marker.
| Name | Type | Req | Description |
|---|---|---|---|
| device_id | – | – | Server or router ID owning the port. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| network_id | – | – | Network ID whose ports to list. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| status | – | – | Port status filter, for example ACTIVE or DOWN. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_projects List projects ~109
List Keystone projects. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| domain_id | – | – | Domain ID, as returned by list_domains. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| name | – | – | Exact project name. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_regions List regions ~60
List Keystone regions. Not paged.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_router_interfaces List router interfaces ~97
List a router's internal interfaces: port, subnet and IP address. Not paged; complete=false means the router has more interfaces.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| router_id | string | yes | Router ID, as returned by list_routers. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_routers List routers ~112
List the project's routers with external gateway and static routes. Paged with limit and marker. Use list_router_interfaces for the subnets a router connects.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| status | – | – | Router status filter, for example ACTIVE. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_security_groups List security groups ~94
List the project's security groups with their rules. Paged with limit and marker.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| name | – | – | Exact security group name. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_servers List servers ~126
List servers in the project with status, flavor, image, addresses and volumes. Paged with limit and marker. Use get_server for one server by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| name | – | – | Name regex filter. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| status | – | – | Server status filter, for example ACTIVE or SHUTOFF. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_services List catalog services ~111
List Keystone catalog entries such as compute or network, not running daemons. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| type | – | – | Service type, e.g. compute. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_subnets List subnets ~118
List the project's subnets with CIDR, gateway and DHCP settings. Paged with limit and marker.
| Name | Type | Req | Description |
|---|---|---|---|
| ip_version | – | – | IP version filter: 4 or 6. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| network_id | – | – | Network ID whose subnets to list. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_volume_attachments List volume attachments ~125
List Cinder attachment records (API microversion 3.27 or later). Connection details are not returned. Paged with limit and marker.
| Name | Type | Req | Description |
|---|---|---|---|
| instance_id | – | – | Server ID the volume is attached to. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| volume_id | – | – | Volume ID whose attachments to list. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_volume_services List volume services ~121
List running Cinder daemons such as cinder-volume with host and state. Usually needs more than a project reader role; forbidden means the role is missing, not that the list is empty. Not paged; narrow with filters.
| Name | Type | Req | Description |
|---|---|---|---|
| binary | – | – | Service binary, for example cinder-volume. |
| host | – | – | Host name filter. |
| limit | integer | – | Maximum items to return (1-100, default 50). |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
list_volumes List volumes ~125
List volumes in the project with size (GiB), type, status and attachments. Paged with limit and marker. Use get_volume for one volume by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum items to return (1-100, default 50). |
| marker | – | – | next_marker from the previous page; omit for the first page. |
| name | – | – | Exact volume name. |
| project_id | – | – | Project ID to work in; omit for the default project. Allowed values are listed by get_scope. |
| status | – | – | Volume status filter, for example available or in-use. |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | True when no more items exist beyond this page. |
| items | array | yes | – |
| limit | integer | yes | Maximum number of items requested. |
| next_marker | – | – | Pass as marker to read the next page; null when complete or when the API has no marker paging. |
| observed_at | string | yes | UTC time the list was read. |
| project_id | – | yes | Project whose session produced the list. |
| resource | string | yes | Resource type of the items. |
No examples provided.
How do I install the OpenStack MCP server?
OpenStack runs locally as a container image, launched with docker run --rm -i -e OS_AUTH_URL -e OS_USERNAME -e OS_PASSWORD -e OS_USER_DOMAIN_NAME -e OS_PROJECT_ID -e OS_APPLICATION_CREDENTIAL_ID -e OS_APPLICATION_CREDENTIAL_SECRET -e OS_REGION_NAME -e OPENSTACK_MCP_PROJECT_IDS -e OPENSTACK_MCP_CACERT_PEM ghcr.io/oomchiller/openstack-mcp-server:0.1.2. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/oomchiller/openstack-mcp-server
claude mcp add oomchiller-openstack-mcp-server -- docker run --rm -i -e OS_AUTH_URL -e OS_USERNAME -e OS_PASSWORD -e OS_USER_DOMAIN_NAME -e OS_PROJECT_ID -e OS_APPLICATION_CREDENTIAL_ID -e OS_APPLICATION_CREDENTIAL_SECRET -e OS_REGION_NAME -e OPENSTACK_MCP_PROJECT_IDS -e OPENSTACK_MCP_CACERT_PEM ghcr.io/oomchiller/openstack-mcp-server:0.1.2
This image reads OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, OS_USER_DOMAIN_NAME, OS_PROJECT_ID, OS_APPLICATION_CREDENTIAL_ID, OS_APPLICATION_CREDENTIAL_SECRET, OS_REGION_NAME, OPENSTACK_MCP_PROJECT_IDS and OPENSTACK_MCP_CACERT_PEM. Set them in your client's env block for this server; docker run -e passes each one through to the container.
What is the OpenStack MCP server?
OpenStack is an MCP server listed in the public MCP registry as io.github.oomchiller/openstack-mcp-server. Read-only-first OpenStack inspection: servers, images, volumes, networks, Keystone catalog. This page covers its container image (ghcr.io/oomchiller/openstack-mcp-server).
Is the OpenStack MCP server safe to use?
OpenStack scores 44 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the OpenStack MCP server expose?
OpenStack exposes 32 tools: get_scope, list_servers, get_server, list_flavors, list_images, and 27 more. Their descriptions and schemas cost roughly 3,389 tokens of context every time the server is loaded.
Is the OpenStack MCP server still maintained?
OpenStack is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the OpenStack MCP server under?
OpenStack declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the OpenStack MCP server?
VerifyMCP ran 12 checks on OpenStack, covering Source repository, Provenance, License, Maintenance and 8 more. 4 items could not be completed, a gap on our side rather than a finding about OpenStack: Malware scan, Known CVEs, Install scripts and Dependency health. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to a container image, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.