A remote Model Context Protocol server that
exposes the CloudCenmax /api/v1 REST API as MCP
tools, so AI assistants can manage cloud resources, billing, and the catalog in
plain language.
Hosted endpoint:
https://mcp.cloudcenmax.com/mcp— grab an API key from cloudcenmax.com/api-keys and you're done.
It is a stateless proxy: each MCP request carries the caller's API key in the
Authorization header, which is forwarded verbatim to the platform API. No token
storage, no database. The key's abilities (read / write) gate what works.
Requires Node 22+.
npm install
cp .env.example .env # set CLOUDCENMAX_API_BASE and PORT
npm run dev # or: npm run build && npm startEnv vars:
CLOUDCENMAX_API_BASE— platform base URL, no trailing slash (defaulthttps://cloudcenmax.com). The server appends/api/v1.PORT— listen port (default3399).
The MCP endpoint is POST http://<host>:<PORT>/mcp. A GET /health returns {"status":"ok"}.
Send the user's CloudCenmax API key as a bearer token on every request:
Authorization: Bearer ck_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Issue a key from the API keys page in your
CloudCenmax dashboard. Each key has a scope: pick read to let the assistant
browse safely, or read + write to let it provision and control resources. The
token is shown once — copy it then.
| Tool | Ability | Description |
|---|---|---|
get_account |
read | Organization, balance, dunning status |
list_catalog |
read | Active SKUs (filters: provider, location, module; page) |
get_sku |
read | Single SKU by code |
list_resources |
read | Resources, newest first (page) |
get_resource |
read | Single resource by id |
list_resource_actions |
read | Provider capability actions for a resource |
list_buckets |
read | Object-storage buckets under a storage resource |
list_ledger |
read | Ledger entries (page) |
list_deposits |
read | Deposit transactions (page) |
provision_resource |
write | Create a resource from a SKU (use storage.objstore for object storage) |
start_resource / stop_resource / reboot_resource |
write | Power controls |
terminate_resource |
write | Destructive — permanently destroy a resource |
execute_resource_action |
write | Run a capability action (VNC, rescue, reinstall, …) |
create_bucket |
write | Create an object-storage bucket in a region (returns the secret once) |
delete_bucket |
write | Destructive — delete a bucket and all its objects |
create_deposit |
write | Start a deposit payment intent |
npx @modelcontextprotocol/inspectorConnect to http://127.0.0.1:3399/mcp (Streamable HTTP) with the header
Authorization: Bearer ck_.... A read-only key returns a clear ability error on
any write tool.
Pushes to main deploy automatically to the production VPS via
.github/workflows/deploy.yml — it SSHes into
the host, fast-forwards the working tree, reinstalls deps, rebuilds, and
reloads PM2 using ecosystem.config.cjs.
MIT — see LICENSE.