Skip to Content
APIMCP Server (AI)

MCP Server

redu.cloud provides a Model Context Protocol (MCP)  server at mcp.redu.cloud. Connect it to Claude Code, Claude.ai, or ChatGPT to manage your cloud infrastructure in natural language.

Create a large Ubuntu instance called web-prod with my default keypair
What instances am I running? Stop the staging one.
Deploy a reduOS instance and give me the SSH command when it's ready.

Connect your agent

Recommended (OAuth), pick your client:

claude mcp add --transport http redu https://mcp.redu.cloud/mcp --client-id redu-mcp

A browser opens so you sign in to your redu.cloud account. If it does not prompt, run /mcp to start the login.

The server is available as soon as you are signed in. It works with any MCP client; Claude Code and Codex are shown above.

Alternative, connect with an API key (for CI, headless, or a committable team config).

Generate a key at Account → API Keys, then add it inline:

claude mcp add --transport http redu-cloud https://mcp.redu.cloud/mcp --header "x-api-key: YOUR_KEY"

Or use a .mcp.json file in your project root, which keeps the key out of the command:

{ "mcpServers": { "redu-cloud": { "type": "http", "url": "https://mcp.redu.cloud/mcp", "headers": { "Authorization": "Bearer ${REDU_API_KEY}" } } } }

Set your key as an environment variable so it never lives in the file:

export REDU_API_KEY=your_api_key_here

The .mcp.json file is safe to commit, the ${REDU_API_KEY} placeholder expands at load time.


Connect from Claude.ai

Claude.ai supports MCP servers (rolling out 2025–2026).

  1. Open Claude.ai → Settings → Integrations → Add MCP server
  2. Enter: https://mcp.redu.cloud/mcp
  3. Authenticate with your redu.cloud account (OAuth via Keycloak)

Connect from ChatGPT

redu.cloud works as a ChatGPT Custom GPT Action.

  1. Create a Custom GPT → Configure → Actions
  2. Set the schema URL to: https://mcp.redu.cloud/.well-known/oauth-protected-resource
  3. Authentication: OAuth 2.0, use your redu.cloud Keycloak credentials

Available tools

ToolWhat it does
list_instancesList your running instances
list_flavorsList available instance sizes
list_imagesList available OS images
list_keypairsList your SSH keypairs
import_keypairRegister an SSH public key (required before creating instances)
delete_keypairRemove an SSH keypair by name
list_private_networksList your private networks
list_security_groupsList your security groups
list_volumesList your block storage volumes
list_snapshotsList instance snapshots
list_backupsList volume backups
create_backupBack up a volume (volumeId) or an instance’s volume (instanceId)
restore_backupRestore a backup into a volume, an instance’s volume, or a new volume
delete_backupDelete a backup by ID
list_clustersList autoscaling clusters
list_domainsList your verified custom domains
plan_instanceGet all options needed to create an instance
check_deploy_prerequisitesAuto-select a network and keypair before a deploy
plan_deployScan a repo, returns a sized, costed, quota-checked deploy plan (flags multi-container repos)
deploy_appBuild and deploy a single-container app from a repo, served at https://<name>.redu.cloud
prepare_uploadPackage and upload local or uncommitted code when there is no Git remote
deploy_composeDeploy a multi-container docker-compose repo onto one VM, exposing one service publicly
list_deploymentsList your deployments
get_deploymentGet a deployment’s status + build log
delete_deploymentTear down a deployment
create_databaseProvision a managed PostgreSQL server (optional extensions + superuser)
list_databasesList your managed PostgreSQL servers
delete_databaseDelete a managed PostgreSQL server
create_redisProvision a managed Redis instance
list_redisList your managed Redis instances
delete_redisDelete a managed Redis instance
create_clickhouseProvision a managed ClickHouse instance
list_clickhouse_databasesList your managed ClickHouse instances
delete_clickhouseDelete a managed ClickHouse instance
create_instanceCreate a new instance
delete_instanceDelete an instance
instance_actionStart, stop, or reboot an instance
get_ssh_commandGet the SSH command for an instance
get_instance_logsGet console log output
create_snapshotSnapshot an instance
delete_snapshotDelete a snapshot
create_volumeCreate a block storage volume
get_domain_verificationGet TXT record for domain ownership
whoamiShow your authenticated account
integrate_overviewHow to add a redu capability (e.g. backups) to an app you deployed
create_api_keyMint a least-privilege scoped key for an app (needs your approval; usage is billed)

Example: create an instance

On a fresh account, set up an SSH keypair first (import your own key, or ask your agent to generate one):

“Import my SSH key, here it is: ssh-ed25519 AAAA…”

your agent will call import_keypair and confirm the name. Then:

“Create a medium Ubuntu instance called api-server with my default keypair. Use the first available network.”

your agent will call plan_instance to gather the options, then create_instance with the right IDs. You don’t need to know image IDs or flavor IDs.


Example: deploy an app from a Git repo

“Deploy https://github.com/me/my-app  to redu.”

your agent calls plan_deploy first to scan the repo, size the VM, estimate cost, and check quota, then shows you the plan before provisioning. On approval it calls deploy_app, which builds the container on a VM and serves it at https://my-app.redu.cloud.

Need a database? Just say so, deploy_app accepts database: "managed" (a dedicated managed-Postgres server, auto-provisioned and wired) or database: "single_vm" (Postgres on the app VM). Either way the connection env (DATABASE_URL + DATABASE_HOST/PORT/USER/PASSWORD/NAME, plus the legacy PG*/MYSQL_*) is injected automatically, frameworks like Rails, Django, and Prisma pick it up without manual mapping. You can request Postgres extensions (db_extensions: ["pgvector", "postgis"]) and a superuser DB role (db_superuser: true).

Multi-container apps, if the repo ships a docker-compose.yml / compose.yaml, plan_deploy flags it and your agent uses deploy_compose instead. It runs the whole stack on one VM via podman-compose up -d --build and exposes one service (you pass its host port) at https://<name>.redu.cloud. By default the compose file’s own db service is used; pass database: "single_vm" or "managed" to add a Postgres outside the compose file, its connection env is appended to the project’s .env (redu never rewrites your compose file).


Example: deploy reduOS

“Deploy a reduOS full-stack instance on a large flavor.”

your agent will call create_instance with cloud_init_template: "reduos", which automatically:

  • Picks port 3006 for the dashboard DNS entry
  • Injects the full reduOS setup cloud-init
  • Starts setup in the background (takes 15–25 min)

After creation, ask:

“Check if the reduOS instance is ready and give me the SSH command.”


API key vs OAuth

MethodBest forHow
OAuth (Keycloak)Claude Code, Claude.ai, ChatGPT, interactive useBrowser login, add --client-id redu-mcp
API keyCI, headless scripts, committable .mcp.jsonx-api-key header or Authorization: Bearer

Generate an API key at console.redu.cloud/category/user/api-keys .

Last updated on