Skip to main content

Lantern Works GPU prices — MCP server (v0.3.43, read-only, stdio)

mcp-name: io.github.connormatthewdouglas/lantern-works-deals

Free, read-only, no API key. GPU price comparison for agents, checked daily: compare_gpu_prices returns hourly rental prices for H100, A100, RTX 4090 and more across tracked providers, cheapest first, each with the vendor's source page and check date; include_history=true adds daily price history (since 2026-10-27) and recent changes. Also prices the cheapest stack for your monthly usage (optimize_stack) and, last, searches and compares AI-infra deals and free tiers, ranked by customer value (never by affiliate status). Some result links are referral links.

Quick start

uvx lantern-works-deals-mcp

Claude Code:

claude mcp add lantern-works-deals -- uvx lantern-works-deals-mcp

Cursor (.cursor/mcp.json), Cline (cline_mcp_settings.json) and Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "lantern-works-deals": {
      "command": "uvx",
      "args": ["lantern-works-deals-mcp"]
    }
  }
}

Without uv: pip install lantern-works-deals-mcp, then use "command": "lantern-works-deals-mcp". Docker (from the repo root; installs the pinned PyPI release): docker build -t lantern-works-deals-mcp . && docker run -i --rm lantern-works-deals-mcp. More clients: https://thelanternworks.com/install/

Hosted endpoint (no install)

Streamable HTTP, same read-only tools: https://lantern-works-mcp.lantern-works.workers.dev/mcp?ref=pypi-readme (claude mcp add --transport http lantern-works-deals https://lantern-works-mcp.lantern-works.workers.dev/mcp?ref=pypi-readme). Free Cloudflare Worker; it stores only anonymous call counts per tool per day (no IPs, user agents or arguments), public at https://lantern-works-mcp.lantern-works.workers.dev/stats. ?ref= only tags which link was used.

Tools

Tool Args Returns
compare_gpu_prices gpu (e.g. H100, A100 SXM, RTX 4090), limit (1-25, default 10), include_history (default false), on_demand_only (bool, default false) {summary, scope, total, results[], data_source, feed_updated_at, ...} sorted by hourly_usd; each result has source_url, checked_at and report_issue_url. With include_history=true, each result adds price_history (daily-snapshot change points) and the response adds history.recent_changes (last 30 days)
get_price_changes since (YYYY-MM-DD, optional), gpu (substring filter, optional), limit (1-200, default 50) GPU price moves among tracked providers, newest first (drops, rises, removals, then newly tracked rates): from_hourly_usd, to_hourly_usd, change_pct, direction, source_url; window, counts, data_checked_at, next_refresh_utc. Without since, the latest day (/api/v1/gpu-price-changes.json); with it, /api/v1/gpu-prices/history.json. Bad date → invalid_argument
optimize_stack scrape_pages, scrape_pages_js, proxy_gb, emails_sent, search_queries, gpu_hours, gpu_model, exclude_manual_signup per-line chosen plan, monthly_cost_usd, calc, vendor quote, source_url, checked_at, assumptions, alternatives; unpublished prices are unknown
optimize_agent_stack description (free text) plus optional workload, gpu_hours, gpu_model, model_size_b, scrape_pages, js_rendering, proxy_gb, search_queries, emails_sent, llm_api, monthly_budget_usd, exclude_manual_signup parsed (what the deterministic parse found), per-component cheapest cited option with calc, source_url, verified_at, referral_disclosure, manual-signup notes; monthly_estimate_usd with estimate_math and estimate_is_complete; "no sourced price tracked" where there is no data
estimate_job_cost gpu_family, gpus_per_job, job_hours or (work_units + throughput_units_per_gpu_hour), optional workload, allow_interruptible (default false), min_vram_gb, runs_per_month, top_n (default 5), max_data_age_hours cost of one job (compute subtotal), cheapest first: results[] with rate_id, allocated_gpus, source_url, verified_at, data age; assumptions, citations, missing_costs, budget_verdict, quote_id. Inference workloads without your throughput use a cited MLPerf figure (throughput_basis, throughput_source); otherwise not_found "missing: throughput"
search_deals query, category, offer_type, max_price, tags[], limit (1-25, default 10), cursor {total, count, results[], next_cursor} (summary fields only)
compare_deals ids (2-5) {order, deals[], note} best value first
get_deal id the deal's public record

compare_gpu_prices uses exactly the data published at https://thelanternworks.com/api/v1/gpu-prices.json (history: https://thelanternworks.com/api/v1/gpu-prices/history.json). Prices are re-read daily from each vendor's own page or API and change only where a price was parsed; a rate not re-verified for 7 days is held out of rankings. Model matching is by whole tokens (H100 matches H100 SXM; L40 does not match L40S). "Cheapest" means cheapest among tracked providers, not the whole market.

