Skip to main content
Glama

spotgpu-mcp

MCP (Model Context Protocol) server for SpotGPU spot GPU rental prices.

Exposes one tool: spot_price → GET /v1/spot (Vast + RunPod best + alts).

Credits ≠ rental. SpotGPU API credits pay for price lookups.
usd_per_hr is the upstream provider rental price, not a SpotGPU fee.

Install / run

Requires Python 3.10+ and a SpotGPU API key (sk_… from https://spotgpu-api.fly.dev).

One-shot (after PyPI publish)

uvx spotgpu-mcp

Local (this monorepo package)

cd packages/mcp-spotgpu
uv sync   # or: pip install -e .
export SPOTGPU_API_KEY=sk_…
spotgpu-mcp

Env:

Variable

Required

Default

SPOTGPU_API_KEY

yes

—

SPOTGPU_BASE_URL

no

https://spotgpu-api.fly.dev

Never hardcode keys. The server speaks MCP on stdio only (do not print to stdout).

Related MCP server: atom-mcp-server

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "spotgpu": {
      "command": "uvx",
      "args": ["spotgpu-mcp"],
      "env": {
        "SPOTGPU_API_KEY": "sk_…"
      }
    }
  }
}

Local editable install instead of uvx:

{
  "mcpServers": {
    "spotgpu": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/spotgpu/packages/mcp-spotgpu", "spotgpu-mcp"],
      "env": {
        "SPOTGPU_API_KEY": "sk_…"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json (or user MCP config):

{
  "mcpServers": {
    "spotgpu": {
      "command": "uvx",
      "args": ["spotgpu-mcp"],
      "env": {
        "SPOTGPU_API_KEY": "sk_…"
      }
    }
  }
}

Tool: spot_price

Param

Type

Default

Notes

gpu

string

required

e.g. RTX_4090

qty

int

1

≥ 1

markets

string

"vast,runpod"

comma-separated

fresh

bool

false

maps to fresh=1

On success returns JSON text of the API body (best.usd_per_hr, alts, …).

Attribution

Requests send X-SpotGPU-Client: mcp-spotgpu.

Not published yet

PyPI / Official MCP Registry / Smithery / Glama publish is deferred until Biz Bot approval. server.json and glama.json stubs are in this package for later.

Available Tools

1 tool
spot_priceA

Get SpotGPU spot rental prices (best + alts) for a GPU type.

Returns JSON from GET /v1/spot including best.usd_per_hr (upstream provider rental price, not a SpotGPU fee). Credits are for API calls, not GPU rental.

Args: gpu: GPU type, e.g. RTX_4090, RTX_3090, RTX_A6000 qty: Number of GPUs (>= 1). Default 1. markets: Comma-separated markets. Default "vast,runpod". fresh: If true, bypass cache (query fresh=1). Default false.

ParametersJSON Schema
NameRequiredDescriptionDefault
gpuYes
qtyNo
freshNo
marketsNovast,runpod

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the HTTP method/path, that results come from a cache unless fresh=true, and that best.usd_per_hr is an upstream provider price rather than a SpotGPU fee. It stops short of describing pagination, error behavior, or response freshness semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and the key return field before the Args block, and every sentence carries information. The Args entries partly restate schema defaults, which is mild redundancy but aids readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained, yet the description still flags the one field agents will care about (best.usd_per_hr). Combined with full parameter coverage and the read-only GET nature of the call, nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: every one of the four parameters is documented with format and defaults (gpu example values, qty >= 1, comma-separated markets list, fresh bypassing cache). This fully covers the gaps in the structured schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get SpotGPU spot rental prices') and scopes the result ('best + alts') for a GPU type. It even names the underlying endpoint, so an agent knows exactly what the tool retrieves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and the pricing context ('Credits are for API calls, not GPU rental'), which usefully clarifies the cost model. However, there is no explicit when-to-use/when-not guidance and no siblings to route against, so the description leaves selection entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.0
    • First observedspot_price

TDQS

A4/5.0

Scored across 1 tool

Disambiguation5/5

With only a single tool in the set, there is nothing to confuse it with; an agent cannot misselect between alternatives. Its purpose (fetch spot rental prices) is unambiguous.

Naming Consistency4/5

The lone name spot_price is clear lowercase snake_case, matching the convention used by the parameters (gpu, qty, markets, fresh). There is no cross-tool inconsistency to evaluate, though it is a noun phrase rather than a verb_noun action name.

Tool Count2/5

A one-tool surface is very thin even for a narrowly scoped pricing service; common companion needs (listing supported GPU types, markets, or making a booking) are absent. It works only for the single exact lookup it was built for.

Completeness2/5

The domain (GPU spot rental) realistically includes discovering GPU types/markets and possibly reserving capacity, none of which exist here. An agent can retrieve prices but hits a dead end for anything else, with no fallback operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers