Skip to main content
Glama
YeeDochi

OpenStack-MCP

by YeeDochi

OpenStack-MCP

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.


Related MCP server: python-openstackmcp-server

Features

  • Declarative registryCORE_SPECS table + make_list/make_show/make_update/make_delete generators; 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*_delete tools 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=True for all fields. limit=N caps row count. all_projects=True for the admin view where supported.

  • Multimount — 7 per-domain FastMCP instances served at /<domain>/mcp, each carrying a routing map in its initialize instructions so clients pick the right mount on the first try.

  • Kolla log observabilitylog_targets, log_tail, log_trace read 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:

  1. Add a function in src/core/server.py or src/core/os_backend.py using openstacksdk.

  2. Register it with reg.add(fn, name="...", domain="...", tier="write").

  3. For a full CRUD resource, add one dict to CORE_SPECS (in src/core/specs.py); register_resources in registry.py generates the list/show/update/delete tools automatically from os_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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Free OpenAI-compatible inference with signed provenance receipts and 3 focused MCP tools.

  • The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.

  • The Google GKE MCP server is a managed Model Context Protocol server that provides AI applications with tools to manage Google Kubernetes Engine (GKE) clusters and Kubernetes resources. It exposes a structured, discoverable interface that allows AI agents to interact with GKE and Kubernetes APIs, enabling them to inspect cluster configurations, retrieve Kubernetes resource YAMLs, monitor operations like cluster upgrades, diagnose issues, and optimize costs—all without needing to parse text output or use complex kubectl commands.

  • An MCP server that provides an API to LLMs to manage their JumpCloud resources.

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    A comprehensive Model Context Protocol (MCP) server that exposes 216 tools, 7 resources, and 10 runbook prompts for every OpenShift 4 cluster operation an SRE, developer, or operator could need — all driven by an LLM.
    100
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    A production-grade MCP server providing a secure, natural-language interface to Kubernetes for developers and AI agents, with multi-cluster routing, OIDC authentication, RBAC, and audit logging.
    75
    53
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YeeDochi/OpenStack-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server