
CloudStack
STDIOMCP server enabling AI agents to interact with CloudStack infrastructure
MCP server enabling AI agents to interact with CloudStack infrastructure
= CloudStack MCP
A Model Context Protocol (MCP) server for Apache CloudStack, allowing AI agents to interact with CloudStack infrastructure.
IMPORTANT: This project is still under development and not all features are available. Treat it as a proof of concept.
== Running the server (macOS)
brew install go-task go docker
git clone https://github.com/walteh/cloudstack-mcp.git cd cloudstack-mcp
== Generic MCP Usage
=== for sse
servers (recommended, if possible)
Cursor
=== for stdio
servers
Cursor
, and Claude Desktop
== Usage with Cursor (macOS)
make sure server is running and you are in the root of the project (see above)
set up dependencies
open cursor settings from the menu bar Cursor -> Settings... -> Cursor Settings
(or press Shift-Cmd-J
)
go to the MCP
tab, you should see the cloudstack
server already added (because of link:./.cursor/mcp.json[./.cursor/mcp.json
])
click on the buttons to refresh and enable the cloudstack
server - you should see a green dot and a list of list
cloudstack api commands
open a new composer by making sure the composer pane is open (toggle with Cmd-Option-B
) and start a new conversation (press Cmd-N
)
make sure the composer is set to Agent
type can you list my @cloudstack vpcs?
press Enter
and watch the magic happen! (realistically, you might have to try and convince the AI to do this, but it should work)
== Usage with Claude Desktop (macOS)
CAUTION: There is a 99% chance this will not work, but you can use it as a starting point to get the MCP working with Claude Desktop if you like.
make sure server is running and you are in the root of the project (see above)
set up dependencies
== How It Works
This MCP implementation allows AI assistants to manage CloudStack resources by:
== CloudMonkey Usage
CloudMonkey (the CloudStack CLI) is containerized in this setup:
task cmk -- list zones task cmk -- list serviceofferings
task cmk -- sync
== License
Apache License 2.0