AI-driven management (MCP)

HepCloud ships an MCP server. MCP (Model Context Protocol) is an open protocol that lets AI clients talk to external services. Once connected, you can write things like:

"List my servers." · "Create a 4 GB server." · "Show my database backups." · "Give me the connection details for the app database."

Your assistant turns these sentences into real HepCloud API calls. Resources are really created and really billed — this is not a simulation.

Get an API token first

MCP works with a token you create in the panel, and it is limited to that token's permissions. If you only want read access, issue a read-only token. See API tokens.

Two ways to connect

Remote (recommended)Local
SetupNone — address only (OAuth), or address + tokenhepmcp binary on your machine
How it worksHTTPS to HepCloud's serverClient launches the binary itself
Suitable clientsClients that speak OAuth or can send headersAnyone avoiding an internet-facing endpoint

Both expose the same tools; only the location differs.

Connecting to the remote server

Address: https://mcp.hepcloud.net/mcp

Add this to your client's MCP configuration:

{
  "mcpServers": {
    "hepcloud": {
      "type": "http",
      "url": "https://mcp.hepcloud.net/mcp",
      "headers": { "Authorization": "Bearer <your API token>" }
    }
  }
}

We never store your token

The remote server keeps no customer tokens. It reads the token from each request's Authorization header and builds a connection scoped to that request. A single token stored server-side would mean anyone reaching the server could manage that account.

Setup per client

Every example below uses the same two pieces of information: the address (https://mcp.hepcloud.net/mcp) and — for clients that don't speak OAuth — the Authorization: Bearer <token> header. Menu names drift between client versions; these two don't.

Cursor

~/.cursor/mcp.json (all projects) or .cursor/mcp.json in the project root:

{
  "mcpServers": {
    "hepcloud": {
      "url": "https://mcp.hepcloud.net/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

Cline

In VS Code, open the Cline panel → MCP Servers → Remote Servers and enter a name plus the address; or edit cline_mcp_settings.json:

{
  "mcpServers": {
    "hepcloud": {
      "type": "streamableHttp",
      "url": "https://mcp.hepcloud.net/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

Roo Code

MCP → Edit Global MCP (or .roo/mcp.json in the project root):

{
  "mcpServers": {
    "hepcloud": {
      "type": "streamable-http",
      "url": "https://mcp.hepcloud.net/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

VS Code (Copilot agent mode)

From the command palette run MCP: Add Server → HTTP and paste the address — VS Code speaks OAuth, no token pasting needed. If you prefer a file, .vscode/mcp.json:

{
  "servers": {
    "hepcloud": { "type": "http", "url": "https://mcp.hepcloud.net/mcp" }
  }
}

Claude Code

claude mcp add --transport http hepcloud https://mcp.hepcloud.net/mcp

The first use opens an OAuth login; to connect with a token instead, add --header "Authorization: Bearer <token>".

claude.ai and Claude Desktop

Give the "add connector" interface just the address; the full flow is described in the OAuth section below.

Local (stdio) setup

Build from source:

go build -o hepmcp ./cmd/hepmcp

For Claude Desktop, in claude_desktop_config.json:

{
  "mcpServers": {
    "hepcloud": {
      "command": "/usr/local/bin/hepmcp",
      "env": { "HEP_TOKEN": "<your API token>" }
    }
  }
}

On Windows write the path as C:\\Program Files\\HepCloud\\hepmcp.exe — with double backslashes, since a single backslash is an escape character in JSON.

Tools

Read: server list and detail, server types, database list and detail, database types, backup list, point-in-time recovery window, database metrics, slow queries.

Write: create server, server power actions (on/off/reboot), create database.

Destructive: delete server, delete database, restore database to a point in time.

Destructive tools are OFF by default

Delete and restore tools are not shown to the assistant at all. A tool that isn't visible can't be called — safer than "we'll refuse if it's called", because a model may retry a refused tool but cannot try one that doesn't exist.

Turning them on is a deliberate choice:

"headers": {
  "Authorization": "Bearer <token>",
  "X-Hep-Allow-Destructive": "1"
}

In a local setup the equivalent is the HEP_MCP_ALLOW_DESTRUCTIVE=1 environment variable.

Before you enable them

With destructive tools enabled, a misunderstanding can become data loss. Leave them off for everyday use and delete resources from the panel.

Security boundaries

MCP is a thin shell over the API and carries no business rules of its own. Balance checks, project ownership, token scope and the audit trail all live in the control plane — so MCP cannot do anything you couldn't do in the panel.

  • Tokens are project-scoped. Another project's resource returns "not found". A read-only token cannot write.
  • Account endpoints are closed. Adding balance, the billing profile, 2FA and session management are not reachable with an API token; MCP cannot touch your account settings.
  • It cannot read your data. The SQL console and table browser exist only in the panel. MCP manages the database; it does not read what's inside. If you want your assistant to query your data, you provide the connection string yourself.
  • It never prints passwords. A database summary gives connection details but not the password, so it stays out of your chat history. The one exception is the root password when creating a server: it is returned once and lost if not passed on to you.
  • Every action is recorded in the audit trail, exactly as if it were done in the panel.

Connecting with OAuth (no token pasting)

The remote server speaks OAuth 2.1. If your client offers an "add connector" style interface, you only give it the address:

https://mcp.hepcloud.net/mcp

The rest happens on its own: the client registers itself, you land in the HepCloud panel, you choose which project and what permission you are granting, and you return to the app. You never paste a token anywhere.

Once granted, the connection appears in the panel's API tokens list under the application's name and can be revoked there with one click.

Access is time-limited, refresh rotates

Access is valid for 1 hour and renews itself in the background. The refresh key changes on every use; if an old one is presented again we treat it as theft and cut off ALL access for that application. You would then need to reconnect it.

If you prefer to supply a token by hand (or your client doesn't speak OAuth), the Authorization header method above keeps working exactly as before.

Troubleshooting

"Authorization header required" / 401 — no token was sent. Make sure your client supports a headers field and that the value starts with Bearer .

"Not found" — the token belongs to a different project. Switch to the right project in the panel and create a new token.

"token_readonly" — a write was attempted with a read-only token.

"Billing profile incomplete" / phone verification — creating a server requires a billing profile with a verified phone. Fill it in from the panel.

The delete tool isn't listed — that's expected; add the header above.