Back to Browse

Cloudgpu MCP Server

Developer ToolsModerate6.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

Rent a per-minute GPU from your MCP client, run a job, download results, shut it down.

About

Rent a per-minute GPU from your MCP client, run a job, download results, shut it down.

Security Report

6.8
Moderate6.8Moderate Risk

CloudGPU MCP is a Developer Tools server that rents GPUs and runs commands on them over SSH, which matches its stated purpose. Its main risk is by design: run_command executes arbitrary bash as root on rented instances, and the API key is stored in plaintext on disk. Several source files (guards.js, api.js, ssh.js, credentials.js) and most of cli-core.js were not provided, so the redaction, command-check and file-permission claims could not be verified. Supply chain analysis found 1 known vulnerability in dependencies (0 critical, 1 high severity). Package verification found 1 issue.

5 files analyzed · 7 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

network_ssh

Check that this permission is expected for this type of plugin.

env_vars

Check that this permission is expected for this type of plugin.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

Shell Command Execution

Runs commands on your machine. Be cautious — only use if you trust this plugin.

process_spawn

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

CloudGPU API key (starts with cgw-sk-). Create one at https://cloudgpu.app/apiRequired

Environment variable: CLOUDGPU_API_KEY

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-mrhy7176-cloudgpu-mcp": {
      "env": {
        "CLOUDGPU_API_KEY": "your-cloudgpu-api-key-here"
      },
      "args": [
        "-y",
        "cloudgpu-mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

CloudGPU MCP

CloudGPU MCP server: let an AI agent rent a GPU by the minute, run a job, bring the results back and shut the GPU down. The same API key and balance also cover CloudGPU's OpenAI-compatible model API, so an agent can call a hosted model without renting anything.

"Fine-tune a 7B base model with LoRA on data/train.jsonl and put the adapter in ./outputs."

The agent checks live prices and quotes you, rents the GPU once you say yes, uploads your code and data, starts training in the background, watches the logs, downloads the adapter and destroys the instance. You get the files and the final cost.

It is a local (stdio) MCP server. It works with any MCP client that can start one: Claude Code, Cursor, Cline, opencode, goose, VS Code, Windsurf and others.

Install

  1. Create an API key at cloudgpu.app/api and add a prepaid balance (card or USDT).
  2. Add the server to your client. Node.js 18 or newer is required. The key goes in the environment variable CLOUDGPU_API_KEY.
claude mcp add cloudgpu --env CLOUDGPU_API_KEY=cgw-sk-... -- npx -y cloudgpu-mcp
{
  "mcpServers": {
    "cloudgpu": {
      "command": "npx",
      "args": ["-y", "cloudgpu-mcp"],
      "env": { "CLOUDGPU_API_KEY": "cgw-sk-..." }
    }
  }
}
{
  "mcpServers": {
    "cloudgpu": {
      "command": "npx",
      "args": ["-y", "cloudgpu-mcp"],
      "env": { "CLOUDGPU_API_KEY": "cgw-sk-..." }
    }
  }
}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cloudgpu": {
      "type": "local",
      "command": ["npx", "-y", "cloudgpu-mcp"],
      "environment": { "CLOUDGPU_API_KEY": "cgw-sk-..." },
      "enabled": true
    }
  }
}
extensions:
  cloudgpu:
    name: cloudgpu
    type: stdio
    cmd: npx
    args: ["-y", "cloudgpu-mcp"]
    envs:
      CLOUDGPU_API_KEY: "cgw-sk-..."
    enabled: true
    timeout: 300
  1. Optional but recommended: copy rules/cloudgpu.md into your project as AGENTS.md, .cursor/rules/cloudgpu.md or .clinerules/cloudgpu.md. It tells the agent to quote before renting, download before shutting down, and never leave a GPU running. The server also exposes the same text as the resource cloudgpu://rules.

To check the install, ask your agent: "List the GPUs available, then estimate the cost for a 24 GB GPU for one hour. Do not create anything." You should see list_gpus and estimate_cost calls and a quote, and nothing is rented.

Agent Skill

The same guidance is available as two Agent Skills:

  • skills/cloudgpu/SKILL.md: renting and using a GPU. Claude Code loads it on demand when you ask for a GPU job. It expects the cloudgpu MCP tools to be installed (see above).

  • skills/cloudgpu-model-api/SKILL.md: calling the OpenAI-compatible model API at https://cloudgpu.app/v1 without renting a GPU. It works with the MCP tools or with just a CLOUDGPU_API_KEY.

  • Claude plugin: both skills are included automatically when you install the CloudGPU Claude plugin from this repo's marketplace:

    /plugin marketplace add mrhy7176/cloudgpu-mcp
    /plugin install cloudgpu@cloudgpu
    
  • Claude Code, personal install: copy skills/cloudgpu/ and skills/cloudgpu-model-api/ to ~/.claude/skills/.

  • Claude Code, project install: copy skills/cloudgpu/ and skills/cloudgpu-model-api/ to .claude/skills/ in your project.

  • Cursor, Codex, Cline, Amp and other agents that read Agent Skills: install both skills with the skills CLI:

    npx skills add mrhy7176/cloudgpu-mcp
    

Tools

