OpenCloudCosts MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AWS_PROFILE | No | AWS credentials profile | |
| OCC_RATE_LIMIT | No | Rate limiter requests per second | 10 |
| OCC_GCP_API_KEY | No | GCP API key for pricing (required for GCP pricing) | |
| OCC_CACHE_TTL_HOURS | No | Public price cache TTL | 24 |
| OCC_DEFAULT_REGIONS | No | Default regions | us-east-1,us-west-2 |
| OCC_REQUEST_TIMEOUT | No | Per-request deadline in seconds | 30 |
| OCC_PROVIDER_TIMEOUT | No | Per-provider API call timeout in seconds | 15 |
| OCC_SHUTDOWN_TIMEOUT | No | Graceful SIGTERM drain timeout in seconds | 10 |
| OCC_METADATA_TTL_DAYS | No | Region/instance metadata cache TTL in days | 7 |
| OCC_GCP_BILLING_ACCOUNT_ID | No | GCP billing account ID for contract/effective pricing | |
| OCC_AWS_ENABLE_COST_EXPLORER | No | Enable AWS effective pricing (costs $0.01/call) | false |
| OCC_EFFECTIVE_PRICE_TTL_HOURS | No | Effective/contracted rate cache TTL in hours | 1 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_priceA | Unified pricing tool — returns public catalog rates plus contracted/effective prices where credentials are available. Pass a spec dict with at minimum: provider, domain, region. Domain-specific required fields (call describe_catalog for the complete list): COMPUTE : resource_type ("m5.xlarge" / "n1-standard-4" / "Standard_D4s_v3") os ("Linux" or "Windows"), term ("on_demand"/"spot"/"cud_1yr") Fargate: vcpu (e.g. 2.0), memory_gb (e.g. 4.0), service="fargate" STORAGE : storage_type ("gp3"/"standard"/"nearline"/"premium-ssd") DATABASE : resource_type ("db.r5.large"/"db-n1-standard-4"), engine ("MySQL"), deployment ("single-az"/"ha"/"multi-az"), service ("rds"/"cloud_sql"/"memorystore") AI : model ("claude-3-5-sonnet"/"gemini-1.5-flash"), service ("bedrock"/"gemini"/"vertex"), input_tokens, output_tokens | machine_type + task for Vertex CONTAINER: service ("gke"/"eks"), mode ("standard"/"autopilot"), node_count, vcpu, memory_gb ANALYTICS: service ("bigquery"), query_tb, active_storage_gb, longterm_storage_gb, streaming_gb NETWORK : service ("cloud_lb"/"cloud_cdn"/"cloud_nat"/"cloud_armor"), lb_type, rule_count, data_gb, gateway_count, egress_gb, policy_count OBSERVABILITY: service ("cloudwatch"/"cloud_monitoring"), ingestion_mib, log_gb INTER_REGION_EGRESS: source_region, dest_region (empty = internet), data_gb Example: {"provider": "aws", "domain": "inter_region_egress", "source_region": "us-east-1", "dest_region": "eu-west-1"} Returns public_prices[] always. When auth exists: contracted_prices[], effective_price, auth_available=true. Call describe_catalog(provider, domain, service) for an example_invocation you can copy directly into this tool. Args: spec: PricingSpec dict — see field descriptions above. Examples: {"provider": "aws", "domain": "compute", "resource_type": "m5.xlarge", "region": "us-east-1"} {"provider": "aws", "domain": "ai", "service": "bedrock", "model": "claude-3-5-sonnet", "region": "us-east-1", "input_tokens": 1000000, "output_tokens": 1000000} {"provider": "gcp", "domain": "compute", "resource_type": "n1-standard-4", "region": "us-central1", "term": "cud_1yr"} {"provider": "gcp", "domain": "analytics", "service": "bigquery", "query_tb": 10.0, "active_storage_gb": 500.0, "region": "us"} {"provider": "azure", "domain": "compute", "resource_type": "Standard_D4s_v3", "region": "eastus"} {"provider": "aws", "domain": "database", "service": "rds", "resource_type": "db.r5.large", "engine": "MySQL", "deployment": "single-az", "region": "us-east-1"} |
| get_prices_batchA | Get prices for multiple compute instance types in a single region in one call. Fetches all prices concurrently. Useful for comparing a shortlist of candidate instance types (e.g. m5.xlarge vs c5.xlarge vs r5.xlarge) without separate calls. Args: provider: Cloud provider — "aws", "gcp", or "azure" instance_types: List of instance types, e.g. ["m5.xlarge", "c5.xlarge", "r5.large"] region: Region code, e.g. "us-east-1" or "us-central1" os: Operating system — "Linux" (default) or "Windows" term: Pricing term — "on_demand" (default), "spot", "reserved_1yr", "cud_1yr" |
| compare_pricesA | Compare pricing for any service across multiple regions. Fetches concurrently. Returns results sorted cheapest first, with % delta between cheapest and most expensive. Optionally shows delta vs a baseline region. Args: spec: PricingSpec dict (same as get_price). The region field is overridden per comparison — you can pass any region in the spec. regions: List of region codes to compare, e.g. ["us-east-1", "eu-west-1", "ap-northeast-1"] baseline_region: Optional region for delta comparison, e.g. "us-east-1". |
| search_pricingA | Free-text search across the pricing catalog. Useful for exploring what SKUs are available for a service before calling get_price, or for finding pricing for services not yet covered by a specific domain. Args: provider: Cloud provider — "aws", "gcp", or "azure" query: Search string, e.g. "NAT gateway", "CloudWatch metrics", "Lambda duration" domain: Optional domain filter — "compute", "storage", "database", etc. region: Optional region filter max_results: Maximum results to return (default 20) |
| get_discount_summaryA | Return a summary of all active cloud discounts for the authenticated account. For AWS: active Savings Plans (type, commitment $/hr, utilization %) and active Reserved Instances (instance type, count, payment type, days remaining), plus Cost Explorer utilization for the previous month. Requires credentials and OCC_AWS_ENABLE_COST_EXPLORER=true for AWS. Args: provider: Cloud provider — "aws" (GCP CUD support coming later) |
| get_spot_historyA | Get spot price history and stability analysis for a compute instance type. Returns per-AZ spot price statistics (current, min, max, avg, sample count), overall volatility ratio, a stability label, and an actionable recommendation. Currently supported by AWS (requires credentials). GCP and Azure return not_supported. Args: spec: PricingSpec dict with domain="compute", resource_type (instance type), region. Example: {"provider": "aws", "domain": "compute", "resource_type": "m5.xlarge", "region": "us-east-1"} hours: Lookback window in hours (default 24, max 720) availability_zone: Filter to a specific AZ, e.g. "us-east-1a". Empty = all AZs (AWS only). |
| refresh_cacheA | Invalidate the pricing cache to force fresh data on next request. Args: provider: Provider to clear ("aws", "gcp", "azure"), or empty string to purge expired entries. |
| list_regionsB | List all regions where a cloud service is available for the given provider. Args: provider: Cloud provider — "aws", "gcp", or "azure" domain: Domain filter — "compute" (default), "storage", "database" |
| list_instance_typesA | List available compute instance types in a region, with optional filters. Useful for discovering what instances are available before fetching pricing, or for finding instances that meet specific vCPU/memory/GPU requirements. Args: provider: Cloud provider — "aws", "gcp", or "azure" region: Region code, e.g. "us-east-1" (AWS), "us-central1" (GCP), "eastus" (Azure) family: Optional instance family prefix, e.g. "m5", "c6g" (AWS), "n2", "c2" (GCP), or "Standard_D", "Standard_E" (Azure) min_vcpu: Filter to instances with at least this many vCPUs. min_memory_gb: Filter to instances with at least this much memory (GB). gpu: If true, only return GPU instances max_results: Maximum number of results (default 50) |
| describe_catalogA | Discover what each provider supports and how to call get_price.
Use this before get_price when unsure of exact field names or values. Args: provider: Cloud provider — "aws", "gcp", or "azure". Empty = all providers. domain: Domain — "compute", "storage", "database", "ai", "container", "serverless", "analytics", "network", "observability". Empty = all. service: Service — e.g. "bedrock", "rds", "gke", "bigquery". Empty = all. |
| find_cheapest_regionA | Find the cheapest region for any cloud service. Queries pricing concurrently across regions and returns results sorted cheapest first, with the price delta between cheapest and most expensive regions. Args: spec: PricingSpec dict (same as get_price). The region field is overridden for each comparison — pass any region in the spec. regions: List of region codes to compare. Omit for major regions (faster). Pass ["all"] to search every available region (slow on first run without cache). baseline_region: Optional region for delta comparison, e.g. "us-east-1". |
| find_available_regionsA | Find all regions where a specific service/instance type is available, cheapest first. Args: spec: PricingSpec dict (same as get_price). The region field is overridden per comparison — pass any region in the spec. regions: Region codes to check. Omit for major regions. Pass ["all"] to search every available region. baseline_region: Optional region for delta comparison. |
| cache_statsA | Return statistics about the local pricing cache (entry counts, DB size). |
| estimate_bomA | Use this tool for total infrastructure cost, TCO, monthly spend for a multi-resource stack, or cost comparison between architectures. Handles compute + storage + database + AI together in a single call — do NOT call get_price individually for multi-resource questions; use this tool instead. Returns per-item and total monthly/annual costs with real public pricing data, plus a not_included list of hidden costs (egress, load balancers, NAT Gateway, monitoring, backups). IMPORTANT: if not_included is present in the response, you MUST call get_price for each listed item — using the exact command in each item's how_to_price field — before writing your final answer. Do NOT estimate or guess any cost from the not_included list. Each item should be a PricingSpec dict PLUS a quantity field:
Examples: Compute + database + storage on AWS: [ {"provider": "aws", "domain": "compute", "resource_type": "m5.xlarge", "region": "us-east-1", "quantity": 3}, {"provider": "aws", "domain": "database", "service": "rds", "resource_type": "db.r6g.large", "engine": "MySQL", "deployment": "single-az", "region": "us-east-1"}, {"provider": "aws", "domain": "storage", "storage_type": "gp3", "size_gb": 500, "region": "us-east-1"} ] Mixed cloud: [ {"provider": "gcp", "domain": "compute", "resource_type": "n1-standard-4", "region": "us-central1", "quantity": 2}, {"provider": "azure", "domain": "compute", "resource_type": "Standard_D4s_v3", "region": "eastus", "quantity": 1} ] |
| estimate_unit_economicsA | Estimate per-unit economics (cost per user, per request, per transaction) given a Bill of Materials and expected monthly usage volume. Args: items: Same format as estimate_bom — list of cloud resource PricingSpec dicts plus quantity field. See estimate_bom for full item format. units_per_month: Monthly volume being measured (e.g. 10000 users) unit_label: What the unit represents — "user", "request", "transaction", etc. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/x7even/cloudcostsmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server