LABSCO SUMMARY
It inherits your CLI's permissions, for better and worse.
Wrapping the client rather than the API is what keeps this small and current — nothing to update when OpenStack adds a command. It also means the blast radius is exactly the blast radius of the credentials in your clouds file, which for an admin project is considerable. If you want a narrower grant, the place to make it is the OpenStack project and role behind the credentials, not the server.
What it is
A small server that drives the OpenStack command-line client. It does not reimplement the API — it runs the CLI in an environment where the CLI already works, which means whatever your credentials can do, this can do, and nothing more.
What you get
- Execution of OpenStack commands from the conversation, including the compound ones that would otherwise be several invocations chained by hand
- Whatever surface your installed client covers, rather than a curated subset — the tool is the CLI, so it does not fall behind the platform
- Targeting by cloud name, since credentials come from your existing configuration file and it can hold several clouds
- Two ways to launch: from a local clone, or straight from the git URL with uvx and no checkout
Requirements
The OpenStack CLI must be executable in whatever environment the server runs in, and authentication credentials for the target cloud must already be in a clouds.yaml — auth URL, username, password, project id and name, user domain, region and interface. No separate key goes to the server; it uses what the CLI uses. Python with uv: uv sync then run the server module, or launch it with uvx directly from the repository URL. The project is simple-openstack-mcp (version 0.1.0) and is built on fastmcp.
Setup effort
Follow the published steps
USE CASES
01
Answering an infrastructure question without the terminal
Ask what is running or how a resource is configured, and let the assistant run the lookup against the cloud you name.
02
Running a multi-step operation
Describe the outcome and let the assistant compose the sequence of commands, rather than chaining them by hand.
03
Working across several clouds
Keep each cloud in your existing configuration file and pick between them by name, instead of re-exporting environment variables.
BEFORE YOU INSTALL
What to know first
Requires
- uvx on PATH
- Python 3.11+
- The OpenStack CLI runnable where the server runs
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
Make sure the OpenStack CLI runs on this machine, and store the authentication credentials for your cloud in clouds.yaml — auth_url, username, password, project_id, project_name and user_domain_name under auth, plus region_name, interface and identity_api_version.
Add the configuration from a client tab and restart the client. It runs the server with uvx straight from the GitHub repository, so no clone is needed.
MCP Clients
Claude Desktop
CLAUDE DESKTOP · JSON
{
"mcpServers": {
"openstack": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/choieastsea/simple-openstack-mcp",
"simple-openstack-mcp"
]
}
}
}VS Code
VS CODE · JSON
{
"servers": {
"openstack": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/choieastsea/simple-openstack-mcp",
"simple-openstack-mcp"
]
}
}
}