@jadenrazo/cloudcost-mcp 1.0.1 → 1.2.1
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 +62 -5
- package/README.md +70 -115
- package/VERSIONING.md +99 -0
- package/data/aws-pricing/metadata.json +1 -1
- package/data/azure-pricing/metadata.json +1 -1
- package/dist/{chunk-6O2Y6MKU.js → chunk-CGMU4ETN.js} +927 -1067
- package/dist/{chunk-MNFT5YKN.js → chunk-LWTVE7UY.js} +19 -1
- package/dist/cli.d.ts +46 -1
- package/dist/cli.js +63 -23
- package/dist/index.js +361 -137
- package/dist/{loader-UWVEXYMR.js → loader-CMBV7346.js} +4 -2
- package/package.json +34 -21
- package/MIGRATION.md +0 -40
- package/STABILITY.md +0 -71
|
@@ -10,11 +10,12 @@ import {
|
|
|
10
10
|
getGcpSqlPricing,
|
|
11
11
|
getGcpStoragePricing,
|
|
12
12
|
getInstanceMap,
|
|
13
|
+
getPricingMetadata,
|
|
13
14
|
getRegionMappings,
|
|
14
15
|
getRegionPriceMultipliers,
|
|
15
16
|
getResourceEquivalents,
|
|
16
17
|
getStorageMap
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-LWTVE7UY.js";
|
|
18
19
|
export {
|
|
19
20
|
_resetLoaderCache,
|
|
20
21
|
getAwsInstances,
|
|
@@ -26,9 +27,10 @@ export {
|
|
|
26
27
|
getGcpSqlPricing,
|
|
27
28
|
getGcpStoragePricing,
|
|
28
29
|
getInstanceMap,
|
|
30
|
+
getPricingMetadata,
|
|
29
31
|
getRegionMappings,
|
|
30
32
|
getRegionPriceMultipliers,
|
|
31
33
|
getResourceEquivalents,
|
|
32
34
|
getStorageMap
|
|
33
35
|
};
|
|
34
|
-
//# sourceMappingURL=loader-
|
|
36
|
+
//# sourceMappingURL=loader-CMBV7346.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jadenrazo/cloudcost-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
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",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"what-if"
|
|
33
33
|
],
|
|
34
34
|
"engines": {
|
|
35
|
-
"node": ">=
|
|
35
|
+
"node": ">=24.15.0"
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
38
38
|
"dist",
|
|
@@ -40,8 +40,7 @@
|
|
|
40
40
|
"data",
|
|
41
41
|
"README.md",
|
|
42
42
|
"LICENSE",
|
|
43
|
-
"
|
|
44
|
-
"MIGRATION.md",
|
|
43
|
+
"VERSIONING.md",
|
|
45
44
|
"CHANGELOG.md"
|
|
46
45
|
],
|
|
47
46
|
"main": "dist/index.js",
|
|
@@ -58,9 +57,11 @@
|
|
|
58
57
|
"test": "vitest run",
|
|
59
58
|
"bench": "vitest bench",
|
|
60
59
|
"test:watch": "vitest",
|
|
60
|
+
"typecheck": "tsc --noEmit",
|
|
61
61
|
"lint": "tsc --noEmit && eslint src test",
|
|
62
62
|
"format": "prettier --write src test",
|
|
63
63
|
"format:check": "prettier --check src test",
|
|
64
|
+
"check": "npm run typecheck && eslint src test && npm run format:check",
|
|
64
65
|
"test:coverage": "vitest run --coverage",
|
|
65
66
|
"audit": "npm audit --audit-level=high",
|
|
66
67
|
"refresh-pricing": "tsx scripts/refresh-pricing.ts",
|
|
@@ -69,29 +70,41 @@
|
|
|
69
70
|
},
|
|
70
71
|
"dependencies": {
|
|
71
72
|
"@cdktf/hcl2json": "^0.21.0",
|
|
72
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
73
|
-
"better-sqlite3": "^
|
|
74
|
-
"yaml": "^2.
|
|
75
|
-
"zod": "^
|
|
73
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
74
|
+
"better-sqlite3": "^12.10.0",
|
|
75
|
+
"yaml": "^2.9.0",
|
|
76
|
+
"zod": "^4.4.3"
|
|
76
77
|
},
|
|
77
78
|
"overrides": {
|
|
78
|
-
"hono": "^4.
|
|
79
|
-
"@hono/node-server": "^
|
|
80
|
-
"path-to-regexp": "^8.4.
|
|
81
|
-
"vite": "^
|
|
79
|
+
"hono": "^4.13.0",
|
|
80
|
+
"@hono/node-server": "^2.0.0",
|
|
81
|
+
"path-to-regexp": "^8.4.2",
|
|
82
|
+
"vite": "^8.0.0",
|
|
83
|
+
"fast-uri": "^3.1.5",
|
|
84
|
+
"ip-address": "^10.4.0",
|
|
85
|
+
"qs": "^6.15.3",
|
|
86
|
+
"body-parser": "^2.3.0",
|
|
87
|
+
"brace-expansion": "^5.0.9"
|
|
88
|
+
},
|
|
89
|
+
"prettier": {
|
|
90
|
+
"semi": true,
|
|
91
|
+
"singleQuote": false,
|
|
92
|
+
"trailingComma": "all",
|
|
93
|
+
"tabWidth": 2,
|
|
94
|
+
"printWidth": 100
|
|
82
95
|
},
|
|
83
96
|
"devDependencies": {
|
|
84
97
|
"@eslint/js": "^10.0.1",
|
|
85
98
|
"@types/better-sqlite3": "^7.6.13",
|
|
86
|
-
"@types/node": "^
|
|
87
|
-
"@vitest/coverage-v8": "^
|
|
88
|
-
"eslint": "^10.
|
|
99
|
+
"@types/node": "^24.12.4",
|
|
100
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
101
|
+
"eslint": "^10.4.0",
|
|
89
102
|
"eslint-config-prettier": "^10.1.8",
|
|
90
|
-
"prettier": "^3.8.
|
|
91
|
-
"tsup": "^8.
|
|
92
|
-
"tsx": "^4.
|
|
93
|
-
"typescript": "^
|
|
94
|
-
"typescript-eslint": "^8.
|
|
95
|
-
"vitest": "^
|
|
103
|
+
"prettier": "^3.8.3",
|
|
104
|
+
"tsup": "^8.5.1",
|
|
105
|
+
"tsx": "^4.22.0",
|
|
106
|
+
"typescript": "^6.0.3",
|
|
107
|
+
"typescript-eslint": "^8.59.3",
|
|
108
|
+
"vitest": "^4.1.10"
|
|
96
109
|
}
|
|
97
110
|
}
|
package/MIGRATION.md
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Migration Guide
|
|
2
|
-
|
|
3
|
-
## 0.x → 1.0
|
|
4
|
-
|
|
5
|
-
**There are no breaking API changes.** v1.0 ratifies the existing v0.5 surface as stable under [Semantic Versioning](https://semver.org/). If your integration works on v0.5.x it will work on v1.0.0 without modification.
|
|
6
|
-
|
|
7
|
-
### What's new in 1.0
|
|
8
|
-
|
|
9
|
-
- Formal stability contract — see [`STABILITY.md`](./STABILITY.md).
|
|
10
|
-
- Security advisories in transitive dependencies (hono, `@hono/node-server`, path-to-regexp, vite) resolved via npm overrides.
|
|
11
|
-
- Smoke integration tests against live provider pricing APIs, runnable via `RUN_INTEGRATION=1` and scheduled weekly in CI.
|
|
12
|
-
- Hardened npm publish workflow (tests + audit gate releases).
|
|
13
|
-
|
|
14
|
-
### Locked-in public surface
|
|
15
|
-
|
|
16
|
-
The following are now SemVer-locked. Any breaking change to them requires a 2.0.
|
|
17
|
-
|
|
18
|
-
- MCP tools: `analyze_terraform`, `estimate_cost`, `compare_providers`, `get_equivalents`, `get_pricing`, `optimize_cost`, `what_if`, `analyze_plan`, `compare_actual`, `price_trends`, `detect_anomalies`
|
|
19
|
-
- CLI binaries: `cloudcost-mcp`, `cloudcost`
|
|
20
|
-
- Node engines: `>=20.0.0`
|
|
21
|
-
|
|
22
|
-
### Node.js
|
|
23
|
-
|
|
24
|
-
Node 20 remains the minimum. No change from v0.5.
|
|
25
|
-
|
|
26
|
-
### Support policy going forward
|
|
27
|
-
|
|
28
|
-
- Latest minor: security + bug fixes.
|
|
29
|
-
- Previous minor: security fixes only, 6 months after a new minor ships.
|
|
30
|
-
- Deprecations: a tool or input field marked deprecated in a minor must stay for at least one more minor before removal in the next major.
|
|
31
|
-
|
|
32
|
-
### Pinning
|
|
33
|
-
|
|
34
|
-
Once on v1.0 you can safely pin with a caret range:
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
"@jadenrazo/cloudcost-mcp": "^1.0.0"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
This accepts bugfixes, pricing refreshes, and additive features, and will not pull in breaking changes.
|
package/STABILITY.md
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# Stability Policy
|
|
2
|
-
|
|
3
|
-
Starting with v1.0.0, CloudCostMCP follows [Semantic Versioning](https://semver.org/). This document defines the **stable public surface** covered by that guarantee — changes to anything listed here are breaking and require a major version bump.
|
|
4
|
-
|
|
5
|
-
## Stable surface (SemVer-locked)
|
|
6
|
-
|
|
7
|
-
### MCP tools
|
|
8
|
-
|
|
9
|
-
The following 11 tools and their input schemas are locked. Their names, required fields, and the type shape of their output are stable. See `src/tools/*.ts` for the Zod schemas.
|
|
10
|
-
|
|
11
|
-
| Tool | Purpose |
|
|
12
|
-
| ------------------- | ------------------------------------------------------------------------- |
|
|
13
|
-
| `analyze_terraform` | Parse Terraform HCL and extract a resource inventory |
|
|
14
|
-
| `estimate_cost` | Estimate monthly/yearly cost for a Terraform resource set on one provider |
|
|
15
|
-
| `compare_providers` | Full multi-cloud cost comparison with savings analysis |
|
|
16
|
-
| `get_equivalents` | Map Terraform resource types and instance sizes across providers |
|
|
17
|
-
| `get_pricing` | Direct pricing lookup for a service/resource/region |
|
|
18
|
-
| `optimize_cost` | Right-sizing and reserved-pricing recommendations |
|
|
19
|
-
| `what_if` | Scenario cost modeling without modifying source files |
|
|
20
|
-
| `analyze_plan` | Cost-of-change analysis from a Terraform plan JSON |
|
|
21
|
-
| `compare_actual` | `.tfstate` vs planned cost drift detection |
|
|
22
|
-
| `price_trends` | Historical pricing trend query |
|
|
23
|
-
| `detect_anomalies` | Budget and concentration-risk anomaly detection |
|
|
24
|
-
|
|
25
|
-
### CLI
|
|
26
|
-
|
|
27
|
-
The `cloudcost-mcp` and `cloudcost` binaries and their documented flags in the README are stable.
|
|
28
|
-
|
|
29
|
-
### Package entry points
|
|
30
|
-
|
|
31
|
-
- `main`: `dist/index.js`
|
|
32
|
-
- `types`: `dist/index.d.ts`
|
|
33
|
-
- `bin`: `cloudcost-mcp`, `cloudcost`
|
|
34
|
-
- Node engine: `>=20.0.0`
|
|
35
|
-
|
|
36
|
-
## Not stable (may change in any release)
|
|
37
|
-
|
|
38
|
-
- Internal parser implementations under `src/parsers/`
|
|
39
|
-
- Pricing adapter internals under `src/pricing/aws`, `src/pricing/azure`, `src/pricing/gcp`
|
|
40
|
-
- The on-disk SQLite cache schema (cache is rebuilt on upgrade)
|
|
41
|
-
- Bundled fallback pricing tables under `data/`
|
|
42
|
-
- Log line format and log levels
|
|
43
|
-
- Exit codes beyond `0` (success) and `1` (failure)
|
|
44
|
-
- Benchmark scripts and unreleased helper modules
|
|
45
|
-
|
|
46
|
-
## Change classification
|
|
47
|
-
|
|
48
|
-
| Change | Bump |
|
|
49
|
-
| ------------------------------------------------ | ----- |
|
|
50
|
-
| Remove or rename a tool | Major |
|
|
51
|
-
| Remove a required input field from a tool schema | Major |
|
|
52
|
-
| Change the type of an existing output field | Major |
|
|
53
|
-
| Raise the minimum Node.js version | Major |
|
|
54
|
-
| Add a new tool | Minor |
|
|
55
|
-
| Add an optional input field | Minor |
|
|
56
|
-
| Add a new output field | Minor |
|
|
57
|
-
| Add a new provider/region/resource | Minor |
|
|
58
|
-
| Bugfix | Patch |
|
|
59
|
-
| Performance improvement | Patch |
|
|
60
|
-
| Pricing data refresh | Patch |
|
|
61
|
-
| Dependency bump without API change | Patch |
|
|
62
|
-
|
|
63
|
-
## Deprecation
|
|
64
|
-
|
|
65
|
-
Before a tool or field is removed in a future major, it will be marked deprecated in its description for at least one minor release, with the replacement documented in `CHANGELOG.md`.
|
|
66
|
-
|
|
67
|
-
## Support policy
|
|
68
|
-
|
|
69
|
-
- The latest minor line receives security and bug fixes.
|
|
70
|
-
- The previous minor line receives security fixes only, for 6 months after the next minor is released.
|
|
71
|
-
- CVE reports: see `SECURITY.md`.
|