GPU MCP server
https://mcp.ecohash.com/gpu is an MCP server that gives an AI coding agent the GPU-instance lifecycle as tools — find capacity, quote, launch, get the SSH command, stop — on your account and your credit. The agent loop is the client's (Claude Code, Codex, the Claude app); we only expose tools.
Connect it by signing in with your EcoHash account, or with an API key. Either way the agent can do only what you allow: viewing and quoting, or also launching and managing.
Connect
Two ways in: sign in with your EcoHash account (recommended — nothing is pasted into a file, and you choose what the agent may do), or an API key with Compute access (for scripts, CI and clients that cannot sign in — see API keys). The steps differ per client.
Claude Code
claude mcp add -s user --transport http ecohash-gpu https://mcp.ecohash.com/gpu
-s user keeps the server in your user settings, so it is there in every project. Without it, Claude Code saves the server only for the directory you ran the command in.
Adding the server does not sign you in yet: claude mcp list shows it as Needs authentication. Inside Claude Code, type /mcp, pick ecohash-gpu and choose Authenticate. EcoHash opens in your browser — see What you approve below. Afterwards /mcp and claude mcp list show it as connected.
With an API key instead of signing in:
claude mcp add -s user --transport http ecohash-gpu https://mcp.ecohash.com/gpu \
--header "Authorization: Bearer eco_YOUR_KEY"
Codex
codex mcp add ecohash-gpu --url https://mcp.ecohash.com/gpu
codex mcp login ecohash-gpu
The first command writes the server to ~/.codex/config.toml; the second opens the sign-in page in your browser. The resulting entry looks like this:
[mcp_servers.ecohash-gpu]
url = "https://mcp.ecohash.com/gpu"
With an API key instead of signing in, keep the key out of the file by naming an environment variable that holds it:
[mcp_servers.ecohash-gpu]
url = "https://mcp.ecohash.com/gpu"
bearer_token_env_var = "ECOHASH_API_KEY"
Then export ECOHASH_API_KEY=eco_YOUR_KEY before starting Codex. codex mcp list (or /mcp in the Codex TUI) shows the server and whether it is signed in.
Claude app (claude.ai, desktop, mobile) and the Claude Code desktop app
Claude's own apps add remote servers as connectors, once per Claude account, not through a config file (a url entry in claude_desktop_config.json is ignored):
- In claude.ai or the Claude desktop app open Settings → Connectors → Add custom connector.
- Name:
EcoHash GPU. URL:https://mcp.ecohash.com/gpu. Click Add. - Click Connect on the new connector and sign in — see What you approve.
One connector serves every Claude surface on that account: claude.ai in the browser, the desktop and mobile apps, and sessions in the Claude Code desktop app, which pick it up without claude mcp add. In the EcoHash console the connection is listed under API Keys → Connected apps as Claude; disconnect it there, or remove the connector in Claude's settings.
Connectors sign in with your account and have no field for an API key, so use sign-in here.
Other clients
Any client that supports remote (Streamable HTTP) MCP servers with sign-in can use https://mcp.ecohash.com/gpu with no headers: the server advertises its OAuth 2.1 flow (PKCE, dynamic client registration) at the standard discovery addresses, so the client finds the sign-in page on its own. A client that only supports static headers can pass Authorization: Bearer eco_YOUR_KEY instead.
What you approve
When you sign in, EcoHash opens in your browser. Sign in if asked, and you see what the app is asking for:
- Use models — call models on your account.
- View GPU resources and prices — list instances, clusters, storage and templates, and quote prices.
- Launch and manage GPU resources — spends credit — launch, extend and terminate. Off unless you tick it.
Choose what to allow and click Allow. The client is connected; it appears under API Keys → Connected apps, where you can disconnect it at any time.
The app is shown as unverified — any app can register a name — so only approve a request you just started yourself.
If your client runs on a remote machine, the browser may end on a page at http://localhost:… that fails to load. That is expected: copy the full address of that page and give it to the client if it asks for it.
Try it
Ask, in plain words: "launch an RTX Pro 6000 with my SSH key and give me the command", "what GPU instances do I have running?", "stop instance 512".
If a tool needs more than you allowed, it says so and the agent tells you rather than retrying. With a key the message is "this API key is read-only for compute — use a key with full Compute access to launch, change or delete resources": create a Full key. With sign-in, disconnect the app under API Keys → Connected apps and connect it again with Launch and manage ticked.
Tools
GPU instances
| Tool | What it does | Cost |
|---|---|---|
list_gpu_availability | Regions, GPU types, how many are free, what one GPU comes with, price per hour | free |
get_balance | Your available credit | free |
quote_instance | What a launch will hold now and cost per hour after. It does not check regional capacity — read list_gpu_availability (or use quote_template) before launching | free |
list_instances | Your instances, with status and SSH command | free |
get_instance | One instance: status, SSH command, service URL, credit held | free |
create_instance | Launch. Defaults to no end time (billed hourly until you stop it) and to the GPU Base platform image (has OpenSSH). Pass an SSH public key to get an SSH command back; pass cloud_drives / shared_filesystems ids to mount storage, or user_model_id to mount a model's weights | holds credit |
extend_instance | Add hours to a fixed-duration instance | holds credit |
terminate_instance | Stop it; GPUs released, unused held credit refunded | irreversible |
GPU clusters
| Tool | What it does | Cost |
|---|---|---|
list_clusters, get_cluster | Your clusters; one cluster with its replicas and attached filesystems | free |
quote_cluster | What a cluster launch will hold now and cost per hour, and whether the region has the GPUs free right now | free |
create_cluster | 2–8 replicas, fixed duration, optional new or existing shared filesystem | holds credit for the whole run |
extend_cluster | Add hours | holds credit |
terminate_cluster | Stop all replicas | irreversible |
Templates
| Tool | What it does | Cost |
|---|---|---|
list_templates | Your saved launch configurations and the public catalogue (instance and cluster templates) | free |
quote_template | What launching one would hold, in which region, and whether capacity is free | free |
launch_template | Start an instance, cluster or model instance from a template, with optional name / region / duration / SSH key overrides (a model instance takes only a name) | holds credit |
get_model_instance | One model instance: status, GPUs, rate, and the model name to call it by | free |
terminate_model_instance | Stop a model instance; the unused hold is refunded | irreversible |
Storage and SSH keys
| Tool | What it does | Cost |
|---|---|---|
list_storage | Cloud drives, shared filesystems, free capacity per region | free |
create_storage | A drive (kind: drive) or shared filesystem (kind: filesystem), 50–500 GB, in a region | bills daily until deleted |
expand_storage | Grow a shared filesystem in place, online (drives cannot be expanded). It can never shrink, and is limited to 3 expansions per filesystem per day | raises the daily bill |
delete_storage | Destroy one (refused while mounted) | irreversible |
list_ssh_keys, add_ssh_key | Saved public keys | free |
Every tool that commits money or destroys something requires confirm: true. A well-behaved agent quotes first, tells you the amount, and only confirms after you agree — the tool descriptions say so, and your client also asks before running a tool with side effects.
Deliberately not tools: a terminal, file upload, file browse, folder export. Once an instance is running, the agent works over SSH, which is a better terminal than any tool.
Limits
On top of the API's rate limits, the MCP server caps what one key can commit through it: 20 launches per hour and $200 of estimated holds per day per key. Above that a tool call is refused with a message saying so, and nothing is charged. Contact us if you need more.
Security notes
- The server holds no credentials. Your sign-in token or key travels in the request header and is used for that request only.
- With sign-in, the client holds a short-lived token that it renews on its own; nothing is pasted into a configuration file. Disconnect it under API Keys → Connected apps and it stops working on its next request.
- With a key, the key lives in your client's configuration file. Revoke it from the console's API Keys page at any time; create a separate key for the agent rather than reusing one from a production service.
- Start an agent with view and quote only. It can then explore and price a launch, and ask you before anything is spent.
- Nothing the agent does bypasses your account's limits: the same holds, the same GPU cap, the same membership rules as the console.