ToolWhat it does
get_accountBalance, and how many instances the account may run at once
list_gpusGPU models with VRAM, live price per GPU-hour and availability
list_templatesReady-made images: JupyterLab, Ollama, ComfyUI, LLaMA-Factory, …
estimate_costLive quote for a GPU and a number of hours, plus your balance afterwards; returns a quote_id
create_instanceRents from an approved quote, with a budget, a time limit and an idle limit
get_status / list_instancesStatus, minutes run, cost so far, auto-shutdown limits
run_commandRuns a command on the instance; background=true for long jobs
tail_logsLatest log lines, whether the job finished, GPU utilisation
upload / downloadFiles and folders between your computer and the instance (SFTP)
stop_instanceDestroys the instance and stops billing
list_modelsModels on the OpenAI-compatible API, for inference without renting a GPU
run_jobStarts a GPU, runs one command and destroys the GPU, all on CloudGPU's servers; safe to retry with the same idempotency_key
get_job / list_jobsJob status, exit code, cost, the last ~4 KB of output and the job's history
cancel_jobStops a job and destroys its GPU
connect_account / finish_connectGets a key without copying one: the user approves this assistant in the browser with a spending limit and a number of GPUs at once

The server also provides a train_on_cloudgpu prompt.

Guardrails

  • A quote first. create_instance only takes a quote_id from estimate_cost and user_confirmed=true.
  • Server-side limits. Every instance is created with max_spend_usd, max_hours and an idle limit (60 minutes by default). CloudGPU's servers check them and destroy the instance when one is hit, even if your client has disconnected or your laptop is asleep.
  • Your own ceiling. CLOUDGPU_MAX_SPEND_USD and CLOUDGPU_MAX_HOURS cap what the agent may set.
  • Results before shutdown. After commands have run, stop_instance refuses until something has been downloaded, unless the user confirms force=true.
  • Secrets stay out of the chat. The instance's SSH login is used inside this process and never returned to the model. Tool output is scrubbed of the API key and login details. Uploading .ssh, .env, key files or your whole home directory needs allow_sensitive=true.
  • The instance stays manageable. Commands that change the root password, SSH configuration, firewall or the platform's monitoring agent are refused. CloudGPU shuts down instances that it can no longer monitor.
  • Jobs are not started twice. run_job sends an Idempotency-Key. Resending the same job returns the same job instead of starting a second GPU, and the server refuses the same key with different parameters.
  • Keys with a budget. A key from connect_account has a total spending limit, a number of GPUs it may run at once and an expiry date, all enforced by CloudGPU's servers. Revoke it at https://cloudgpu.app/api and it can no longer start anything.
  • Read-only mode. CLOUDGPU_READ_ONLY=1 registers only the look-up tools.

Configuration

EnvDefault
CLOUDGPU_API_KEY(or connect_account)From https://cloudgpu.app/api. Without it, a key saved by finish_connect in ~/.config/cloudgpu/credentials.json is used
CLOUDGPU_MAX_SPEND_USD50Highest budget the agent may set for one instance
CLOUDGPU_MAX_HOURS24Longest time limit the agent may set
CLOUDGPU_READ_ONLYoff1 = look-up tools only
CLOUDGPU_BASE_URLhttps://cloudgpu.appOverride the API host

Model API on the same balance

The key also works with the OpenAI-compatible API at https://cloudgpu.app/v1. Call list_models (or GET /v1/models) to see the available model IDs. Model prices are on cloudgpu.app/api.

Without MCP

The server wraps CloudGPU's public REST API, which any agent or script can call with the same key:

curl https://cloudgpu.app/v1/gpu/offers -H "Authorization: Bearer $CLOUDGPU_API_KEY"

Command-line tool

The package also installs a cloudgpu command for using the same API from a terminal (Node.js 18.3 or newer, no extra dependencies):

npm install -g cloudgpu-mcp      # or run it once with: npx -p cloudgpu-mcp cloudgpu --help
cloudgpu login                   # saves your key to ~/.config/cloudgpu/config.json (mode 0600)
cloudgpu offers                  # GPU models with live price and availability
cloudgpu up --gpu "RTX 4090" --template comfyui --max-minutes 120 --max-spend 5 --wait
cloudgpu ssh <id>                # opens your system ssh to the instance
cloudgpu down <id>               # destroys it and stops billing (asks first; --yes to skip)
CommandWhat it does
loginSave an API key (input hidden, or piped on stdin); checked against the API first
offers [--template ID]GPU models, VRAM, live price per GPU-hour, availability
templatesReady-made images and the GPU each recommends
up --gpu MODEL [--template ID] [--count N] [--max-minutes N] [--max-spend USD] [--idle-minutes N] [--setup FILE] [--wait]Rent an instance; --setup runs a bash script once as root after hand-over (log in /root/cloudgpu-setup.log); --wait polls until it is running or failed, then prints the SSH command and URL
ls / status <id>Instances with status, minutes run and cost so far
ssh <id> [-- ARGS]Run ssh with the instance's host, port and user; --show-password prints the password if there is one
down <id> [--yes]Destroy the instance; its disk is erased, so download results first
balanceBalance and how many instances the account may run

CLOUDGPU_API_KEY takes precedence over the saved key, and CLOUDGPU_BASE_URL overrides the API host. Read commands accept --json; SSH passwords are left out of JSON unless you pass --show-password. Every command has --help. Errors print the API's message and exit non-zero (2 for usage errors).

Links

CloudGPU here means cloudgpu.app. Prepaid balance, billed per minute; when the balance runs out, running instances are destroyed and their disks erased, so keep enough balance for the job and download results as you go.

Development

npm install
npm test
node src/index.js   # stdio server; set CLOUDGPU_API_KEY first
node src/cli.js --help

License

MIT, see LICENSE.

Reviews

No reviews yet

Be the first to review this server!