OpenStack
FreeNot checkedA Model Context Protocol server that provides 123 tools across 7 OpenStack domains (compute, network, storage, etc.) for managing cloud resources via natural la
About
A Model Context Protocol server that provides 123 tools across 7 OpenStack domains (compute, network, storage, etc.) for managing cloud resources via natural language, with stateless per-caller authentication and Kolla log observability.
README
English | 한국어
A Model Context Protocol (MCP) server for OpenStack — 123 tools across 7 domains, built on openstacksdk, with stateless per-caller header auth, a declarative RESOURCES registry, and Kolla log observability.
Architecture
LLM client (Claude / any MCP host)
│ MCP protocol (stdio or HTTP/SSE)
▼
┌─────────────────────────────────────────────────────┐
│ src/core/ (package) │
│ │
│ server.py → CORE_SPECS table → auto-generated │
│ list/show/update/delete tools │
│ + hand-written specials │
│ registry.py → domain/tier tool registry │
│ assembly.py → per-domain FastMCP instances, │
│ ASGI app, shared conventions text │
│ │
│ context.os_conn(ctx) ──► os_backend.py │
│ (per-caller creds) openstacksdk Connection │
│ (Keystone app credential)│
│ ▼ │
│ OpenStack APIs │
│ Nova · Neutron · Cinder │
│ Glance · Keystone · Octavia │
│ Placement │
│ │
│ observability.py ──► Kolla log files (read-only) │
│ /var/log/kolla/* │
└─────────────────────────────────────────────────────┘
Per-domain HTTP mounts (stateful sessions for elicitation):
/compute/mcp /network/mcp /lbaas/mcp
/storage/mcp /image/mcp /identity/mcp
/observability/mcp
Each domain is an independent FastMCP instance. A shared process exposes all mounts; MCP_DOMAINS and MCP_TIERS narrow which tools are active.
Features
- Declarative registry —
CORE_SPECStable +make_list/make_show/make_update/make_deletegenerators; adding a new resource is one dict entry. - Stateless per-caller auth — credentials are read from request headers on every call (HTTP) or from env vars (stdio). The server stores nothing; multiple callers with different credentials share one process safely.
- Structured error envelope — all tool errors surface as
Error executing tool <name>: {"error":{"type","message","http_status?}}. Parse from the first{. - Delete confirmation —
*_deletetools use MCP elicitation to require an explicit human"delete"choice before executing. Irreversible operations cannot be triggered by an LLM alone. - Key-columns / detail — list tools return a compact key-column view by default; pass
detail=Truefor all fields.limit=Ncaps row count.all_projects=Truefor the admin view where supported. - Multimount — 7 per-domain FastMCP instances served at
/<domain>/mcp, each carrying a routing map in itsinitializeinstructions so clients pick the right mount on the first try. - Kolla log observability —
log_targets,log_tail,log_traceread Kolla service log files directly from the host filesystem (mounted read-only), with time-window filtering, regex grep, and request-ID cross-service tracing.
Documentation
- Usage — install, stdio & HTTP modes, container, and configuration reference.
- Tool Reference — all 123 tools by domain.
Quick install:
git clone https://github.com/YeeDochi/OpenStack-MCP.git
cd OpenStack-MCP
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
Then see Usage to run in stdio or HTTP mode.
Extending: add a new resource
Create tools is intentionally not implemented — it is the primary extension point. To add a create tool or a new resource type:
- Add a function in
src/core/server.pyorsrc/core/os_backend.pyusing openstacksdk. - Register it with
reg.add(fn, name="...", domain="...", tier="write"). - For a full CRUD resource, add one dict to
CORE_SPECS(insrc/core/specs.py);register_resourcesinregistry.pygenerates the list/show/update/delete tools automatically fromos_list/os_show/os_update/os_delete/update_fields.
Any OpenStack service supported by openstacksdk can be wired in this way with a handful of lines.
Running tests
pytest -q
The test suite covers registry assembly (tool set, domains, tiers), the list/show/update/delete factories, the delete-confirmation elicitation flow, and the Kolla log backend (target resolution, time-window tailing, request-ID extraction).
License
MIT — see LICENSE.
Installing OpenStack
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/YeeDochi/OpenStack-MCPFAQ
Is OpenStack MCP free?
Yes, OpenStack MCP is free — one-click install via Unyly at no cost.
Does OpenStack need an API key?
No, OpenStack runs without API keys or environment variables.
Is OpenStack hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install OpenStack in Claude Desktop, Claude Code or Cursor?
Open OpenStack on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare OpenStack with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
