@jadenrazo/cloudcost-mcp 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +112 -0
- package/MIGRATION.md +40 -0
- package/README.md +64 -5
- package/STABILITY.md +71 -0
- package/data/gcp-pricing/cloud-sql.json +74 -39
- package/data/gcp-pricing/cloud-storage.json +11 -6
- package/data/gcp-pricing/compute-engine.json +1175 -285
- package/data/gcp-pricing/metadata.json +1 -1
- package/data/gcp-pricing/persistent-disk.json +16 -11
- package/data/region-price-multipliers.json +62 -4
- package/dist/{chunk-VP34WG7Z.js → chunk-E7KOWAMW.js} +64 -10
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +12 -2
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
{
|
|
2
|
-
"us-central1": { "pd-standard": 0.040, "pd-ssd": 0.170, "pd-balanced": 0.100 },
|
|
3
|
-
"us-east1": { "pd-standard": 0.040, "pd-ssd": 0.170, "pd-balanced": 0.100 },
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"us-
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"europe-
|
|
11
|
-
"europe-
|
|
12
|
-
"
|
|
2
|
+
"us-central1": { "pd-standard": 0.040, "pd-ssd": 0.170, "pd-balanced": 0.100, "pd-extreme": 0.125 },
|
|
3
|
+
"us-east1": { "pd-standard": 0.040, "pd-ssd": 0.170, "pd-balanced": 0.100, "pd-extreme": 0.125 },
|
|
4
|
+
"us-east4": { "pd-standard": 0.044, "pd-ssd": 0.187, "pd-balanced": 0.110, "pd-extreme": 0.138 },
|
|
5
|
+
"us-west1": { "pd-standard": 0.040, "pd-ssd": 0.170, "pd-balanced": 0.100, "pd-extreme": 0.125 },
|
|
6
|
+
"us-west4": { "pd-standard": 0.044, "pd-ssd": 0.187, "pd-balanced": 0.110, "pd-extreme": 0.138 },
|
|
7
|
+
"europe-west1": { "pd-standard": 0.044, "pd-ssd": 0.187, "pd-balanced": 0.110, "pd-extreme": 0.138 },
|
|
8
|
+
"europe-west2": { "pd-standard": 0.048, "pd-ssd": 0.204, "pd-balanced": 0.120, "pd-extreme": 0.150 },
|
|
9
|
+
"europe-west3": { "pd-standard": 0.048, "pd-ssd": 0.204, "pd-balanced": 0.120, "pd-extreme": 0.150 },
|
|
10
|
+
"europe-west4": { "pd-standard": 0.044, "pd-ssd": 0.187, "pd-balanced": 0.110, "pd-extreme": 0.138 },
|
|
11
|
+
"europe-north1": { "pd-standard": 0.044, "pd-ssd": 0.187, "pd-balanced": 0.110, "pd-extreme": 0.138 },
|
|
12
|
+
"asia-southeast1": { "pd-standard": 0.048, "pd-ssd": 0.204, "pd-balanced": 0.120, "pd-extreme": 0.150 },
|
|
13
|
+
"asia-northeast1": { "pd-standard": 0.048, "pd-ssd": 0.204, "pd-balanced": 0.120, "pd-extreme": 0.150 },
|
|
14
|
+
"asia-south1": { "pd-standard": 0.044, "pd-ssd": 0.187, "pd-balanced": 0.110, "pd-extreme": 0.138 },
|
|
15
|
+
"australia-southeast1": { "pd-standard": 0.048, "pd-ssd": 0.204, "pd-balanced": 0.120, "pd-extreme": 0.150 },
|
|
16
|
+
"northamerica-northeast1": { "pd-standard": 0.044, "pd-ssd": 0.187, "pd-balanced": 0.110, "pd-extreme": 0.138 },
|
|
17
|
+
"southamerica-east1": { "pd-standard": 0.058, "pd-ssd": 0.245, "pd-balanced": 0.144, "pd-extreme": 0.180 }
|
|
13
18
|
}
|
|
@@ -6,44 +6,102 @@
|
|
|
6
6
|
"us-west-2": 1.0,
|
|
7
7
|
"eu-west-1": 1.05,
|
|
8
8
|
"eu-west-2": 1.07,
|
|
9
|
+
"eu-west-3": 1.08,
|
|
9
10
|
"eu-central-1": 1.08,
|
|
11
|
+
"eu-central-2": 1.15,
|
|
12
|
+
"eu-south-1": 1.12,
|
|
13
|
+
"eu-south-2": 1.12,
|
|
14
|
+
"eu-north-1": 1.07,
|
|
10
15
|
"ap-southeast-1": 1.10,
|
|
11
16
|
"ap-southeast-2": 1.12,
|
|
17
|
+
"ap-southeast-3": 1.18,
|
|
18
|
+
"ap-southeast-4": 1.14,
|
|
12
19
|
"ap-northeast-1": 1.12,
|
|
20
|
+
"ap-northeast-2": 1.10,
|
|
21
|
+
"ap-northeast-3": 1.12,
|
|
13
22
|
"ap-south-1": 1.05,
|
|
23
|
+
"ap-south-2": 1.10,
|
|
24
|
+
"ap-east-1": 1.25,
|
|
14
25
|
"sa-east-1": 1.20,
|
|
15
26
|
"ca-central-1": 1.03,
|
|
27
|
+
"ca-west-1": 1.08,
|
|
16
28
|
"me-south-1": 1.10,
|
|
17
|
-
"
|
|
29
|
+
"me-central-1": 1.22,
|
|
30
|
+
"af-south-1": 1.15,
|
|
31
|
+
"il-central-1": 1.20
|
|
18
32
|
},
|
|
19
33
|
"azure": {
|
|
20
34
|
"eastus": 1.0,
|
|
21
35
|
"eastus2": 1.0,
|
|
22
36
|
"westus": 1.0,
|
|
23
37
|
"westus2": 1.0,
|
|
38
|
+
"westus3": 1.0,
|
|
39
|
+
"centralus": 1.0,
|
|
40
|
+
"northcentralus": 1.0,
|
|
41
|
+
"southcentralus": 1.0,
|
|
24
42
|
"westeurope": 1.07,
|
|
25
43
|
"northeurope": 1.05,
|
|
26
44
|
"uksouth": 1.06,
|
|
45
|
+
"ukwest": 1.07,
|
|
46
|
+
"francecentral": 1.08,
|
|
47
|
+
"germanywestcentral": 1.08,
|
|
48
|
+
"swedencentral": 1.10,
|
|
49
|
+
"norwayeast": 1.10,
|
|
50
|
+
"polandcentral": 1.10,
|
|
51
|
+
"italynorth": 1.12,
|
|
27
52
|
"southeastasia": 1.08,
|
|
28
53
|
"eastasia": 1.10,
|
|
29
54
|
"japaneast": 1.12,
|
|
55
|
+
"japanwest": 1.13,
|
|
56
|
+
"koreacentral": 1.10,
|
|
30
57
|
"australiaeast": 1.10,
|
|
58
|
+
"australiasoutheast": 1.12,
|
|
31
59
|
"brazilsouth": 1.18,
|
|
32
60
|
"canadacentral": 1.03,
|
|
33
|
-
"
|
|
61
|
+
"canadaeast": 1.05,
|
|
62
|
+
"centralindia": 1.05,
|
|
63
|
+
"southindia": 1.07,
|
|
64
|
+
"qatarcentral": 1.22,
|
|
65
|
+
"israelcentral": 1.20,
|
|
66
|
+
"mexicocentral": 1.08
|
|
34
67
|
},
|
|
35
68
|
"gcp": {
|
|
36
69
|
"us-central1": 1.0,
|
|
37
70
|
"us-east1": 1.0,
|
|
71
|
+
"us-east4": 1.05,
|
|
72
|
+
"us-east5": 1.05,
|
|
38
73
|
"us-west1": 1.02,
|
|
74
|
+
"us-west2": 1.05,
|
|
75
|
+
"us-west3": 1.07,
|
|
76
|
+
"us-west4": 1.08,
|
|
77
|
+
"us-south1": 1.05,
|
|
39
78
|
"europe-west1": 1.05,
|
|
40
79
|
"europe-west2": 1.08,
|
|
41
|
-
"europe-west3": 1.
|
|
80
|
+
"europe-west3": 1.10,
|
|
81
|
+
"europe-west4": 1.06,
|
|
82
|
+
"europe-west6": 1.15,
|
|
83
|
+
"europe-west8": 1.10,
|
|
84
|
+
"europe-west9": 1.10,
|
|
85
|
+
"europe-north1": 1.08,
|
|
86
|
+
"europe-central2": 1.12,
|
|
42
87
|
"asia-southeast1": 1.08,
|
|
88
|
+
"asia-southeast2": 1.12,
|
|
43
89
|
"asia-east1": 1.08,
|
|
90
|
+
"asia-east2": 1.12,
|
|
44
91
|
"asia-northeast1": 1.12,
|
|
92
|
+
"asia-northeast2": 1.14,
|
|
93
|
+
"asia-northeast3": 1.12,
|
|
94
|
+
"asia-south1": 1.05,
|
|
95
|
+
"asia-south2": 1.08,
|
|
45
96
|
"australia-southeast1": 1.12,
|
|
97
|
+
"australia-southeast2": 1.14,
|
|
46
98
|
"southamerica-east1": 1.20,
|
|
47
|
-
"
|
|
99
|
+
"southamerica-west1": 1.18,
|
|
100
|
+
"northamerica-northeast1": 1.03,
|
|
101
|
+
"northamerica-northeast2": 1.05,
|
|
102
|
+
"me-west1": 1.22,
|
|
103
|
+
"me-central1": 1.25,
|
|
104
|
+
"me-central2": 1.25,
|
|
105
|
+
"africa-south1": 1.18
|
|
48
106
|
}
|
|
49
107
|
}
|
|
@@ -944,7 +944,27 @@ var EC2_BASE_PRICES = {
|
|
|
944
944
|
"r7g.large": 0.107,
|
|
945
945
|
"r7g.xlarge": 0.214,
|
|
946
946
|
"r7g.2xlarge": 0.428,
|
|
947
|
-
"r7g.4xlarge": 0.856
|
|
947
|
+
"r7g.4xlarge": 0.856,
|
|
948
|
+
// 8th-gen Graviton4 families
|
|
949
|
+
"m8g.large": 0.077,
|
|
950
|
+
"m8g.xlarge": 0.154,
|
|
951
|
+
"m8g.2xlarge": 0.308,
|
|
952
|
+
"m8g.4xlarge": 0.616,
|
|
953
|
+
"c8g.large": 0.068,
|
|
954
|
+
"c8g.xlarge": 0.136,
|
|
955
|
+
"c8g.2xlarge": 0.272,
|
|
956
|
+
"c8g.4xlarge": 0.544,
|
|
957
|
+
"r8g.large": 0.101,
|
|
958
|
+
"r8g.xlarge": 0.202,
|
|
959
|
+
"r8g.2xlarge": 0.404,
|
|
960
|
+
"r8g.4xlarge": 0.808,
|
|
961
|
+
// GPU instances
|
|
962
|
+
"g5.xlarge": 1.006,
|
|
963
|
+
"g5.2xlarge": 1.212,
|
|
964
|
+
"g5.4xlarge": 1.624,
|
|
965
|
+
"g5.8xlarge": 2.448,
|
|
966
|
+
"g5.12xlarge": 5.672,
|
|
967
|
+
"p4d.24xlarge": 32.7726
|
|
948
968
|
};
|
|
949
969
|
var RDS_BASE_PRICES = {
|
|
950
970
|
"db.t3.micro": 0.017,
|
|
@@ -1010,7 +1030,12 @@ var SIZE_ORDER = [
|
|
|
1010
1030
|
];
|
|
1011
1031
|
function regionMultiplier(region) {
|
|
1012
1032
|
const multipliers = getRegionPriceMultipliers();
|
|
1013
|
-
|
|
1033
|
+
const mult = multipliers.aws[region.toLowerCase()];
|
|
1034
|
+
if (mult === void 0) {
|
|
1035
|
+
logger.warn("region-multiplier: unknown AWS region, defaulting to 1.0x", { region });
|
|
1036
|
+
return 1;
|
|
1037
|
+
}
|
|
1038
|
+
return mult;
|
|
1014
1039
|
}
|
|
1015
1040
|
|
|
1016
1041
|
// src/pricing/aws/bulk-loader.ts
|
|
@@ -1641,7 +1666,16 @@ var VM_BASE_PRICES = {
|
|
|
1641
1666
|
standard_nc8as_t4_v3: 0.752,
|
|
1642
1667
|
standard_e2ps_v5: 0.101,
|
|
1643
1668
|
standard_e4ps_v5: 0.202,
|
|
1644
|
-
standard_e8ps_v5: 0.403
|
|
1669
|
+
standard_e8ps_v5: 0.403,
|
|
1670
|
+
// v6 series
|
|
1671
|
+
standard_d2s_v6: 0.096,
|
|
1672
|
+
standard_d4s_v6: 0.192,
|
|
1673
|
+
standard_d8s_v6: 0.384,
|
|
1674
|
+
standard_d16s_v6: 0.768,
|
|
1675
|
+
standard_e2s_v6: 0.126,
|
|
1676
|
+
standard_e4s_v6: 0.252,
|
|
1677
|
+
standard_e8s_v6: 0.504,
|
|
1678
|
+
standard_e16s_v6: 1.008
|
|
1645
1679
|
};
|
|
1646
1680
|
var DISK_BASE_PRICES = {
|
|
1647
1681
|
premium_lrs: 0.132,
|
|
@@ -1678,7 +1712,12 @@ var CACHE_TTL2 = 86400;
|
|
|
1678
1712
|
var RETAIL_API_BASE = "https://prices.azure.com/api/retail/prices";
|
|
1679
1713
|
function regionMultiplier2(region) {
|
|
1680
1714
|
const multipliers = getRegionPriceMultipliers();
|
|
1681
|
-
|
|
1715
|
+
const mult = multipliers.azure[region.toLowerCase()];
|
|
1716
|
+
if (mult === void 0) {
|
|
1717
|
+
logger.warn("region-multiplier: unknown Azure region, defaulting to 1.0x", { region });
|
|
1718
|
+
return 1;
|
|
1719
|
+
}
|
|
1720
|
+
return mult;
|
|
1682
1721
|
}
|
|
1683
1722
|
|
|
1684
1723
|
// src/pricing/azure/retail-client.ts
|
|
@@ -2113,7 +2152,12 @@ var GKE_STANDARD_HOURLY = 0.1;
|
|
|
2113
2152
|
var GKE_AUTOPILOT_VCPU_HOURLY = 0.0445;
|
|
2114
2153
|
function regionMultiplier3(region) {
|
|
2115
2154
|
const multipliers = getRegionPriceMultipliers();
|
|
2116
|
-
|
|
2155
|
+
const mult = multipliers.gcp[region.toLowerCase()];
|
|
2156
|
+
if (mult === void 0) {
|
|
2157
|
+
logger.warn("region-multiplier: unknown GCP region, defaulting to 1.0x", { region });
|
|
2158
|
+
return 1;
|
|
2159
|
+
}
|
|
2160
|
+
return mult;
|
|
2117
2161
|
}
|
|
2118
2162
|
var GcpBundledLoader = class {
|
|
2119
2163
|
// -------------------------------------------------------------------------
|
|
@@ -3118,6 +3162,12 @@ var awsExtractors = {
|
|
|
3118
3162
|
}
|
|
3119
3163
|
return attrs;
|
|
3120
3164
|
},
|
|
3165
|
+
aws_sagemaker_notebook_instance(block) {
|
|
3166
|
+
const attrs = {};
|
|
3167
|
+
if (str(block["instance_type"])) attrs.instance_type = str(block["instance_type"]);
|
|
3168
|
+
if (str(block["name"])) attrs.endpoint_name = str(block["name"]);
|
|
3169
|
+
return attrs;
|
|
3170
|
+
},
|
|
3121
3171
|
aws_mq_broker(block) {
|
|
3122
3172
|
const attrs = {};
|
|
3123
3173
|
if (str(block["host_instance_type"])) attrs.instance_type = str(block["host_instance_type"]);
|
|
@@ -4073,7 +4123,7 @@ var ARM_TYPE_MAP = {
|
|
|
4073
4123
|
"microsoft.compute/disks": "azurerm_managed_disk",
|
|
4074
4124
|
"microsoft.dbforpostgresql/flexibleservers": "azurerm_postgresql_flexible_server",
|
|
4075
4125
|
"microsoft.dbformysql/flexibleservers": "azurerm_mysql_flexible_server",
|
|
4076
|
-
"microsoft.sql/servers": "
|
|
4126
|
+
"microsoft.sql/servers": "azurerm_mssql_database",
|
|
4077
4127
|
"microsoft.storage/storageaccounts": "azurerm_storage_account",
|
|
4078
4128
|
"microsoft.network/loadbalancers": "azurerm_lb",
|
|
4079
4129
|
"microsoft.network/natgateways": "azurerm_nat_gateway",
|
|
@@ -4333,7 +4383,7 @@ var PULUMI_TYPE_MAP = {
|
|
|
4333
4383
|
type: "azurerm_kubernetes_cluster",
|
|
4334
4384
|
provider: "azure"
|
|
4335
4385
|
},
|
|
4336
|
-
"azure:sql:Database": { type: "
|
|
4386
|
+
"azure:sql:Database": { type: "azurerm_mssql_database", provider: "azure" },
|
|
4337
4387
|
"azure:storage:Account": { type: "azurerm_storage_account", provider: "azure" },
|
|
4338
4388
|
"azure:keyvault:KeyVault": { type: "azurerm_key_vault", provider: "azure" },
|
|
4339
4389
|
"azure:dns:Zone": { type: "azurerm_dns_zone", provider: "azure" },
|
|
@@ -7717,7 +7767,7 @@ var DATABASE_TYPES = /* @__PURE__ */ new Set([
|
|
|
7717
7767
|
"aws_db_instance",
|
|
7718
7768
|
"azurerm_postgresql_flexible_server",
|
|
7719
7769
|
"azurerm_mysql_flexible_server",
|
|
7720
|
-
"
|
|
7770
|
+
"azurerm_mssql_database",
|
|
7721
7771
|
"google_sql_database_instance"
|
|
7722
7772
|
]);
|
|
7723
7773
|
var BLOCK_STORAGE_TYPES = /* @__PURE__ */ new Set([
|
|
@@ -7801,7 +7851,11 @@ var MESSAGING_TYPES = /* @__PURE__ */ new Set([
|
|
|
7801
7851
|
"azurerm_servicebus_namespace",
|
|
7802
7852
|
"google_pubsub_topic"
|
|
7803
7853
|
]);
|
|
7804
|
-
var ML_AI_TYPES = /* @__PURE__ */ new Set([
|
|
7854
|
+
var ML_AI_TYPES = /* @__PURE__ */ new Set([
|
|
7855
|
+
"aws_sagemaker_endpoint",
|
|
7856
|
+
"aws_sagemaker_notebook_instance",
|
|
7857
|
+
"google_vertex_ai_endpoint"
|
|
7858
|
+
]);
|
|
7805
7859
|
var MQ_BROKER_TYPES = /* @__PURE__ */ new Set(["aws_mq_broker"]);
|
|
7806
7860
|
var EVENTHUB_TYPES = /* @__PURE__ */ new Set(["azurerm_eventhub_namespace"]);
|
|
7807
7861
|
var PUBSUB_SUBSCRIPTION_TYPES = /* @__PURE__ */ new Set(["google_pubsub_subscription"]);
|
|
@@ -9338,4 +9392,4 @@ export {
|
|
|
9338
9392
|
whatIfSchema,
|
|
9339
9393
|
whatIf
|
|
9340
9394
|
};
|
|
9341
|
-
//# sourceMappingURL=chunk-
|
|
9395
|
+
//# sourceMappingURL=chunk-E7KOWAMW.js.map
|
package/dist/cli.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jadenrazo/cloudcost-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "MCP server for multi-cloud cost analysis of Terraform, CloudFormation, Pulumi, and Bicep/ARM codebases",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,7 +39,10 @@
|
|
|
39
39
|
"!dist/**/*.map",
|
|
40
40
|
"data",
|
|
41
41
|
"README.md",
|
|
42
|
-
"LICENSE"
|
|
42
|
+
"LICENSE",
|
|
43
|
+
"STABILITY.md",
|
|
44
|
+
"MIGRATION.md",
|
|
45
|
+
"CHANGELOG.md"
|
|
43
46
|
],
|
|
44
47
|
"main": "dist/index.js",
|
|
45
48
|
"types": "dist/index.d.ts",
|
|
@@ -60,6 +63,7 @@
|
|
|
60
63
|
"format:check": "prettier --check src test",
|
|
61
64
|
"test:coverage": "vitest run --coverage",
|
|
62
65
|
"audit": "npm audit --audit-level=high",
|
|
66
|
+
"refresh-pricing": "tsx scripts/refresh-pricing.ts",
|
|
63
67
|
"clean": "rm -rf dist",
|
|
64
68
|
"prepare": "npm run build"
|
|
65
69
|
},
|
|
@@ -70,6 +74,12 @@
|
|
|
70
74
|
"yaml": "^2.8.3",
|
|
71
75
|
"zod": "^3.24.4"
|
|
72
76
|
},
|
|
77
|
+
"overrides": {
|
|
78
|
+
"hono": "^4.12.12",
|
|
79
|
+
"@hono/node-server": "^1.19.13",
|
|
80
|
+
"path-to-regexp": "^8.4.0",
|
|
81
|
+
"vite": "^7.3.2"
|
|
82
|
+
},
|
|
73
83
|
"devDependencies": {
|
|
74
84
|
"@eslint/js": "^10.0.1",
|
|
75
85
|
"@types/better-sqlite3": "^7.6.13",
|