openstack-mcp
Supports OpenStack-based deployments such as Infomaniak, enabling the same inspection and operation of cloud resources through the OpenStack API.
Allows an AI assistant to inspect and operate OpenStack cloud resources, including listing servers, checking quotas and capacity, reading console logs, and optionally creating, power-managing, and deleting servers.
Supports OpenStack-based deployments such as OVHcloud, enabling the same inspection and operation of cloud resources through the OpenStack API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@openstack-mcp are there any stopped servers in my project?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
openstack-mcp
An MCP server that lets an AI assistant inspect and operate an OpenStack cloud — list instances, check quotas, read a stuck VM's console log, and (if you allow it) create and delete servers.
Works with any OpenStack deployment: CloudPe, OVHcloud, Infomaniak, university and research clouds, or a local DevStack. Anything openstacksdk can reach, this can drive.
Read-only by default. Writes require an explicit opt-in, and deletes require a second one. An assistant that can list your project cannot tear it down unless you decided it should be able to.
Quick start
Install from source (not yet on PyPI):
pipx install git+https://github.com/abhishekambad-leapswitch/openstack-mcpPoint it at a cloud. openstacksdk reads standard OpenStack config, so either a clouds.yaml:
# ~/.config/openstack/clouds.yaml
clouds:
cloudpe:
auth_type: v3applicationcredential
auth:
auth_url: https://<your-region>.cloudpe.com:5000/v3
application_credential_id: <id>
application_credential_secret: <secret>
region_name: RegionOne...or the usual environment variables (OS_AUTH_URL, OS_APPLICATION_CREDENTIAL_ID, OS_APPLICATION_CREDENTIAL_SECRET). This server never stores or transmits your credentials itself — it hands off to openstacksdk, which resolves them the same way the openstack CLI does.
Claude Code
claude mcp add openstack --env OS_CLOUD=cloudpe -- openstack-mcpClaude Desktop / Cursor / any MCP client
{
"mcpServers": {
"openstack": {
"command": "openstack-mcp",
"env": { "OS_CLOUD": "cloudpe" }
}
}
}Then ask things like "which VMs are down?", "do I have quota for three more m1.large?", or "web-03 won't accept SSH — check its console log."
To confirm what you've wired up before trusting it, run a dry check — it prints the resolved config and exactly which tools are exposed, without serving or connecting:
openstack-mcp --checkopenstack-mcp 0.1.0
cloud: cloudpe
mode: read-only
max items per list: 50
12 tools: check_capacity, cloud_info, get_console_output, get_quotas, get_server,
list_flavors, list_images, list_keypairs, list_networks, list_security_groups,
list_servers, list_volumesRelated MCP server: python-openstackmcp-server
The safety model
Most cloud MCP servers hand an assistant the full API and hope for the best. This one is gated, because "delete the test VMs" is a sentence a model can misread.
Environment variable | Effect |
(nothing set) | Read-only. 12 inspection tools. Write tools are not registered at all — the model cannot see or call them. |
| Adds |
| Adds |
| Caps how many items any list tool returns. |
| Which |
Two further guardrails:
delete_serverdemands confirmation. You must passconfirm_namematching the resolved instance's exact name. Ask it to deleteweb-1when the VM is calledweb-01and it refuses rather than guessing.Tools carry MCP annotations (
read_only_hint,destructive_hint), so clients that surface risk to the user before running a tool can do so correctly.
Tool gating is enforced at registration, not by asking the model nicely — verified over a real stdio session in the test suite.
Tools
Read (always available)
Tool | Purpose |
| Which cloud, region, and project you're pointed at, and which operations are enabled |
| Instances with status and IPs; filter by status or name substring |
| Full detail for one instance: flavor, image, key pair, security groups, addresses |
| Instance sizes with vCPU, RAM, disk |
| Bootable images |
| Networks, flagging which are external |
| Security groups and rule counts |
| Registered SSH key pairs |
| Block storage volumes and what they're attached to |
| Compute quota usage vs limits |
| Whether N instances of a flavor fit in remaining quota, and what blocks it if not |
| Serial console log — for VMs that boot but are unreachable |
Write (opt-in)
Tool | Purpose |
| Create one or many instances; |
| start / stop / reboot |
| Delete one instance, with name confirmation (needs |
Two design choices worth knowing
Responses are deliberately small. openstacksdk returns 60+ attributes per server. Feeding all of that to a model is slow, expensive, and buries the useful fields, so every tool returns a trimmed projection — for a server that's id, name, status, and a flattened {network: [ips]} map instead of nova's nested address structure.
check_capacity exists so batches fail early. Asking for eight VMs and discovering the quota ceiling on the fifth leaves a half-built mess. This reports which of instances/vCPUs/RAM binds first, before anything is created. create_servers also reports partial failures per instance rather than throwing away what succeeded.
Development
git clone https://github.com/abhishekambad-leapswitch/openstack-mcp
cd openstack-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest && ruff check .The suite runs entirely offline against a fake openstacksdk connection — no cloud, no credentials, no charges. It covers the tool gating, the trimming, quota arithmetic, partial-failure reporting, and the delete confirmation.
Provisioning at scale
For standing up fleets declaratively rather than conversationally, see cloudpe-terraform-bulk-vm — Terraform for bulk VM creation on the same API.
License
MIT
Available Tools
12 toolscheck_capacityARead-only
Check whether count instances of flavor fit inside the project's
remaining quota, before attempting to create them.
Inputs: flavor (required), count. Returns: object
cloud_infoARead-only
Identify the cloud, region, and project these tools are pointed at, and report which operations are enabled.
Inputs: no named parameters. Returns: object
get_console_outputARead-only
Read the serial console log of an instance -- the fastest way to diagnose a VM that boots but is unreachable.
Inputs: name_or_id (required), lines. Returns: object
get_quotasARead-only
Report compute quota usage against limits: instances, vCPUs, and RAM.
Inputs: no named parameters. Returns: object
get_serverARead-only
Full detail for one instance: flavor, image, key pair, security groups, addresses, and metadata.
Inputs: name_or_id (required). Returns: object
list_flavorsARead-only
List available flavors (instance sizes) with vCPU, RAM, and disk.
Inputs: limit. Returns: result
list_imagesARead-only
List bootable images, optionally filtered by a name substring.
Inputs: name, limit. Returns: result
list_keypairsARead-only
List SSH key pairs registered in this project.
Inputs: no named parameters. Returns: result
list_networksARead-only
List networks available to this project, flagging which are external.
Inputs: limit. Returns: result
list_security_groupsBRead-only
List security groups and how many rules each contains.
Inputs: limit. Returns: result
list_serversARead-only
List instances with their status and IP addresses. Optionally filter by status (e.g. ACTIVE, SHUTOFF) or by a name substring.
Inputs: name, limit, status. Returns: result
list_volumesARead-only
List block storage volumes, their size, and what they are attached to.
Inputs: limit. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Each tool targets a distinct resource or check: servers, flavors, images, networks, security groups, keypairs, volumes, quotas, and console output. Even get_quotas and check_capacity are clearly separated by descriptions: one reports usage, the other tests fit before creation. There is no meaningful overlap or ambiguity.
The vast majority of tools follow a clear list_<resource> or get_<resource> pattern, making the set predictable. The only outlier is cloud_info, which is a noun phrase rather than a verb_noun command, but it does not cause confusion.
Twelve tools is well-scoped for an OpenStack inspection and capacity-planning server. Each tool covers a distinct resource or diagnostic operation, and none feel redundant or unnecessary. The count is appropriate for the apparent purpose.
The set provides solid read-only coverage of compute, storage, network, security, and quota resources, but it has notable dead ends: check_capacity implies instance creation, yet no create_server exists, and security groups only expose rule counts rather than actual rules. For broader OpenStack management workflows, lifecycle operations and deeper network/security-group details are missing.
Maintenance
Related MCP Connectors
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Manage Rackspace Spot Kubernetes Cloudspaces, node pools, and VMs from your AI assistant.
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Operate GitHub from your AI assistant: repos, PRs, issues, Actions. Previews and read-only mode.
Related MCP Servers
AlicenseCqualityBmaintenanceEnables deploying and managing infrastructure via natural language, including project/domain management, compute nodes, image deployment, and CI/CD integration.70MIT- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage OpenStack cloud resources including compute, images, identity, network, and block storage via the Model Context Protocol.19Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI clients to manage OpenStack clouds through tools for compute, network, storage, image, and identity operations.-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to inspect, query, and diagnose projects, deployments, releases, runbooks, tasks, tenants, Kubernetes resources, machines, certificates, accounts, and interruptions, with optional write operations and read-only safeguards.511 npmMIT