cloud-cost-mcp 1.1.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.
Files changed (48) hide show
  1. package/LICENSE +190 -0
  2. package/NOTICE +15 -0
  3. package/README.md +232 -0
  4. package/dist/data/bundled/aws-pricing.json +379 -0
  5. package/dist/data/bundled/azure-pricing.json +367 -0
  6. package/dist/data/bundled/gcp-pricing.json +383 -0
  7. package/dist/data/bundled/oci-pricing.json +290 -0
  8. package/dist/data/cache.d.ts +53 -0
  9. package/dist/data/cache.d.ts.map +1 -0
  10. package/dist/data/cache.js +95 -0
  11. package/dist/data/cache.js.map +1 -0
  12. package/dist/data/fetchers/aws.d.ts +65 -0
  13. package/dist/data/fetchers/aws.d.ts.map +1 -0
  14. package/dist/data/fetchers/aws.js +298 -0
  15. package/dist/data/fetchers/aws.js.map +1 -0
  16. package/dist/data/fetchers/azure.d.ts +83 -0
  17. package/dist/data/fetchers/azure.d.ts.map +1 -0
  18. package/dist/data/fetchers/azure.js +369 -0
  19. package/dist/data/fetchers/azure.js.map +1 -0
  20. package/dist/data/fetchers/gcp.d.ts +44 -0
  21. package/dist/data/fetchers/gcp.d.ts.map +1 -0
  22. package/dist/data/fetchers/gcp.js +182 -0
  23. package/dist/data/fetchers/gcp.js.map +1 -0
  24. package/dist/data/fetchers/oci.d.ts +65 -0
  25. package/dist/data/fetchers/oci.d.ts.map +1 -0
  26. package/dist/data/fetchers/oci.js +130 -0
  27. package/dist/data/fetchers/oci.js.map +1 -0
  28. package/dist/data/loader.d.ts +56 -0
  29. package/dist/data/loader.d.ts.map +1 -0
  30. package/dist/data/loader.js +149 -0
  31. package/dist/data/loader.js.map +1 -0
  32. package/dist/index.d.ts +21 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +715 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/tools/calculator.d.ts +36 -0
  37. package/dist/tools/calculator.d.ts.map +1 -0
  38. package/dist/tools/calculator.js +271 -0
  39. package/dist/tools/calculator.js.map +1 -0
  40. package/dist/tools/compare.d.ts +64 -0
  41. package/dist/tools/compare.d.ts.map +1 -0
  42. package/dist/tools/compare.js +243 -0
  43. package/dist/tools/compare.js.map +1 -0
  44. package/dist/types.d.ts +171 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +6 -0
  47. package/dist/types.js.map +1 -0
  48. package/package.json +57 -0
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Cloud Cost MCP - Cross-Cloud Comparison Tools
3
+ * Core comparison logic for compute, storage, egress, and Kubernetes
4
+ */
5
+ import { getAllComputeInstances, getAllStorageOptions, getAllEgressPricing, getAllKubernetesPricing, } from '../data/loader.js';
6
+ /**
7
+ * Compare compute instances across all cloud providers
8
+ * Finds instances that match the specified vCPU and memory requirements
9
+ */
10
+ export function compareCompute(query) {
11
+ const allInstances = getAllComputeInstances();
12
+ // Handle missing parameters gracefully
13
+ const vcpus = query.vcpus || 0;
14
+ const memoryGB = query.memoryGB || 0;
15
+ // Find matching instances (within 50% of requested specs)
16
+ const vcpuMin = vcpus * 0.5;
17
+ const vcpuMax = vcpus * 1.5;
18
+ const memMin = memoryGB * 0.5;
19
+ const memMax = memoryGB * 1.5;
20
+ let matches = allInstances.filter(instance => {
21
+ const vcpuMatch = instance.vcpus >= vcpuMin && instance.vcpus <= vcpuMax;
22
+ const memMatch = instance.memoryGB >= memMin && instance.memoryGB <= memMax;
23
+ return vcpuMatch && memMatch;
24
+ });
25
+ // Apply category filter if specified
26
+ // Special case: 'arm' category filters by architecture
27
+ if (query.category) {
28
+ if (query.category === 'arm') {
29
+ matches = matches.filter(i => i.architecture === 'arm');
30
+ }
31
+ else {
32
+ matches = matches.filter(i => i.category === query.category);
33
+ }
34
+ }
35
+ // Sort by monthly price
36
+ matches.sort((a, b) => a.monthlyPrice - b.monthlyPrice);
37
+ // Find cheapest
38
+ const cheapest = matches.length > 0 ? matches[0] : null;
39
+ // Calculate savings vs AWS baseline
40
+ const awsInstance = matches.find(i => i.provider === 'aws');
41
+ let savingsVsAWS;
42
+ if (cheapest && awsInstance && cheapest.provider !== 'aws') {
43
+ savingsVsAWS = Math.round(((awsInstance.monthlyPrice - cheapest.monthlyPrice) / awsInstance.monthlyPrice) * 100);
44
+ }
45
+ // Generate summary
46
+ let summary = `Found ${matches.length} matching instances for ~${vcpus} vCPUs and ~${memoryGB}GB RAM.`;
47
+ if (cheapest) {
48
+ summary += ` Cheapest: ${cheapest.provider.toUpperCase()} ${cheapest.name} at $${cheapest.monthlyPrice.toFixed(2)}/month.`;
49
+ if (savingsVsAWS && savingsVsAWS > 0) {
50
+ summary += ` ${savingsVsAWS}% cheaper than AWS equivalent.`;
51
+ }
52
+ }
53
+ return {
54
+ query,
55
+ matches: matches.slice(0, 20), // Return top 20
56
+ cheapest,
57
+ summary,
58
+ savingsVsAWS,
59
+ };
60
+ }
61
+ /**
62
+ * Compare storage pricing across all cloud providers
63
+ */
64
+ export function compareStorage(query) {
65
+ const allStorage = getAllStorageOptions();
66
+ // Filter by tier if specified
67
+ let matches = allStorage;
68
+ if (query.tier) {
69
+ matches = matches.filter(s => s.tier === query.tier);
70
+ }
71
+ // Filter by type if specified
72
+ if (query.type) {
73
+ matches = matches.filter(s => s.type === query.type);
74
+ }
75
+ // Calculate monthly cost for each option
76
+ const monthlyEstimates = matches.map(storage => ({
77
+ provider: storage.provider,
78
+ name: storage.name,
79
+ monthlyCost: storage.pricePerGBMonth * query.sizeGB,
80
+ }));
81
+ // Sort by cost
82
+ monthlyEstimates.sort((a, b) => a.monthlyCost - b.monthlyCost);
83
+ // Find cheapest storage option
84
+ const cheapestEstimate = monthlyEstimates[0];
85
+ const cheapest = cheapestEstimate
86
+ ? matches.find(s => s.provider === cheapestEstimate.provider && s.name === cheapestEstimate.name) || null
87
+ : null;
88
+ // Generate summary
89
+ const tierStr = query.tier ? ` (${query.tier} tier)` : '';
90
+ const typeStr = query.type ? ` ${query.type}` : '';
91
+ let summary = `Storage comparison for ${query.sizeGB}GB${typeStr}${tierStr}.`;
92
+ if (cheapestEstimate) {
93
+ summary += ` Cheapest: ${cheapestEstimate.provider.toUpperCase()} ${cheapestEstimate.name} at $${cheapestEstimate.monthlyCost.toFixed(2)}/month.`;
94
+ }
95
+ return {
96
+ query,
97
+ matches: matches.slice(0, 20),
98
+ cheapest,
99
+ monthlyEstimates: monthlyEstimates.slice(0, 20),
100
+ summary,
101
+ };
102
+ }
103
+ /**
104
+ * Compare data egress costs across all cloud providers
105
+ * This is where OCI really shines with 10TB free egress
106
+ */
107
+ export function compareEgress(query) {
108
+ const allEgress = getAllEgressPricing();
109
+ const estimates = allEgress.map(egress => {
110
+ const { provider, freeGBPerMonth, tiers } = egress;
111
+ // Calculate billable GB
112
+ const billableGB = Math.max(0, query.monthlyGB - freeGBPerMonth);
113
+ // Calculate cost based on tiers
114
+ let monthlyCost = 0;
115
+ let remainingGB = billableGB;
116
+ for (const tier of tiers) {
117
+ if (remainingGB <= 0)
118
+ break;
119
+ const gbInTier = tier.upToGB === -1
120
+ ? remainingGB
121
+ : Math.min(remainingGB, tier.upToGB - freeGBPerMonth);
122
+ if (gbInTier > 0) {
123
+ monthlyCost += gbInTier * tier.pricePerGB;
124
+ remainingGB -= gbInTier;
125
+ }
126
+ }
127
+ // Build breakdown string
128
+ let breakdown = `${freeGBPerMonth.toLocaleString()}GB free`;
129
+ if (billableGB > 0) {
130
+ breakdown += `, ${billableGB.toLocaleString()}GB billed at tiered rates`;
131
+ }
132
+ return {
133
+ provider,
134
+ monthlyCost,
135
+ breakdown,
136
+ };
137
+ });
138
+ // Sort by cost
139
+ estimates.sort((a, b) => a.monthlyCost - b.monthlyCost);
140
+ const cheapest = estimates[0].provider;
141
+ // Generate summary highlighting OCI advantage
142
+ const ociEstimate = estimates.find(e => e.provider === 'oci');
143
+ const awsEstimate = estimates.find(e => e.provider === 'aws');
144
+ let summary = `Egress comparison for ${query.monthlyGB.toLocaleString()}GB/month. `;
145
+ summary += `Cheapest: ${cheapest.toUpperCase()} at $${estimates[0].monthlyCost.toFixed(2)}/month.`;
146
+ if (ociEstimate && awsEstimate && ociEstimate.monthlyCost < awsEstimate.monthlyCost) {
147
+ const savings = awsEstimate.monthlyCost - ociEstimate.monthlyCost;
148
+ summary += ` OCI saves $${savings.toFixed(2)}/month vs AWS (10TB free egress!).`;
149
+ }
150
+ return {
151
+ query,
152
+ estimates,
153
+ cheapest,
154
+ summary,
155
+ };
156
+ }
157
+ /**
158
+ * Compare Kubernetes pricing across providers
159
+ */
160
+ export function compareKubernetes(options) {
161
+ const k8sPricing = getAllKubernetesPricing();
162
+ const computeResult = compareCompute({
163
+ vcpus: options.nodeVcpus,
164
+ memoryGB: options.nodeMemoryGB,
165
+ });
166
+ const estimates = [];
167
+ const providers = ['aws', 'azure', 'gcp', 'oci'];
168
+ for (const provider of providers) {
169
+ const k8s = k8sPricing[provider];
170
+ if (!k8s)
171
+ continue;
172
+ // Find worker node cost for this provider
173
+ const workerNode = computeResult.matches.find(m => m.provider === provider);
174
+ const workerNodeCost = workerNode
175
+ ? workerNode.monthlyPrice * options.nodeCount
176
+ : 0;
177
+ estimates.push({
178
+ provider,
179
+ controlPlaneCost: k8s.controlPlaneMonthly,
180
+ workerNodeCost,
181
+ totalMonthlyCost: k8s.controlPlaneMonthly + workerNodeCost,
182
+ notes: k8s.notes || '',
183
+ });
184
+ }
185
+ estimates.sort((a, b) => a.totalMonthlyCost - b.totalMonthlyCost);
186
+ const cheapest = estimates[0].provider;
187
+ let summary = `Kubernetes cluster comparison: ${options.nodeCount} nodes × ${options.nodeVcpus} vCPUs × ${options.nodeMemoryGB}GB. `;
188
+ summary += `Cheapest: ${cheapest.toUpperCase()} at $${estimates[0].totalMonthlyCost.toFixed(2)}/month.`;
189
+ // Highlight free control planes
190
+ const freeControlPlane = estimates.filter(e => e.controlPlaneCost === 0);
191
+ if (freeControlPlane.length > 0) {
192
+ summary += ` Free control plane: ${freeControlPlane.map(e => e.provider.toUpperCase()).join(', ')}.`;
193
+ }
194
+ return {
195
+ estimates,
196
+ cheapest,
197
+ summary,
198
+ };
199
+ }
200
+ /**
201
+ * Find the cheapest provider for given compute specs
202
+ */
203
+ export function findCheapestCompute(options) {
204
+ const result = compareCompute(options);
205
+ const providers = ['aws', 'azure', 'gcp', 'oci'];
206
+ const allOptions = providers.map(provider => ({
207
+ provider,
208
+ instance: result.matches.find(m => m.provider === provider) || null,
209
+ }));
210
+ return {
211
+ cheapest: result.cheapest,
212
+ allOptions,
213
+ summary: result.summary,
214
+ };
215
+ }
216
+ /**
217
+ * Get storage pricing summary by tier
218
+ */
219
+ export function getStoragePricingSummary(sizeGB) {
220
+ const tiers = ['hot', 'cool', 'cold', 'archive'];
221
+ const byTier = {
222
+ hot: [],
223
+ cool: [],
224
+ cold: [],
225
+ archive: [],
226
+ };
227
+ for (const tier of tiers) {
228
+ const result = compareStorage({ sizeGB, tier });
229
+ byTier[tier] = result.monthlyEstimates;
230
+ }
231
+ // Generate recommendation
232
+ const hotCheapest = byTier.hot[0];
233
+ const archiveCheapest = byTier.archive[0];
234
+ let recommendation = `For ${sizeGB}GB frequently accessed data, use ${hotCheapest?.provider.toUpperCase()} ${hotCheapest?.name} ($${hotCheapest?.monthlyCost.toFixed(2)}/mo).`;
235
+ if (archiveCheapest) {
236
+ recommendation += ` For archival, use ${archiveCheapest.provider.toUpperCase()} ${archiveCheapest.name} ($${archiveCheapest.monthlyCost.toFixed(2)}/mo).`;
237
+ }
238
+ return {
239
+ byTier,
240
+ recommendation,
241
+ };
242
+ }
243
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/tools/compare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Cloud Cost MCP - Unified Type Definitions
3
+ * Consistent types across AWS, Azure, GCP, and OCI
4
+ */
5
+ export type CloudProvider = 'aws' | 'azure' | 'gcp' | 'oci';
6
+ export type ComputeCategory = 'general' | 'compute' | 'memory' | 'storage' | 'gpu' | 'arm';
7
+ export type StorageTier = 'hot' | 'cool' | 'cold' | 'archive';
8
+ export interface PricingMetadata {
9
+ provider: CloudProvider;
10
+ lastUpdated: string;
11
+ source: string;
12
+ version: string;
13
+ totalProducts: number;
14
+ currency: string;
15
+ }
16
+ export interface ComputeInstance {
17
+ provider: CloudProvider;
18
+ name: string;
19
+ displayName?: string;
20
+ vcpus: number;
21
+ memoryGB: number;
22
+ hourlyPrice: number;
23
+ monthlyPrice: number;
24
+ region: string;
25
+ category: ComputeCategory;
26
+ architecture?: 'x86' | 'arm';
27
+ gpuCount?: number;
28
+ gpuType?: string;
29
+ notes?: string;
30
+ }
31
+ export interface StoragePricing {
32
+ provider: CloudProvider;
33
+ name: string;
34
+ type: 'object' | 'block' | 'file' | 'archive';
35
+ tier: StorageTier;
36
+ pricePerGBMonth: number;
37
+ region: string;
38
+ redundancy?: string;
39
+ notes?: string;
40
+ }
41
+ export interface EgressPricing {
42
+ provider: CloudProvider;
43
+ freeGBPerMonth: number;
44
+ tiers: EgressTier[];
45
+ notes?: string;
46
+ }
47
+ export interface EgressTier {
48
+ upToGB: number;
49
+ pricePerGB: number;
50
+ }
51
+ export interface KubernetesPricing {
52
+ provider: CloudProvider;
53
+ name: string;
54
+ controlPlaneHourly: number;
55
+ controlPlaneMonthly: number;
56
+ workerNodeIncluded: boolean;
57
+ notes?: string;
58
+ }
59
+ export interface DatabasePricing {
60
+ provider: CloudProvider;
61
+ name: string;
62
+ type: 'relational' | 'nosql' | 'serverless';
63
+ engine?: string;
64
+ vcpus?: number;
65
+ memoryGB?: number;
66
+ hourlyPrice: number;
67
+ monthlyPrice: number;
68
+ notes?: string;
69
+ }
70
+ export interface ComputeComparisonQuery {
71
+ vcpus: number;
72
+ memoryGB: number;
73
+ category?: ComputeCategory;
74
+ region?: string;
75
+ }
76
+ export interface ComputeComparisonResult {
77
+ query: ComputeComparisonQuery;
78
+ matches: ComputeInstance[];
79
+ cheapest: ComputeInstance | null;
80
+ summary: string;
81
+ savingsVsAWS?: number;
82
+ }
83
+ export interface StorageComparisonQuery {
84
+ sizeGB: number;
85
+ tier?: StorageTier;
86
+ type?: 'object' | 'block';
87
+ }
88
+ export interface StorageComparisonResult {
89
+ query: StorageComparisonQuery;
90
+ matches: StoragePricing[];
91
+ cheapest: StoragePricing | null;
92
+ monthlyEstimates: Array<{
93
+ provider: CloudProvider;
94
+ name: string;
95
+ monthlyCost: number;
96
+ }>;
97
+ summary: string;
98
+ }
99
+ export interface EgressComparisonQuery {
100
+ monthlyGB: number;
101
+ }
102
+ export interface EgressComparisonResult {
103
+ query: EgressComparisonQuery;
104
+ estimates: Array<{
105
+ provider: CloudProvider;
106
+ monthlyCost: number;
107
+ breakdown: string;
108
+ }>;
109
+ cheapest: CloudProvider;
110
+ summary: string;
111
+ }
112
+ export interface ProviderPricingData {
113
+ metadata: PricingMetadata;
114
+ compute: ComputeInstance[];
115
+ storage: StoragePricing[];
116
+ egress: EgressPricing;
117
+ kubernetes?: KubernetesPricing;
118
+ database?: DatabasePricing[];
119
+ }
120
+ export interface AllCloudPricing {
121
+ aws: ProviderPricingData;
122
+ azure: ProviderPricingData;
123
+ gcp: ProviderPricingData;
124
+ oci: ProviderPricingData;
125
+ }
126
+ export interface DataFreshnessInfo {
127
+ provider: CloudProvider;
128
+ lastUpdated: string;
129
+ ageInDays: number;
130
+ isStale: boolean;
131
+ source: string;
132
+ canRefresh: boolean;
133
+ }
134
+ export interface WorkloadSpec {
135
+ compute?: {
136
+ vcpus: number;
137
+ memoryGB: number;
138
+ count?: number;
139
+ };
140
+ storage?: {
141
+ objectGB?: number;
142
+ blockGB?: number;
143
+ };
144
+ egress?: {
145
+ monthlyGB: number;
146
+ };
147
+ kubernetes?: {
148
+ nodeCount: number;
149
+ nodeVcpus: number;
150
+ nodeMemoryGB: number;
151
+ };
152
+ }
153
+ export interface WorkloadCostEstimate {
154
+ provider: CloudProvider;
155
+ breakdown: Array<{
156
+ category: string;
157
+ item: string;
158
+ quantity: number;
159
+ unitPrice: number;
160
+ monthlyTotal: number;
161
+ }>;
162
+ totalMonthly: number;
163
+ notes: string[];
164
+ }
165
+ export interface WorkloadComparisonResult {
166
+ spec: WorkloadSpec;
167
+ estimates: WorkloadCostEstimate[];
168
+ cheapest: CloudProvider;
169
+ savingsSummary: string;
170
+ }
171
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Cloud Cost MCP - Unified Type Definitions
3
+ * Consistent types across AWS, Azure, GCP, and OCI
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "cloud-cost-mcp",
3
+ "version": "1.1.0",
4
+ "description": "Multi-cloud pricing comparison MCP server for AWS, Azure, GCP, and OCI",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "cloud-cost-mcp": "./dist/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc && npm run copy-data",
13
+ "copy-data": "mkdir -p dist/data/bundled && cp src/data/bundled/*.json dist/data/bundled/",
14
+ "start": "node dist/index.js",
15
+ "dev": "tsc --watch",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "keywords": [
19
+ "mcp",
20
+ "model-context-protocol",
21
+ "cloud",
22
+ "pricing",
23
+ "cost",
24
+ "aws",
25
+ "azure",
26
+ "gcp",
27
+ "oci",
28
+ "comparison",
29
+ "finops",
30
+ "claude"
31
+ ],
32
+ "author": {
33
+ "name": "Jason Wilbur",
34
+ "url": "https://jasonwilbur.com"
35
+ },
36
+ "license": "Apache-2.0",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/jasonwilbur/cloud-cost-mcp"
40
+ },
41
+ "engines": {
42
+ "node": ">=18.0.0"
43
+ },
44
+ "dependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.0.0"
46
+ },
47
+ "devDependencies": {
48
+ "@types/node": "^20.10.0",
49
+ "typescript": "^5.3.0"
50
+ },
51
+ "files": [
52
+ "dist",
53
+ "README.md",
54
+ "LICENSE",
55
+ "NOTICE"
56
+ ]
57
+ }