Errors: {"error": {"code": "invalid_argument|invalid_cursor|not_found|feed_unavailable|feed_invalid", "message": ...}}.

Errors and isError

stdio and hosted use one rule (core/contract.is_error): isError is true exactly when the result is the error envelope {"ok": false, "error": {"code", "message"}}. Invalid input (invalid_argument), an unknown or unsupported GPU, vendor or workload (not_found) and upstream failures (feed_unavailable, upstream_unavailable, ...) are errors. A valid query that matches nothing is not an error: ok: true, count: 0, an empty list, isError: false. structuredContent is the same object in both cases. Arguments are checked the same way in both before the tool runs: a missing required argument, a wrong JSON type or an unknown extra argument (schemas set additionalProperties: false) returns invalid_argument. Unknown tool name is a protocol error, not a tool result: hosted answers JSON-RPC error -32602, stdio returns the MCP SDK's isError text "Unknown tool".

Data and privacy

Deals: https://thelanternworks.com/api/v1/deals.json; stack pricing: https://thelanternworks.com/api/v1/stack-pricing.json; GPU prices: https://thelanternworks.com/api/v1/gpu-prices.json. Each is cached 5 min (a stale copy is served if a refetch fails). Requests send only User-Agent: lantern-works-deals-mcp/<version> (no user, host or install identifiers). Overrides: LANTERN_DEALS_FILE / LANTERN_DEALS_URL, LANTERN_GPU_PRICES_FILE / LANTERN_GPU_PRICES_URL, LANTERN_STACK_PRICING_FILE / LANTERN_STACK_PRICING_URL. Only an allow-list of public fields is returned.

Telemetry: off by default. Opt in with LANTERN_TELEMETRY=1 to send an anonymous daily count of tool calls. Each count is only the tool name, package version, UTC day and number of calls. No arguments, IDs or IPs are sent or stored. It is batched to at most one request per day and never blocks or breaks a tool call. Details: PRIVACY.md.

From git (fallback)

git clone https://github.com/connormatthewdouglas/agent-work-stack-deals.git
cd agent-work-stack-deals
python3 -m venv .venv && .venv/bin/pip install -r mcp_server/requirements.txt
.venv/bin/python mcp_server/server.py

Test

.venv/bin/pip install pytest && .venv/bin/python -m pytest -q tests
python3 scripts/test_pypi_install.py --uvx   # clean venv + uvx install from PyPI, calls every tool over stdio

Package

pyproject.toml at the repo root builds lantern-works-deals-mcp (MIT) with a lantern-works-deals-mcp console command. Published on PyPI and in the MCP Registry as io.github.connormatthewdouglas/lantern-works-deals.

License

The package code is MIT. The price and deal data it reads (the Lantern Works feeds) is CC BY 4.0: credit "Lantern Works" and link to https://thelanternworks.com. See https://thelanternworks.com/methodology/#license.

Metadata

Release files for lantern-works-deals-mcp 0.3.43

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lantern-works-deals-mcp 0.3.43
File Size Uploaded Provenance Actions
lantern_works_deals_mcp-0.3.43.tar.gz 155.9 kB Without provenance Details for lantern_works_deals_mcp-0.3.43.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for lantern-works-deals-mcp 0.3.43
File Interpreter ABI Platform Actions
lantern_works_deals_mcp-0.3.43-py3-none-any.whl Python 3 none any Details for lantern_works_deals_mcp-0.3.43-py3-none-any.whl

Total release size: 250.5 kB

Release files / lantern_works_deals_mcp-0.3.43.tar.gz

Download URL lantern_works_deals_mcp-0.3.43.tar.gz
Size 155.9 kB
Tags Source
SHA-256 checksum
How to use checksums
52cb80e066fc50ea433db0b29b258e5e5bbab6cae59ad399445d1d5bec004c39
BLAKE2b-256 checksum
How to use checksums
240c4089fdbdd1fde084ea1ed0ffec64a3a2ce2a95fbf766d8ea68164f5c6555
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release files / lantern_works_deals_mcp-0.3.43-py3-none-any.whl

Download URL lantern_works_deals_mcp-0.3.43-py3-none-any.whl
Size 94.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e365cada9dc2166b75486bb9d00fc2a5fc77e72a22263d971822cdc48af2755c
BLAKE2b-256 checksum
How to use checksums
1c2c692812f47713430fab36b0567f2629ee73f3986347c46136e786d8c27c27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Security for lantern-works-deals-mcp 0.3.43

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.43 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page