spotgpu-mcp
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_hris 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-mcpLocal (this monorepo package)
cd packages/mcp-spotgpu
uv sync # or: pip install -e .
export SPOTGPU_API_KEY=sk_…
spotgpu-mcpEnv:
Variable | Required | Default |
| yes | — |
| no |
|
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 |
| string | required | e.g. |
| int |
| ≥ 1 |
| string |
| comma-separated |
| bool |
| maps to |
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 toolspot_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.
| Name | Required | Description | Default |
|---|---|---|---|
| gpu | Yes | ||
| qty | No | ||
| fresh | No | ||
| markets | No | vast,runpod |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 tool update
v0.1.0- First observed
spot_price
TDQS
Scored across 1 tool
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.
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.
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.
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
Related MCP Connectors
Live GPU spot market: 1,700+ offers, 10 provider feeds. History, watches, limit orders, no fee
Live VPS, bare metal and GPU hosting prices across ~75 providers, rescraped daily.
Live GPU rental market: 2,500+ offers across a dozen provider feeds. History, watches, limit orders.
Cloud GPU prices with live stock from 22 providers. Find where to rent an H100 or B300 now.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceFree real-time cached CoinGecko USD prices + 24h change. No key, no signup, 15/min rate limit. x402 paid v2 soon. Perfect for trading/research agents.-
- AlicenseAqualityCmaintenanceGlobal price benchmarking for AI inference across 2,600+ SKUs from 47 vendors. Query live pricing, market indexes, and model specs via 8 tools. Free tier available.849 npmMIT
- FlicenseAqualityDmaintenanceEnables querying live AWS spot price arbitrage signals and suppression logs directly in Claude Code or any MCP-compatible AI tool.6-
- AlicenseAqualityAmaintenanceProvides real-time AI compute pricing and cost analysis across LLM providers, enabling session cost tracking, model price comparisons, and historical data queries.22226 npmMIT