MCP server for multi-cloud cost analysis of Terraform, CloudFormation, Pulumi, and Bicep/ARM codebases
CloudCost MCP demonstrates solid tool design with 12 well-named, action-oriented tools covering a coherent cost-analysis domain. All tools have descriptions (avg ~150 chars) and input schemas with typed parameters. Naming follows verb_noun convention (analyze_, estimate_, compare_, get_, optimize_, detect_, check_). However, parameter descriptions are sparse, most lack detail on format, constraints, or valid ranges. Output schemas are not documented in the source. Error handling guidance is absent. The serverless.ts excerpt shows thoughtful implementation (e.g., DEFAULT_LAMBDA_INVOCATIONS_MONTHLY with fallback logic), but this rigor is not reflected in the tool interface definitions. No evidence of per-parameter validation rules, enum constraints, or recovery guidance in descriptions.
Parse Terraform plan JSON (from 'terraform show -json' or 'terraform plan -json') and return a cost-of-change analysis showing before/after costs and per-resource deltas.
Parse Terraform HCL files and extract a resource inventory with provider detection, variable resolution, and cost-relevant attribute extraction
Agent-ready cost guardrail. Returns allow / warn / block with blocking_resources so an AI agent can veto an expensive IaC write before committing. Thresholds cascade: per-call params > CLOUDCOST_GUARDRAIL_* env > CLOUDCOST_BUDGET_* env > no-op allow.
Parse a Terraform state file (.tfstate) and calculate actual infrastructure costs. Optionally compare against planned costs from HCL files to show drift.
Run a full cost comparison across AWS, Azure, and GCP for a set of Terraform resources. Returns a formatted report and raw comparison data including savings potential.
Analyze infrastructure costs and flag anomalies — resources whose estimated costs are unusual compared to historical baselines or configured thresholds.
Parameter descriptions lack format constraints and valid ranges. E.g., 'provider' accepts 'aws, azure, gcp' but no enum constraint or validation rule is documented. 'region' has no format guidance (e.g., 'AWS region code like us-east-1'). 'threshold' in detect_anomalies has no min/max bounds.
Output schemas are not documented. Tools return 'a full cost breakdown', 'a formatted report', 'raw comparison data', but the actual response structure (fields, types, nesting) is not specified. LLMs cannot plan downstream calls or extract data reliably without knowing what fields to expect.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
Estimate monthly and yearly cloud costs for Terraform resources on a specific provider. Returns a full cost breakdown by resource and service category.
Look up the equivalent Terraform resource types across cloud providers. Optionally also maps an instance type / VM size to the nearest equivalent on target providers.
Direct pricing lookup for a specific cloud provider, service, resource type, and region. Returns the normalised unit price with metadata.
Analyse Terraform resources and return cost optimisation recommendations including right-sizing suggestions, reserved pricing comparisons, and cross-provider savings opportunities.
Query historical pricing trends for a specific cloud resource. Returns recorded price history, the most recent price change, and summary metadata.
Estimate cost impact of infrastructure changes without modifying Terraform files. Applies attribute overrides to a cloned resource set and returns a per-resource and aggregate cost diff.
No error handling guidance. Descriptions do not explain what happens on invalid input (e.g., unsupported provider, malformed Terraform), what the LLM should do next, or whether errors are retryable. E.g., 'analyze_terraform' does not document how it handles syntax errors in HCL.
Parameter 'files' in multiple tools (analyze_terraform, estimate_cost, compare_providers, optimize_cost, what_if, analyze_plan, compare_actual, detect_anomalies, check_cost_budget) is described as 'Array of Terraform files' but lacks detail: is it required? What is the max array size? What file formats are accepted (HCL, JSON, .tfvars)? Does it accept file paths or inline content?
No pagination or result-limiting guidance. Tools like 'compare_providers' and 'price_trends' may return large datasets (e.g., pricing history for 100+ resource types across regions). No mention of limits, pagination, or how to handle large responses that could exhaust context windows.