CloudCost MCP Server
Multi-cloud cost analysis for Terraform, CloudFormation, Pulumi, and Bicep/ARM. Live pricing from AWS, Azure, and GCP.
Built on the Model Context Protocol for seamless AI agent integration.
Installation • Tools • Pricing • Config • Architecture • Limitations
______________________________________________________________________
CloudCost MCP是一个 模型上下文协议 该服务器允许人工智能代理将基础设施解析为多种格式(Terraform、CloudFormation、Pulumi、Dimis/ARM)的代码,查询实时定价数据,并生成多云成本比较报告。它直接连接到AWS、Azure和GCP的公共定价API。不需要API密钥或云凭据。
它做什么
- 解析Terraform HCL文件、CloudFormation模板、Pulumi堆栈导出和具有自动格式检测功能的二头肌/ARM模板
- 提取具有可变分辨率的资源清单,包括引用的模块和OpenTofu
.tofu文件 - 从AWS批量定价CSV和Azure零售价格REST API查询实时按需定价;GCP通过实时云计费目录API与捆绑回退
- 跨AWS、Azure和GCP映射等效资源(计算、数据库、存储、网络、Kubernetes、容器注册表、机密管理、DNS)
- 生成跨多种货币的按资源细分(每月和每年)的成本估算
- 以markdown、JSON、CSV或FOCUS格式并排比较所有三个提供商的成本
- 提供优化建议:正确的规模、保留定价、提供商切换、现货/可抢占实例
- 在不修改Terraform文件的情况下对假设场景(实例类型更改、区域移动、承诺级别)进行建模
- 项目成本超过3、6、12和36个月,并保留实例比较
- 按团队、环境或任何自定义标签标记成本归因和组报告输出的资源
- 通过可重用的GitHub Actions复合操作发布成本估算注释以拉取请求
支持的IaC格式
| 格式 | 扩展名 | 自动检测 |
|---|---|---|
| Terraform/OpenTofu | .tf, .tofu | 是的 |
| 云层形成 | .yaml, .yml, .json, .template | 是的 |
| Pulumi | .json (堆栈导出) | 是 |
| 二头肌/手臂 | .json (ARM模板) | 是 |
这与基础设施成本相比如何
基础设施成本是成熟的选择 CI中AWS成本估算的Terraform --公关评论成本增量、阈值门控、深度Terragrun支持。如果这是你的工作流程,就使用它。
CloudCostMCP针对不同的表面:
- 通过MCP本地代理。 模型称之为工具 *在...期间* 一代。
check_cost_budget回报allow/warn/block使用指定的特定阻塞资源,在热定价缓存上足够快,以便代理在将昂贵的配置写入磁盘之前否决它。 - 一台服务器中的多个IaC。 Terraform、CloudFormation、Pulumi、二头肌/手臂——一个工具,而不是四个。
- 零凭据。 所有定价均来自公共端点。没有帐户,没有云IAM,没有API密钥。
- 优化+内置假设场景。 合适的规模、保留定价、跨提供商切换和现货建模是一流的工具。
两者相辅相成。在CI中使用基础设施成本;在您的代理或编辑器中使用CloudCostMCP。
______________________________________________________________________
安装
需要 Node.js 20 或稍后。
60秒快速启动(克劳德代码)
npm install -g @jadenrazo/cloudcost-mcp
claude mcp add cloudcost -- cloudcost-mcp然后,在一个包含Terraform文件的项目目录中,问Claude:
*“使用cloudcost估算此Terraform配置的每月AWS成本,然后使用check_cost_budget将其与每月2000美元的预算进行核对。”*
没有API密钥,没有云凭据,没有单独的帐户。对于其他MCP客户端(Claude Desktop、Cursor、任何兼容MCP的代理),请参阅下面的详细设置。
所有安装选项
# From source
git clone https://github.com/jadenrazo/CloudCostMCP.git
cd CloudCostMCP
npm install
npm run build# Global npm install
npm install -g @jadenrazo/cloudcost-mcp# One-shot, no install
npx -y @jadenrazo/cloudcost-mcp克劳德桌面
添加到您的Claude Desktop MCP配置(claude_desktop_config.json):
{
"mcpServers": {
"cloudcost": {
"command": "node",
"args": ["/path/to/CloudCostMCP/dist/index.js"]
}
}
}如果通过npm全局安装:
{
"mcpServers": {
"cloudcost": {
"command": "cloudcost-mcp"
}
}
}克劳德代码
claude mcp add cloudcost -- node /path/to/CloudCostMCP/dist/index.js或者通过npm全局安装:
claude mcp add cloudcost -- cloudcost-mcp作为独立的MCP服务器(stdio)
node dist/index.js______________________________________________________________________
工具
服务器公开了12个MCP工具。每个都接受JSON输入并返回结构化的JSON输出。对于以代理为中心的工作流, check_cost_budget 是标题工具:它返回一个 allow / warn / block 判断速度足够快,可以在IaC生成和磁盘写入之间调用——请参阅 docs/guardails.md.
analyze_terraform
解析Terraform文件并返回资源清单。检测云提供商,解析变量(包括 tfvars),并提取与成本相关的属性,如实例类型、存储大小和数据库引擎。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
files | {path, content}[] | 是 | 地形 .tf 要分析的文件 |
tfvars | string | 否 | 内容 terraform.tfvars 文件 |
estimate_cost
计算特定提供程序上解析资源的成本。返回每个资源的月度和年度细分以及置信度得分。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
files | {path, content}[] | 是 | 地形文件 | ||
tfvars | string | 否 | 变量覆盖 | ||
provider | `aws \ | azure \ | gcp` | 是 | 定价的目标提供商 |
region | string | 否 | 目标区域(如果省略,则自动映射) | ||
currency | string | 否 | 输出货币(默认值: USD).支持:美元、欧元、英镑、日元、加元、澳元、印度卢比、巴西雷亚尔 |
compare_providers
完整管道:解析Terraform,跨提供商映射资源,获取定价,并生成比较报告。这是成本分析的主要切入点。
| 参数 | 类型 | 必填 | 说明 | |||
|---|---|---|---|---|---|---|
files | {path, content}[] | 是 | 地形文件 | |||
tfvars | string | 否 | 变量覆盖 | |||
format | `markdown \ | json \ | csv \ | focus` | 否 | 报告格式(默认: markdown) |
providers | string[] | 否 | 要比较的提供商(默认值:全部三个) | |||
currency | string | 否 | 输出货币(默认值: USD).支持:美元、欧元、英镑、日元、加元、澳元、印度卢比、巴西雷亚尔 |
get_equivalents
跨提供程序查找等效的Terraform资源类型和实例大小。对迁移规划有用。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
resource_type | string | 是 | 地形资源类型(例如。, aws_instance) | ||
source_provider | `aws \ | azure \ | gcp` | 是 | 提供资源所属的提供商 |
target_provider | `aws \ | azure \ | gcp` | 否 | 具体目标(全部省略) |
instance_type | string | 否 | 也要映射的实例类型(例如。, t3.large) |
get_pricing
直接价格查询。返回特定提供者上特定资源的标准化单价及其元数据。
| 参数 | 类型 | 必填 | 说明 | ||||
|---|---|---|---|---|---|---|---|
provider | `aws \ | azure \ | gcp` | 是 | 云提供商 | ||
service | `compute \ | database \ | storage \ | network \ | kubernetes` | 是 | 服务类别 |
resource_type | string | 是 | 实例类型、存储类型等。 | ||||
region | string | 是 | 云区域 |
optimize_cost
分析地形资源并返回优化建议。包括正确的规模建议、保留实例比较和跨提供商节约机会。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
files | {path, content}[] | 是 | 地形文件 |
tfvars | string | 否 | 变量覆盖 |
providers | string[] | 否 | 要评估的提供者(默认值:全部三个) |
what_if
对现有的Terraform资源运行假设的定价方案。更改实例类型、区域、提供程序或承诺级别,在不修改实际配置的情况下查看成本增量。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
files | {path, content}[] | 是 | 地形文件 |
tfvars | string | 否 | 变量覆盖 |
scenarios | object[] | 是 | 更改模型。每个都指定了一个资源名称和要覆盖的属性 |
providers | string[] | 否 | 要评估的提供者(默认值:全部三个) |
currency | string | 否 | 输出货币(默认值: USD) |
示例:模拟跨提供商将计算从按需转换为现货的成本影响:
{
"files": [{ "path": "main.tf", "content": "..." }],
"scenarios": [
{ "resource": "aws_instance.web", "pricing_model": "spot" },
{ "resource": "aws_instance.app", "instance_type": "m6i.2xlarge" }
]
}analyze_plan
解析地形图JSON输出,用于变更成本分析前后。显示正在添加、更改或销毁的资源以及每次更改的成本影响。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
plan_json | string | 是 | JSON输出来自 terraform show -json planfile | ||
provider | `aws \ | azure \ | gcp` | 否 | 定价的目标提供商(如果省略,则自动检测) |
currency | string | 否 | 输出货币(默认值: USD) |
compare_actual
解析 .tfstate 将实际基础设施成本与估算值进行比较的文件。识别计划资源和部署资源之间的偏差。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
state_json | string | 是 | 内容 terraform.tfstate 文件 | ||
provider | `aws \ | azure \ | gcp` | 否 | 定价的目标提供商(如果省略,则自动检测) |
currency | string | 否 | 输出货币(默认值: USD) |
price_trends
查询历史定价趋势和价格变化跟踪。显示特定资源类型的定价随时间的变化情况。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
provider | `aws \ | azure \ | gcp` | 是 | 云提供商 |
service | string | 是 | 服务类别 | ||
resource_type | string | 是 | 实例类型、存储类型等。 | ||
region | string | 是 | 云区域 | ||
period_days | number | 否 | 回溯期(以天为单位)(默认值: 90) |
detect_anomalies
通过预算检查、价格变化、集中风险和正确的规模提示进行成本异常检测。分析解析的资源并标记潜在的成本问题。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
files | {path, content}[] | 是 | 要分析的IaC文件 | ||
tfvars | string | 否 | 变量覆盖 | ||
provider | `aws \ | azure \ | gcp` | 否 | 目标提供程序(如果省略,则自动检测) |
budget_monthly | number | 否 | 每月预算上限(美元) | ||
currency | string | 否 | 输出货币(默认值: USD) |
check_cost_budget
为AI代理设计的快速成本安全护栏。退货 allow / warn / block 通过指定特定的阻塞资源,代理可以在将昂贵的IaC生成写入磁盘之前否决它。阈值级联:每次调用参数→ CLOUDCOST_GUARDRAIL_* env → CLOUDCOST_BUDGET_* 环境。看 docs/guardails.md 对于集成模式。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
files | {path, content}[] | 是 | 要评估的IaC文件 | ||
tfvars | string | 否 | 变量覆盖 | ||
provider | `aws \ | azure \ | gcp` | 否 | 目标提供程序(如果省略,则自动检测) |
region | string | 否 | 目标区域(如果省略,则自动检测) | ||
currency | string | 否 | 输出货币(默认值: USD) | ||
max_monthly | number | 否 | 每月总阈值。完毕= block. | ||
max_per_resource | number | 否 | 按资源阈值。一个过去= block. | ||
warn_ratio | number (0–1) | 否 | 触发的限制分数 warn (默认值 0.8) |
______________________________________________________________________
定价如何运作
CloudCost使用分层方法获得最准确的定价,而无需任何API密钥或凭证。
亚马逊云服务
- 实时CSV流媒体 主要的,重要的对于EC2计算定价,服务器逐行流式传输目标区域的AWS批量定价CSV。这避免了将约267 MB的完整文件加载到内存中。该地区的所有按需计算价格都是一次性提取的,并在SQLite中缓存24小时。对同一区域的并发请求共享一个下载。
- 实时JSON API (次要)。对于RDS(~24 MB)、S3、ELB和VPC,服务器从 AWS批量API价格表。这些文件足够小,可以直接解析。
- 回退表+插值。如果实时获取失败(网络问题、超时),服务器将退回到内置的定价表,涵盖85+EC2和29个RDS实例类型。尺寸插值算法通过遵循AWS的可预测加倍模式(例如。,
large到xlarge价格翻倍)。
Azure
- Live REST API 主要的,重要的查询 Azure零售价格API 使用OData过滤器进行精确SKU匹配(
armSkuName).快速、免费、未经身份验证。返回精确的每个SKU定价。结果被分页并完全消耗。
- 回退表+插值.如果无法访问API,则返回到覆盖40+VM大小和14个数据库层的内置表。vCPU比例插值算法估计未上市尺寸的价格。
谷歌云平台
- 直播云计费目录API 主要的,重要的查询GCP云计费目录API(
cloudbilling.googleapis.com)使用未经身份验证的公共端点。结果将缓存24小时。
- 捆绑定价数据 (回退)。如果无法访问实时API,请返回中的策划定价数据
data/gcp-pricing/随包裹一起发货。涵盖所有主要地区的计算引擎机器类型、云SQL层、云存储类和持久磁盘类型。
- 基础设施服务负载均衡器、Cloud NAT和GKE定价使用固定的公共费率。
定价来源透明度
每个退回的价格都包括 pricing_source 指示其来源的属性:
"live":实时从公共API获取"fallback":来自内置表(近似,但估计合理)"bundled":来自软件包附带的捆绑数据文件
所有定价数据都缓存在本地SQLite数据库中(~/.cloudcost/cache.db)24小时TTL,最大限度地减少多余的API调用。
______________________________________________________________________
示例
给定此Terraform配置:
# infrastructure.tf
resource "aws_instance" "web" {
count = 3
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.xlarge"
}
resource "aws_instance" "app" {
count = 2
ami = "ami-0c55b159cbfafe1f0"
instance_type = "m5.2xlarge"
}
resource "aws_db_instance" "primary" {
instance_class = "db.r6g.xlarge"
engine = "postgres"
allocated_storage = 200
}
resource "aws_ebs_volume" "data" {
count = 5
size = 500
type = "gp3"
}
resource "aws_s3_bucket" "assets" {}
resource "aws_lb" "main" {
load_balancer_type = "application"
}
resource "aws_nat_gateway" "main" {}
resource "aws_eks_cluster" "main" {
name = "prod"
}跑步 compare_providers 针对该配置生成:
| Category | AWS (USD/mo) | Azure (USD/mo) | GCP (USD/mo) |
|-----------------|-------------|----------------|--------------|
| Compute | $1,176.48 | $1,209.60 | $1,142.88 |
| Database | $314.64 | $297.12 | $285.48 |
| Storage | $48.00 | $52.80 | $44.00 |
| Load Balancer | $16.20 | $18.00 | $18.26 |
| NAT Gateway | $32.40 | $32.40 | $31.68 |
| Kubernetes | $72.00 | $72.00 | $72.00 |
| **Total** | **$1,659.72** | **$1,681.92** | **$1,594.30** |*价格是按需估算的。实际成本因使用情况、地区和承诺水平而异。*
______________________________________________________________________
配置
所有配置都是可选的。服务器使用合理的默认值即可开箱即用。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
CLOUDCOST_CACHE_TTL | 86400 | 缓存TTL(秒)(24小时) |
CLOUDCOST_CACHE_PATH | ~/.cloudcost/cache.db | SQLite缓存文件位置 |
CLOUDCOST_LOG_LEVEL | info | 日志级别: debug, info, warn, error |
CLOUDCOST_MONTHLY_HOURS | 730 | 每月用于成本计算的小时数 |
CLOUDCOST_INCLUDE_DATA_TRANSFER | false | 在报告中包括估计的数据传输成本 |
CLOUDCOST_PRICING_MODEL | on_demand | 默认定价模型: on_demand, spot,或 reserved |
CLOUDCOST_RESOLVE_MODULES | true | 在解析过程中展开引用的Terraform模块 |
CLOUDCOST_BUDGET_MONTHLY | 每月预算上限(美元)。超过时触发警告 | |
CLOUDCOST_BUDGET_PER_RESOURCE | 每月资源预算上限(美元) | |
CLOUDCOST_BUDGET_WARN_PCT | 80 | 出现警告的预算百分比(默认值:80%) |
CLOUDCOST_GUARDRAIL_MAX_MONTHLY | 每月总上限 check_cost_budget.完毕= block 判决书 | |
CLOUDCOST_GUARDRAIL_MAX_PER_RESOURCE | 按资源上限 check_cost_budget.多一个= block 判决书 | |
CLOUDCOST_GUARDRAIL_WARN_RATIO | 0.8 | 触发护栏阈值的分数 warn 而不是 allow |
配置文件
您还可以创建 ~/.cloudcost/config.json:
{
"cache": {
"ttl_seconds": 43200,
"db_path": "/tmp/cloudcost-cache.db"
},
"pricing": {
"monthly_hours": 730,
"default_currency": "USD"
},
"logging": {
"level": "debug"
}
}配置优先级:环境变量>配置文件>内置默认值。
______________________________________________________________________
建筑
┌───────────────────────────────┐
│ MCP Client │
│ (Claude Desktop / Agent) │
└──────────────┬────────────────┘
│ stdio
┌──────────────▼────────────────┐
│ CloudCost MCP Server │
│ (src/server.ts) │
└──────────────┬────────────────┘
│
┌────────────────────────┼───────────────────────┐
│ │ │
┌─────────▼─────────┐ ┌─────────▼─────────┐ ┌─────────▼─────────┐
│ Tool Handlers │ │ HCL Parsers │ │ Cost Engine │
│ (src/tools/*.ts) │ │ (src/parsers/) │ │ (src/calculator/) │
└─────────┬─────────┘ └───────────────────┘ └─────────┬─────────┘
│ │
┌─────────▼────────────────────────────────────────────────▼─────────┐
│ PricingEngine (router) │
│ (src/pricing/pricing-engine.ts) │
└──────┬───────────────────┬─────────────────────┬───────────────────┘
│ │ │
┌────────▼───────┐ ┌────────▼───────┐ ┌────────▼───────┐
│ AWS Bulk │ │ Azure Retail │ │ GCP Bundled │
│ Loader │ │ Client │ │ Loader │
│ (CSV + JSON) │ │ (REST API) │ │ (static JSON) │
└────────┬───────┘ └────────┬───────┘ └────────┬───────┘
│ │ │
▼ ▼ ▼
AWS Bulk Pricing Azure Retail API data/gcp-pricing/
CSV (public) (public, no auth) (bundled files)亮点:零API密钥(所有通过公共端点公开的提供商),SQLite-based价格缓存在工具调用之间共享,267 MB AWS批量CSV的流式接收,以及优雅的现场直播→ 后备方案→ 插值表链,因此每个响应都带有 pricing_source 和 confidence 现场。中的完整逐层漫游和扩展指南 docs/architecture.md.
______________________________________________________________________
支持的资源
| 类别 | AWS | Azure | GCP |
|---|---|---|---|
| 计算 | aws_instance | azurerm_virtual_machine, azurerm_linux_virtual_machine | google_compute_instance |
| 数据库 | aws_db_instance, aws_rds_cluster | azurerm_postgresql_flexible_server, azurerm_mysql_flexible_server | google_sql_database_instance |
| 存储 | aws_ebs_volume, aws_s3_bucket | azurerm_managed_disk, azurerm_storage_account | google_compute_disk, google_storage_bucket |
| 网络 | aws_lb, aws_nat_gateway | azurerm_lb, azurerm_nat_gateway | google_compute_forwarding_rule |
| Kubernetes | aws_eks_cluster | azurerm_kubernetes_cluster | google_container_cluster |
| 集装箱登记处 | aws_ecr_repository | azurerm_container_registry | google_artifact_registry_repository |
| 秘密管理 | aws_secretsmanager_secret | azurerm_key_vault | google_secret_manager_secret |
| 域名系统 | aws_route53_zone | azurerm_dns_zone | google_dns_managed_zone |
| API网关 | aws_api_gateway_rest_api, aws_apigatewayv2_api | azurerm_api_management | google_api_gateway_api |
| 网络应用防火墙 | aws_wafv2_web_acl | azurerm_web_application_firewall_policy | |
| OpenSearch | aws_opensearch_domain | ||
| 消息传递 | aws_sns_topic, aws_mq_broker | azurerm_servicebus_namespace, azurerm_eventhub_namespace | google_pubsub_topic |
| ML/AI | aws_sagemaker_endpoint, aws_sagemaker_notebook_instance | google_vertex_ai_endpoint |
实例类型映射涵盖70多种AWS实例类型(包括Graviton/ARM系列:m6g、m7g、c6g、c7g、r6g、r7g、t4g),40多种Azure VM大小,以及20多种具有完全双向跨提供商映射的GCP机器类型。
______________________________________________________________________
局限性
- 仅按需定价 默认情况下。价格反映了现收现付的费率。这
optimize_cost工具建议保留实例;AWS储蓄计划尚不受支持(在中跟踪 docs/roadmap.md).通过pricing_model: "spot"在what_if对现货/抢先定价进行建模的情景。 - GCP实时定价 从云计费目录API获取,并在API无法访问时自动回退到绑定数据。捆绑价格可能略低于实际价格。
- 回退数据信号。 当无法访问实时定价API,并且
estimate_cost/compare_providers/get_pricing从捆绑或回退表中提供数据,响应包括warnings条目(“使用回退/捆绑定价数据…”),以便呼叫者可以标记过时的估计。捆绑数据每周通过CI刷新一次。 - 首次请求延迟CSV文件流式传输时,新AWS区域的初始EC2定价查找可能需要30-120秒。对同一区域的后续查找是即时的(缓存24小时)。
- 特殊实例类型.GPU实例(p4d、g5等)、高内存(x2idn)和裸机类型可能会退回到插值定价,如果不在内置表中并且实时获取失败。
______________________________________________________________________
更多文档
- docs/guardails.md —
check_cost_budgetClaude Code、Cursor和其他代理的集成模式。 - docs/architecture.md --内部层、设计决策、扩展指南。
- docs/ci-integration.md --GitHub Actions成本估算公关评论的复合行动。
- docs/development.md --本地设置、npm脚本、源代码布局。
- docs/故障排除.md —
$0估计、缓慢的首次请求、缓存问题、回退警告。 - docs/roadmap.md --已发货、在航、积压和明确未计划的货物。
- 版本.md --SemVer锁定了公共表面和支持政策。
- 贡献.md --PR指南和代码风格。
- 安全.md --漏洞报告。
______________________________________________________________________
许可证
MIT。看 许可证 了解详情。
