OpenStack MCP + Agent PoC
@Akrog
An OpenStack MCP server PoC
Overview
What is OpenStack MCP + Agent PoC?
A proof-of-concept that runs an OpenStack Model Context Protocol (MCP) server alongside a basic agent companion program to test it. It uses the OpenStack code generator to create OpenAPI specs, then serves them with mcp-openapi as one MCP server per OpenStack component. The agent interacts with these servers via an LLM.
How to use OpenStack MCP + Agent PoC?
Clone the repository with submodules, edit servers.yaml to replace placeholder URLs for Nova, Cinder, and Glance, then run the server from the mcp-openapi directory with uv run main.py --config ../servers.yaml. In a second terminal, configure OpenStack client config (e.g., clouds.yaml) and LLM credentials in agent/agent.json, then run the agent with uv run main.py.
Key features of OpenStack MCP + Agent PoC
- Generates OpenAPI specs from OpenStack using
openstack-code-generator. - Serves specs as per‑component MCP servers via
mcp-openapi. - Includes a minimal agent to query OpenStack resources through an LLM.
- Filters REST API paths to limit tool count and context window.
- Requires
uvpackage manager, an OpenStack deployment, and an LLM.
Use cases of OpenStack MCP + Agent PoC
- Quickly test OpenStack API interaction through an LLM.
- Query OpenStack resources (e.g., flavors, servers) using natural language.
- Experiment with MCP‑based tool use for OpenStack administration.
FAQ from OpenStack MCP + Agent PoC
What prerequisites are needed to run it?
You need access to an OpenStack deployment, an LLM endpoint, and the uv package manager.
How do I configure the OpenStack client?
Place clouds.yaml and secure.yaml in the agent/ directory or ~/.config/openstack/ as described in the OpenStack client documentation.
Where is the LLM token stored?
Create a file named llm.token in the agent/ directory containing the secret/token for the OpenAI LLM endpoint.
Can I use any OpenStack deployment?
Yes, you only need to replace the placeholder URLs in servers.yaml with your cluster’s Nova, Cinder, and Glance public endpoints.
Does the agent have memory?
No, each prompt is a clean prompt for the LLM—there is no memory between turns.