cloudprice-mcp
[PyPI version]
[Python versions]
[License: MIT]
[Albaker-Group/cloudprice-mcp MCP server]
Ask your AI assistant what the cloud will cost — and get real list prices back.
cloudprice-mcp gives Claude, Cursor, GitHub Copilot and any other MCP client
pricing and FinOps tools across AWS, Azure, GCP and OCI, plus LLM token
prices for ~2,300 model/provider combinations. No cloud account, no API keys:
it works from a catalogue refreshed every week from the providers' public
pricing APIs.
- Four clouds in one answer, including OCI and its 10 TB free egress — which
most tools leave out.
- Cloud and AI costs side by side: price a VM, a GPU and the LLM calls
running on it in the same conversation.
- Price history: every weekly catalogue is archived, so you can ask what
changed, not just what it costs today.
- Decisions, not just lookups: RI / Savings Plan break-even, 3-year TCO,
migration payback, egress arbitrage, carbon (kg CO2e), FOCUS 1.3 export.
[demo]
Quick start
Add this to your MCP client's config (Claude Desktop, Cursor, VS Code, …).
uvx downloads and runs it — nothing to install
first:
Claude Code: claude mcp add cloudprice -- uvx cloudprice-mcp
Or install with pip and let it configure every client it finds (asks before
writing each one):
Restart the client and the 39 tools appear. Problems? cloudprice-mcp doctor
says what is wrong; INSTALL.md has per-client steps for Windows,
macOS and Linux. Python 3.10+.
What's new in each release: CHANGELOG.md.
Things to ask
"I run 6× t3.2xlarge on AWS. On-demand vs 1-year Savings Plan vs 3-year RI —
what's the break-even month?" → optimize_commitment
"At 50 TB/month internet egress, which cloud is cheapest, and what would
moving save over 3 years?" → compare_egress, find_egress_arbitrage
(OCI ≈ $340/mo vs ≈ $4,000/mo on the hyperscalers)
"Size this 3-tier app on all four clouds: 8 web (4 vCPU/16 GB), 12 app
(8/32), 4 DB (16/64), 5 TB SSD, 10 TB/month egress, multi-AZ." →
compare_workload, compare_total_cost_of_ownership
"Cheapest way to run 50M input / 10M output tokens a month — and is Claude
Sonnet the same price on Bedrock and Vertex?" → compare_token_pricing
"Which H100 instance is cheapest per GPU-hour across the four clouds?" →
compare_gpu_workload
"We send 2B input / 500M output tokens a month to an API. Would renting
8×H100 and serving Llama ourselves be cheaper, and at what volume?" →
compare_llm_vs_selfhost
"My support agent averages 8 steps with a 2k system prompt and 3k of tool
definitions. What does 50,000 runs a month cost on Sonnet vs Haiku, and how
much does prompt caching save — and hosted on AgentCore or Lambda?" →
estimate_agent_cost (tokens + AgentCore Runtime/Gateway/Memory vs Lambda)
"We'll run this agent 50,000 times a month, 30 seconds a run, on Claude
Sonnet. AgentCore, Azure Foundry or Vertex Agent Engine, or just Lambda?" →
compare_agent_platforms (hosting, tools, memory and tokens on each)
"What changed in LLM pricing this week — anything cheaper on Bedrock or
Groq?" → llm_price_changes (weekly archive of ~3,600 model/provider prices)
"Which models on Bedrock and Azure OpenAI retire in the next six months,
and what replaces them?" → model_retirements (also flagged automatically
by analyze_ai_spend and review_agentcore)
"How has OCI E5.Flex pricing moved since May?" → get_price_history
"Here's our FOCUS export (~/Downloads/focus-2026-10.csv). Where is the money
going, what jumped last month, and how much of our usage do Savings Plans
cover?" → analyze_bill — reads the file on your machine; nothing is sent
anywhere, and hosted deployments cannot call it.
"Using the same export: are we under-committed, what spiked last week, and
how much of our spend is missing a team tag?" → find_commitment_gaps,
detect_bill_anomalies, analyze_cost_allocation
"What will this month's bill be, and what's our cost per customer? We had
41,000 customers in September and 44,500 in October." → forecast_spend,
calculate_unit_cost
"What would the compute on this bill cost on Azure, GCP or OCI?" →
reprice_bill: the vCPU and memory you actually used, priced on all four
clouds, next to what you paid
"What are we spending on Bedrock and Azure OpenAI, are we paying list
price, and would prompt caching help?" → analyze_ai_spend
"Review our AgentCore deployment: is it secure, what does the agent cost,
and what should we fix first?" → review_agentcore on
terraform show -json output, plus the bill
Every answer carries the catalogue date and an honest_gaps list of what the
tool does not model, so the AI can tell you where the number stops being exact.
Use it on your own bill and deployment
Nine tools read files on your machine: your cloud bill (a FOCUS export) and
your AgentCore deployment (Terraform JSON). The file never leaves your machine;
only the tool's summary goes back to your AI assistant. Hosted deployments of
this server cannot call these tools at all.
1. Download your bill as a FOCUS CSV. Every major cloud exports it:
.csv and .csv.gz up to 500 MB are read.
2. Ask, with the file path in the question:
"Here's our bill: ~/Downloads/focus-2026-10.csv. Where is the money going,
what would it cost on the other clouds, and what are we spending on AI?"
3. Review an AgentCore deployment (Terraform):
"Review our AgentCore deployment in ~/plan.json. Our bill is
~/Downloads/focus.csv and the agent is tagged agent=support."
You get findings ranked by severity: public network, unauthenticated
gateways, model permissions, secrets in environment variables, idle-session
cost, missing alarms and tags, and with the bill, what the agent costs and
what caching would save. Each one names the resource, the Terraform fix and the
AWS page behind the rule. To accept a finding on purpose, say so: "skip S1 on
aws_bedrockagentcore_agent_runtime.demo, it is a public demo". It is then
listed as skipped, with your reason.
plan.json holds every value Terraform knows, secrets included. The review
never repeats them, but keep the file out of git and delete it when you are done.
Tools
39 tools, grouped by job. Full descriptions and arguments:
docs/TOOLS.md (generated from the server, so it is always
current).
FinOps Framework coverage
How the tools map to the FinOps Foundation
capabilities. "Your bill" tools read a FOCUS export locally; the rest work from
list prices and the weekly price archive.
Example: compare_workload input
Modelling notes. Commitments apply a conservative compute discount (1-year
≈ 30%, 3-year ≈ 50%); storage is not discounted. Snapshots are priced as full
copies by default — set snapshot_incremental_factor (e.g. 0.3) for
real-world incremental snapshots. multi_az doubles compute, not storage.
Pricing data
Prices are bundled as a curated dataset of common SKUs across 4 clouds:
- Compute (~50 VM SKUs across AWS / Azure / GCP / OCI, including OCI A1 Always Free + A2 Arm Ampere + E5 Flex)
- Block storage (SSD + HDD per cloud)
- Object storage (Hot / Cool / Archive tiers per cloud, including OCI Always Free 20 GB)
- Managed PostgreSQL (RDS / Azure DB / Cloud SQL / OCI Database with PostgreSQL)
Auto-refreshed weekly
The bundled catalog is refreshed every Sunday by a GitHub Action that hits each cloud's public pricing API:
- AWS — Pricing API (via boto3, OIDC-authenticated)
- Azure — Retail Prices API (public, no auth)
- OCI — Public pricing API (public, no auth)
- GCP — Cloud Billing Catalog API (via API key —
GCP_API_KEY env var). Added in v0.8.0
- Bedrock LLM token prices — AWS Pricing API
AmazonBedrock service code (via boto3, same OIDC role). Added in v0.15.0 — refreshes input/output token rates for every Bedrock-hosted model we track (Claude 4 Opus/Sonnet, Claude 3/3.5 Haiku, Llama 3.1/3.3, Mistral Large 2, DeepSeek R1)
- Extended LLM catalog — LiteLLM's
model_prices_and_context_window.json (MIT-licensed, community-maintained, unauthenticated). Added in v0.16.0 — ingests ~2000 (model, provider) combinations covering Together AI, Fireworks, Groq, Replicate, Perplexity, regional Bedrock/Azure variants, older model versions. Powers the lookup_extended_model_pricing tool. Curated hand-vetted prices (compare_token_pricing) and extended (lookup_extended_model_pricing) are deliberately separate so users always know which catalog they're hitting.
Each refresh writes a dated snapshot to src/cloudprice_mcp/data/prices/YYYY-MM-DD.json and src/cloudprice_mcp/data/token_prices/YYYY-MM-DD.json — every JSON ever published lives in the repo. The history archive is MIT-licensed and grows with every release.
Every tool result includes the catalog's as_of field so you know exactly which prices were used.
Public price history dataset
cloudprice-mcp is the only FinOps tool we know of that preserves every weekly snapshot. You can query "what did m5.xlarge cost in May?" — neither AWS Calculator nor GCP Estimator can answer that because their pages always show today.
Query the history from the CLI:
The -72.78% drop is the v0.7.0 auto-refresh fixing a hand-curated inaccuracy in the prior OCI catalog — proof that the auto-refresh story works.
Query the history from AI assistants via two new MCP tools:
get_price_history(cloud, sku, since?) — full timeseries + change stats
list_tracked_skus(cloud?, since?) — every (cloud, sku) pair we have history for
Real questions this unlocks:
"Has AWS m5.xlarge changed price in the last quarter?"
→ AI calls get_price_history, returns timeseries with start/end prices and % change.
"Show me every multi-cloud price mover since January."
→ AI calls list_tracked_skus(since="2026-01-01"), returns every SKU + its latest price + change.
Cross-provider LLM token pricing
Token costs are the fastest-growing FinOps line item in 2026 — and nobody compares them cross-provider openly. The same model is often available on multiple providers at different prices (Claude on Anthropic / Bedrock / Vertex; GPT on OpenAI / Azure OpenAI; Llama on Bedrock).
Covers 19 models across 8 providers: Claude (4 Opus / 4 Sonnet / 3.5 Haiku / 3 Haiku), GPT (5, 5 mini, 4o, 4o-mini, o1), Gemini (2.0 Flash, 1.5 Pro/Flash), Llama (3.1 8B/70B/405B, 3.3 70B), Mistral Large 2, DeepSeek V3/R1.
Real questions this unlocks:
"Cheapest model that handles 200K context for output-heavy chat at 10M/mo output volume?"
→ AI calls compare_token_pricing with the volume + an optional model_family filter, returns ranked monthly cost across every viable model+provider combo.
"Should I use Anthropic API or Bedrock for Claude?"
→ compare_token_pricing(model_id="claude-4-sonnet") shows price parity on per-token rates, but Anthropic API exposes a 10x cheaper cache_read rate that Bedrock doesn't publish. For caching-heavy workloads, Anthropic wins.
Multi-cloud GPU pricing
The fastest-growing cloud cost category — and nobody compares it cross-cloud openly.
Covers NVIDIA T4, A10, A10G, L4, L40S, V100, A100, H100 across all 4 clouds. Returns:
- Absolute hourly winner — the cheapest matching SKU per cloud
- Per-GPU efficiency winner — sometimes a different cloud (e.g., OCI's BM.GPU4.8 is cheapest per GPU but only sold as 8x, so for
gpu_count=1 Azure/GCP win the absolute ranking)
- Over-provisioning flags — when the only matching SKU bundles more GPUs than asked for
- GPU memory — differentiates A100 40GB vs 80GB (same
gpu_type field)
The OCI H100 finding is real: at 8x H100 it's ~19% cheaper than AWS/Azure for identical hardware.
Cost Drift Sentinel
The shift from query tool to agent capability. Most FinOps tools answer "what does this cost?" — this one answers "is this still what it cost when I signed off on it?"
Stateless by design — no server, no database. The baseline JSON lives wherever you want: a file in your IaC repo, S3, Slack DM, anywhere. Each call is a pure function of (catalog, workload, baseline).
Key properties:
- Workload-hash protected — if you change the workload spec, the hash mismatches and you get a fresh baseline rather than a misleading drift report
- SKU-level attribution — the drift report consults the price-history dataset and surfaces which SKUs moved the most between baseline and now
- Configurable threshold — default 5%; pass
alert_threshold_pct=N to tune
Plug-and-play GitHub Action template at examples/cloudprice-watch.yml — drop it in any IaC repo with a workload.json, get auto-opened GitHub issues when costs drift. Baseline is committed to your repo so the history is auditable.
Carbon-aware FinOps — kg CO2e per workload, alongside USD
The only FinOps MCP tool that returns both cost AND carbon footprint on the same query. AWS / Azure / GCP each publish their own customer dashboards (Customer Carbon Footprint Tool, Emissions Impact Dashboard, Carbon Footprint) — but none compare across providers. cloudprice does.
What's modeled (and disclosed in every response):
- PUE per cloud from each provider's public sustainability report
- Grid carbon intensity per region from public emissions data (EPA eGRID for US, similar baselines elsewhere)
- Renewable matching per provider (AWS/Azure 100%, GCP ~64% CFE, OCI unmatched outside EU)
- ARM vs x86 power class — ARM SKUs (Graviton, Ampere, Axion) modeled at ~30% lower per-vCPU power
- Two carbon numbers per cloud: location-based (grid) AND market-based (residual after renewable matching) — both surfaced so auditors can see both perspectives
What's NOT modeled (always disclosed via honest_gaps[]):
- Embodied carbon (server manufacturing) — operational only
- GPU / network / storage power — compute + memory only
- Time-of-use grid variation — annual averages only
- Real-time 24/7 CFE matching — GCP publishes annual CFE %; cloudprice uses that
Real questions this unlocks:
"What's the lowest-carbon cloud for 4 vCPU / 16 GB at 6 instances?"
→ AI calls compare_carbon_footprint, returns per-cloud kg CO2e/mo ranked.
"How much carbon do I save running on ARM vs x86?"
→ AI calls it twice with the same shape but different target SKUs.
What's NOT modeled (real-world TCO killers)
- ✅
Egress / data transfer — modeled in v0.5 (compare_egress)
- ✅
Multi-AZ / HA replicas — modeled in v0.5 (multi_az: true on compare_workload)
- ✅
Snapshots upper-bound only — fixed in v0.5 (snapshot_incremental_factor)
- Reserved/Savings Plan SKU detail (we apply a flat tier discount, not per-region/per-family detail) — roadmap
- Multi-region pricing (currently us-east only; us-west / eu-west planned for v0.5.1) — roadmap
- IOPS-based storage matching (capacity-only) — roadmap
- Backup storage charges (some clouds free, others billed) — roadmap
- Request costs (PUT/GET pricing for object storage) — roadmap
- Retrieval costs for archive tiers (Glacier-style retrieval can be 10× the storage cost) — roadmap
- VPC peering / interconnect costs — roadmap
These are tracked roadmap items. Use cloudprice-mcp for the on-demand list-price baseline; do final TCO analysis with each cloud's own calculator before relying on numbers for big decisions.
Live runtime pricing (not just weekly refresh) is being considered for v0.8 — would fetch prices directly at MCP tool invocation time instead of from the bundled catalog. Trade-offs: slower (network call per tool use), adds GCP auth requirement, breaks offline mode. The v0.7 weekly auto-refresh covers ~95% of the credibility win at zero runtime cost; live mode is opt-in territory.
Develop locally
To point Claude Desktop at your dev copy, swap the command in the config:
License
MIT — see LICENSE.
Credits
Built by Ali Albaker, multi-cloud architect — runs a live three-cloud portfolio at ~$1.80/month across AWS, Azure, and GCP, with OCI joining as the 4th cloud in 2026.