oci-pricing-mcp 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/LICENSE +201 -0
- package/NOTICE +24 -0
- package/README.md +299 -0
- package/dist/data/cache.d.ts +50 -0
- package/dist/data/cache.d.ts.map +1 -0
- package/dist/data/cache.js +90 -0
- package/dist/data/cache.js.map +1 -0
- package/dist/data/fetcher.d.ts +96 -0
- package/dist/data/fetcher.d.ts.map +1 -0
- package/dist/data/fetcher.js +232 -0
- package/dist/data/fetcher.js.map +1 -0
- package/dist/data/pricing-data.json +6162 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +582 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/calculator.d.ts +17 -0
- package/dist/tools/calculator.d.ts.map +1 -0
- package/dist/tools/calculator.js +318 -0
- package/dist/tools/calculator.js.map +1 -0
- package/dist/tools/compute.d.ts +58 -0
- package/dist/tools/compute.d.ts.map +1 -0
- package/dist/tools/compute.js +172 -0
- package/dist/tools/compute.js.map +1 -0
- package/dist/tools/core.d.ts +70 -0
- package/dist/tools/core.d.ts.map +1 -0
- package/dist/tools/core.js +113 -0
- package/dist/tools/core.js.map +1 -0
- package/dist/tools/database.d.ts +66 -0
- package/dist/tools/database.d.ts.map +1 -0
- package/dist/tools/database.js +212 -0
- package/dist/tools/database.js.map +1 -0
- package/dist/tools/kubernetes.d.ts +65 -0
- package/dist/tools/kubernetes.d.ts.map +1 -0
- package/dist/tools/kubernetes.js +226 -0
- package/dist/tools/kubernetes.js.map +1 -0
- package/dist/tools/networking.d.ts +63 -0
- package/dist/tools/networking.d.ts.map +1 -0
- package/dist/tools/networking.js +248 -0
- package/dist/tools/networking.js.map +1 -0
- package/dist/tools/storage.d.ts +64 -0
- package/dist/tools/storage.d.ts.map +1 -0
- package/dist/tools/storage.js +175 -0
- package/dist/tools/storage.js.map +1 -0
- package/dist/types.d.ts +162 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OCI Storage Pricing Tools
|
|
3
|
+
*/
|
|
4
|
+
import { getStoragePricing, getLastUpdated, getFreeTier } from '../data/fetcher.js';
|
|
5
|
+
/**
|
|
6
|
+
* List available OCI storage options with pricing
|
|
7
|
+
*/
|
|
8
|
+
export function listStorageOptions(params = {}) {
|
|
9
|
+
let storage = getStoragePricing();
|
|
10
|
+
// Filter by type
|
|
11
|
+
if (params.type) {
|
|
12
|
+
const typeFilter = params.type.toLowerCase();
|
|
13
|
+
storage = storage.filter((s) => s.storageType?.toLowerCase().includes(typeFilter) ||
|
|
14
|
+
s.type?.toLowerCase().includes(typeFilter));
|
|
15
|
+
}
|
|
16
|
+
// Transform to user-friendly format
|
|
17
|
+
const options = storage.map((s) => ({
|
|
18
|
+
name: s.type,
|
|
19
|
+
type: s.storageType || 'general',
|
|
20
|
+
description: s.description,
|
|
21
|
+
pricePerGB: s.pricePerUnit,
|
|
22
|
+
monthlyPer100GB: Math.round(s.pricePerUnit * 100 * 100) / 100,
|
|
23
|
+
monthlyPerTB: Math.round(s.pricePerUnit * 1024 * 100) / 100,
|
|
24
|
+
performanceTier: s.performanceTier,
|
|
25
|
+
notes: s.notes,
|
|
26
|
+
}));
|
|
27
|
+
// Get free tier info
|
|
28
|
+
const freeTier = getFreeTier();
|
|
29
|
+
const freeTierNote = freeTier?.storage
|
|
30
|
+
? `Always Free: ${freeTier.storage.blockVolume} block, ${freeTier.storage.objectStorage} object, ${freeTier.storage.archive} archive`
|
|
31
|
+
: 'Always Free tier available';
|
|
32
|
+
// Find cheapest and best performance
|
|
33
|
+
const sortedByPrice = [...options].sort((a, b) => a.pricePerGB - b.pricePerGB);
|
|
34
|
+
const cheapest = sortedByPrice[0];
|
|
35
|
+
const blockOptions = options.filter((o) => o.type.includes('block'));
|
|
36
|
+
const bestPerf = blockOptions.find((o) => o.performanceTier?.includes('Ultra'));
|
|
37
|
+
return {
|
|
38
|
+
options,
|
|
39
|
+
totalCount: options.length,
|
|
40
|
+
lastUpdated: getLastUpdated(),
|
|
41
|
+
freeTierNote,
|
|
42
|
+
comparison: {
|
|
43
|
+
cheapest: cheapest
|
|
44
|
+
? `${cheapest.name} at $${cheapest.pricePerGB}/GB/month ($${cheapest.monthlyPerTB}/TB)`
|
|
45
|
+
: 'N/A',
|
|
46
|
+
bestPerformance: bestPerf
|
|
47
|
+
? `${bestPerf.name} at $${bestPerf.pricePerGB}/GB/month (up to 225K IOPS)`
|
|
48
|
+
: 'Block Volume Ultra High Performance',
|
|
49
|
+
},
|
|
50
|
+
tips: [
|
|
51
|
+
'Archive storage is 10x cheaper than standard object storage for long-term data',
|
|
52
|
+
'Block Volume Balanced (10 VPU) is included at base price - no extra performance charge',
|
|
53
|
+
'First 10 GB of Object Storage is free',
|
|
54
|
+
'Consider Infrequent Access tier for data accessed less than monthly',
|
|
55
|
+
'File Storage pricing is higher but provides NFS compatibility',
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function calculateStorageCost(params) {
|
|
60
|
+
const storage = getStoragePricing();
|
|
61
|
+
const breakdown = [];
|
|
62
|
+
const notes = [];
|
|
63
|
+
// Block Volume
|
|
64
|
+
if (params.blockVolumeGB) {
|
|
65
|
+
let blockType = 'block-storage-balanced'; // Default
|
|
66
|
+
let tierName = 'Balanced';
|
|
67
|
+
switch (params.blockPerformanceTier) {
|
|
68
|
+
case 'basic':
|
|
69
|
+
blockType = 'block-storage-basic';
|
|
70
|
+
tierName = 'Lower Cost';
|
|
71
|
+
break;
|
|
72
|
+
case 'high':
|
|
73
|
+
blockType = 'block-storage-high-performance';
|
|
74
|
+
tierName = 'Higher Performance';
|
|
75
|
+
break;
|
|
76
|
+
case 'ultra':
|
|
77
|
+
blockType = 'block-storage-ultra-high';
|
|
78
|
+
tierName = 'Ultra High Performance';
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
const blockPrice = storage.find((s) => s.type === blockType);
|
|
82
|
+
if (blockPrice) {
|
|
83
|
+
breakdown.push({
|
|
84
|
+
item: `Block Volume (${tierName})`,
|
|
85
|
+
gb: params.blockVolumeGB,
|
|
86
|
+
pricePerGB: blockPrice.pricePerUnit,
|
|
87
|
+
monthlyTotal: Math.round(blockPrice.pricePerUnit * params.blockVolumeGB * 100) / 100,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Object Storage
|
|
92
|
+
if (params.objectStorageGB) {
|
|
93
|
+
let objectType = 'object-storage'; // Default standard
|
|
94
|
+
let tierName = 'Standard';
|
|
95
|
+
switch (params.objectStorageTier) {
|
|
96
|
+
case 'infrequent':
|
|
97
|
+
objectType = 'object-storage-ia';
|
|
98
|
+
tierName = 'Infrequent Access';
|
|
99
|
+
break;
|
|
100
|
+
case 'archive':
|
|
101
|
+
objectType = 'object-storage-archive';
|
|
102
|
+
tierName = 'Archive';
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
const objectPrice = storage.find((s) => s.type === objectType);
|
|
106
|
+
if (objectPrice) {
|
|
107
|
+
breakdown.push({
|
|
108
|
+
item: `Object Storage (${tierName})`,
|
|
109
|
+
gb: params.objectStorageGB,
|
|
110
|
+
pricePerGB: objectPrice.pricePerUnit,
|
|
111
|
+
monthlyTotal: Math.round(objectPrice.pricePerUnit * params.objectStorageGB * 100) / 100,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
if (params.objectStorageTier === 'archive') {
|
|
115
|
+
notes.push('Archive storage has 90-day minimum retention and ~1 hour restore time');
|
|
116
|
+
}
|
|
117
|
+
else if (params.objectStorageTier === 'infrequent') {
|
|
118
|
+
notes.push('Infrequent Access has 31-day minimum retention');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// File Storage
|
|
122
|
+
if (params.fileStorageGB) {
|
|
123
|
+
const filePrice = storage.find((s) => s.type === 'file-storage');
|
|
124
|
+
if (filePrice) {
|
|
125
|
+
breakdown.push({
|
|
126
|
+
item: 'File Storage',
|
|
127
|
+
gb: params.fileStorageGB,
|
|
128
|
+
pricePerGB: filePrice.pricePerUnit,
|
|
129
|
+
monthlyTotal: Math.round(filePrice.pricePerUnit * params.fileStorageGB * 100) / 100,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const totalMonthly = breakdown.reduce((sum, item) => sum + item.monthlyTotal, 0);
|
|
134
|
+
// Add free tier note
|
|
135
|
+
notes.push('First 200 GB block + 10 GB object + 10 GB archive included in Always Free tier');
|
|
136
|
+
return {
|
|
137
|
+
breakdown,
|
|
138
|
+
totalMonthly: Math.round(totalMonthly * 100) / 100,
|
|
139
|
+
notes,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Compare storage tiers for a given size
|
|
144
|
+
*/
|
|
145
|
+
export function compareStorageTiers(sizeGB) {
|
|
146
|
+
const storage = getStoragePricing();
|
|
147
|
+
const comparisons = storage.map((s) => ({
|
|
148
|
+
tier: s.type,
|
|
149
|
+
type: s.storageType || 'general',
|
|
150
|
+
pricePerGB: s.pricePerUnit,
|
|
151
|
+
monthlyTotal: Math.round(s.pricePerUnit * sizeGB * 100) / 100,
|
|
152
|
+
useCase: getStorageUseCase(s.type),
|
|
153
|
+
}));
|
|
154
|
+
// Sort by price
|
|
155
|
+
comparisons.sort((a, b) => a.monthlyTotal - b.monthlyTotal);
|
|
156
|
+
return {
|
|
157
|
+
comparisons,
|
|
158
|
+
recommendation: `For ${sizeGB} GB: Archive ($${comparisons[0]?.monthlyTotal}/mo) for cold data, Object Storage Standard for frequent access, Block Volume for VM storage`,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function getStorageUseCase(type) {
|
|
162
|
+
const useCases = {
|
|
163
|
+
'block-storage-basic': 'Dev/test environments, non-critical workloads',
|
|
164
|
+
'block-storage-balanced': 'General purpose VM storage (default)',
|
|
165
|
+
'block-storage-high-performance': 'Databases, transaction-heavy applications',
|
|
166
|
+
'block-storage-ultra-high': 'High-performance databases, real-time analytics',
|
|
167
|
+
'object-storage': 'Frequently accessed unstructured data, backups',
|
|
168
|
+
'object-storage-ia': 'Infrequently accessed data (< 1x/month)',
|
|
169
|
+
'object-storage-archive': 'Long-term retention, compliance archives',
|
|
170
|
+
'file-storage': 'Shared NFS storage, legacy application migration',
|
|
171
|
+
'boot-volume': 'VM operating system disks',
|
|
172
|
+
};
|
|
173
|
+
return useCases[type] || 'General storage';
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiBpF;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAmC,EAAE;IAWtE,IAAI,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAElC,iBAAiB;IACjB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjD,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,OAAO,GAAwB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS;QAChC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,YAAY;QAC1B,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;QAC7D,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG;QAC3D,eAAe,EAAG,CAAkC,CAAC,eAAe;QACpE,KAAK,EAAE,CAAC,CAAC,KAAK;KACf,CAAC,CAAC,CAAC;IAEJ,qBAAqB;IACrB,MAAM,QAAQ,GAAG,WAAW,EAA6F,CAAC;IAC1H,MAAM,YAAY,GAAG,QAAQ,EAAE,OAAO;QACpC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,OAAO,CAAC,WAAW,WAAW,QAAQ,CAAC,OAAO,CAAC,aAAa,YAAY,QAAQ,CAAC,OAAO,CAAC,OAAO,UAAU;QACrI,CAAC,CAAC,4BAA4B,CAAC;IAEjC,qCAAqC;IACrC,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAElC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAEhF,OAAO;QACL,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,MAAM;QAC1B,WAAW,EAAE,cAAc,EAAE;QAC7B,YAAY;QACZ,UAAU,EAAE;YACV,QAAQ,EAAE,QAAQ;gBAChB,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,UAAU,eAAe,QAAQ,CAAC,YAAY,MAAM;gBACvF,CAAC,CAAC,KAAK;YACT,eAAe,EAAE,QAAQ;gBACvB,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,UAAU,6BAA6B;gBAC1E,CAAC,CAAC,qCAAqC;SAC1C;QACD,IAAI,EAAE;YACJ,gFAAgF;YAChF,wFAAwF;YACxF,uCAAuC;YACvC,qEAAqE;YACrE,+DAA+D;SAChE;KACF,CAAC;AACJ,CAAC;AAaD,MAAM,UAAU,oBAAoB,CAAC,MAAkC;IAKrE,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,SAAS,GAAkF,EAAE,CAAC;IACpG,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,eAAe;IACf,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,wBAAwB,CAAC,CAAC,UAAU;QACpD,IAAI,QAAQ,GAAG,UAAU,CAAC;QAE1B,QAAQ,MAAM,CAAC,oBAAoB,EAAE,CAAC;YACpC,KAAK,OAAO;gBACV,SAAS,GAAG,qBAAqB,CAAC;gBAClC,QAAQ,GAAG,YAAY,CAAC;gBACxB,MAAM;YACR,KAAK,MAAM;gBACT,SAAS,GAAG,gCAAgC,CAAC;gBAC7C,QAAQ,GAAG,oBAAoB,CAAC;gBAChC,MAAM;YACR,KAAK,OAAO;gBACV,SAAS,GAAG,0BAA0B,CAAC;gBACvC,QAAQ,GAAG,wBAAwB,CAAC;gBACpC,MAAM;QACV,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC7D,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,iBAAiB,QAAQ,GAAG;gBAClC,EAAE,EAAE,MAAM,CAAC,aAAa;gBACxB,UAAU,EAAE,UAAU,CAAC,YAAY;gBACnC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;aACrF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,IAAI,UAAU,GAAG,gBAAgB,CAAC,CAAC,mBAAmB;QACtD,IAAI,QAAQ,GAAG,UAAU,CAAC;QAE1B,QAAQ,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACjC,KAAK,YAAY;gBACf,UAAU,GAAG,mBAAmB,CAAC;gBACjC,QAAQ,GAAG,mBAAmB,CAAC;gBAC/B,MAAM;YACR,KAAK,SAAS;gBACZ,UAAU,GAAG,wBAAwB,CAAC;gBACtC,QAAQ,GAAG,SAAS,CAAC;gBACrB,MAAM;QACV,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAC/D,IAAI,WAAW,EAAE,CAAC;YAChB,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,mBAAmB,QAAQ,GAAG;gBACpC,EAAE,EAAE,MAAM,CAAC,eAAe;gBAC1B,UAAU,EAAE,WAAW,CAAC,YAAY;gBACpC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,GAAG;aACxF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,YAAY,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QACjE,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,cAAc;gBACpB,EAAE,EAAE,MAAM,CAAC,aAAa;gBACxB,UAAU,EAAE,SAAS,CAAC,YAAY;gBAClC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;aACpF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAEjF,qBAAqB;IACrB,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAE7F,OAAO;QACL,SAAS;QACT,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG;QAClD,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAUhD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS;QAChC,UAAU,EAAE,CAAC,CAAC,YAAY;QAC1B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG;QAC7D,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;KACnC,CAAC,CAAC,CAAC;IAEJ,gBAAgB;IAChB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IAE5D,OAAO;QACL,WAAW;QACX,cAAc,EAAE,OAAO,MAAM,kBAAkB,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,8FAA8F;KAC1K,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,QAAQ,GAA2B;QACvC,qBAAqB,EAAE,+CAA+C;QACtE,wBAAwB,EAAE,sCAAsC;QAChE,gCAAgC,EAAE,2CAA2C;QAC7E,0BAA0B,EAAE,iDAAiD;QAC7E,gBAAgB,EAAE,gDAAgD;QAClE,mBAAmB,EAAE,yCAAyC;QAC9D,wBAAwB,EAAE,0CAA0C;QACpE,cAAc,EAAE,kDAAkD;QAClE,aAAa,EAAE,2BAA2B;KAC3C,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC;AAC7C,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OCI Pricing MCP Server - Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
export type OCIRegion = 'us-ashburn-1' | 'us-phoenix-1' | 'us-sanjose-1' | 'us-chicago-1' | 'ca-montreal-1' | 'ca-toronto-1' | 'eu-frankfurt-1' | 'eu-amsterdam-1' | 'eu-zurich-1' | 'eu-madrid-1' | 'eu-marseille-1' | 'eu-milan-1' | 'eu-paris-1' | 'eu-stockholm-1' | 'uk-london-1' | 'uk-cardiff-1' | 'ap-tokyo-1' | 'ap-osaka-1' | 'ap-seoul-1' | 'ap-chuncheon-1' | 'ap-mumbai-1' | 'ap-hyderabad-1' | 'ap-singapore-1' | 'ap-sydney-1' | 'ap-melbourne-1' | 'sa-saopaulo-1' | 'sa-santiago-1' | 'sa-vinhedo-1' | 'me-jeddah-1' | 'me-dubai-1' | 'af-johannesburg-1' | 'il-jerusalem-1';
|
|
5
|
+
export type OCIServiceCategory = 'compute' | 'storage' | 'database' | 'networking' | 'kubernetes' | 'analytics' | 'ai-ml' | 'security' | 'observability' | 'integration' | 'developer-services';
|
|
6
|
+
export type PricingUnit = 'OCPU per hour' | 'GB per month' | 'GB per hour' | 'instance per hour' | 'request' | 'GB transferred' | 'unit per hour' | 'node per hour';
|
|
7
|
+
export type ComputeShapeFamily = 'VM.Standard.E4.Flex' | 'VM.Standard.E5.Flex' | 'VM.Standard.A1.Flex' | 'VM.Standard3.Flex' | 'VM.Optimized3.Flex' | 'VM.DenseIO.E4.Flex' | 'BM.Standard.E4.128' | 'BM.Standard.E5.192' | 'BM.Standard.A1.160' | 'BM.GPU.A10.4' | 'BM.GPU.H100.8' | 'BM.GPU.A100-v2.8';
|
|
8
|
+
export type StorageType = 'block-volume' | 'block-volume-performance' | 'object-storage-standard' | 'object-storage-infrequent' | 'object-storage-archive' | 'file-storage';
|
|
9
|
+
export type DatabaseType = 'autonomous-transaction-processing' | 'autonomous-data-warehouse' | 'autonomous-json' | 'mysql-heatwave' | 'postgresql' | 'nosql' | 'base-database-vm' | 'base-database-bm' | 'exadata-cloud';
|
|
10
|
+
export type NetworkingType = 'load-balancer-flexible' | 'load-balancer-network' | 'vcn' | 'fastconnect-1gbps' | 'fastconnect-10gbps' | 'fastconnect-100gbps' | 'outbound-data-transfer' | 'vpn-connect';
|
|
11
|
+
export interface PricingItem {
|
|
12
|
+
service: string;
|
|
13
|
+
type: string;
|
|
14
|
+
description: string;
|
|
15
|
+
unit: PricingUnit;
|
|
16
|
+
pricePerUnit: number;
|
|
17
|
+
currency: 'USD';
|
|
18
|
+
region?: OCIRegion;
|
|
19
|
+
notes?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ComputeShapePricing extends PricingItem {
|
|
22
|
+
service: 'compute';
|
|
23
|
+
shapeFamily: ComputeShapeFamily;
|
|
24
|
+
ocpuPrice: number;
|
|
25
|
+
memoryPricePerGB: number;
|
|
26
|
+
minOCPU?: number;
|
|
27
|
+
maxOCPU?: number;
|
|
28
|
+
minMemoryGB?: number;
|
|
29
|
+
maxMemoryGB?: number;
|
|
30
|
+
memoryPerOCPURatio?: number;
|
|
31
|
+
gpuCount?: number;
|
|
32
|
+
localStorageGB?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface StoragePricing extends PricingItem {
|
|
35
|
+
service: 'storage';
|
|
36
|
+
storageType: StorageType;
|
|
37
|
+
minCapacityGB?: number;
|
|
38
|
+
maxCapacityGB?: number;
|
|
39
|
+
performanceTier?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface DatabasePricing extends PricingItem {
|
|
42
|
+
service: 'database';
|
|
43
|
+
databaseType: DatabaseType;
|
|
44
|
+
licenseIncluded: boolean;
|
|
45
|
+
byol?: boolean;
|
|
46
|
+
ecpuPrice?: number;
|
|
47
|
+
storagePrice?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface NetworkingPricing extends PricingItem {
|
|
50
|
+
service: 'networking';
|
|
51
|
+
networkingType: NetworkingType;
|
|
52
|
+
bandwidthMbps?: number;
|
|
53
|
+
includedDataGB?: number;
|
|
54
|
+
}
|
|
55
|
+
export interface KubernetesPricing extends PricingItem {
|
|
56
|
+
service: 'kubernetes';
|
|
57
|
+
clusterManagementFee: number;
|
|
58
|
+
nodePoolFee?: number;
|
|
59
|
+
}
|
|
60
|
+
export interface CostEstimateInput {
|
|
61
|
+
compute?: {
|
|
62
|
+
shape: string;
|
|
63
|
+
ocpus: number;
|
|
64
|
+
memoryGB: number;
|
|
65
|
+
hoursPerMonth?: number;
|
|
66
|
+
};
|
|
67
|
+
storage?: {
|
|
68
|
+
blockVolumeGB?: number;
|
|
69
|
+
objectStorageGB?: number;
|
|
70
|
+
archiveStorageGB?: number;
|
|
71
|
+
fileStorageGB?: number;
|
|
72
|
+
};
|
|
73
|
+
database?: {
|
|
74
|
+
type: string;
|
|
75
|
+
ecpus?: number;
|
|
76
|
+
storageGB?: number;
|
|
77
|
+
licenseIncluded?: boolean;
|
|
78
|
+
};
|
|
79
|
+
networking?: {
|
|
80
|
+
loadBalancerBandwidthMbps?: number;
|
|
81
|
+
outboundDataGB?: number;
|
|
82
|
+
};
|
|
83
|
+
region?: OCIRegion;
|
|
84
|
+
}
|
|
85
|
+
export interface CostEstimateResult {
|
|
86
|
+
breakdown: {
|
|
87
|
+
category: string;
|
|
88
|
+
item: string;
|
|
89
|
+
quantity: number;
|
|
90
|
+
unit: string;
|
|
91
|
+
unitPrice: number;
|
|
92
|
+
monthlyTotal: number;
|
|
93
|
+
}[];
|
|
94
|
+
totalMonthly: number;
|
|
95
|
+
currency: 'USD';
|
|
96
|
+
region: OCIRegion;
|
|
97
|
+
notes: string[];
|
|
98
|
+
}
|
|
99
|
+
export interface RegionComparisonResult {
|
|
100
|
+
service: string;
|
|
101
|
+
type: string;
|
|
102
|
+
regions: {
|
|
103
|
+
region: OCIRegion;
|
|
104
|
+
pricePerUnit: number;
|
|
105
|
+
unit: PricingUnit;
|
|
106
|
+
}[];
|
|
107
|
+
cheapestRegion: OCIRegion;
|
|
108
|
+
mostExpensiveRegion: OCIRegion;
|
|
109
|
+
priceDifferencePercent: number;
|
|
110
|
+
}
|
|
111
|
+
export interface ServiceCatalogEntry {
|
|
112
|
+
name: string;
|
|
113
|
+
category: OCIServiceCategory;
|
|
114
|
+
description: string;
|
|
115
|
+
pricingTypes: string[];
|
|
116
|
+
documentationUrl: string;
|
|
117
|
+
}
|
|
118
|
+
export interface PricingMetadata {
|
|
119
|
+
source: string;
|
|
120
|
+
sourceUrl: string;
|
|
121
|
+
verifyUrl: string;
|
|
122
|
+
apiLastUpdated: string;
|
|
123
|
+
bundledDataGenerated: string;
|
|
124
|
+
totalProducts: number;
|
|
125
|
+
totalCategories: number;
|
|
126
|
+
currency: string;
|
|
127
|
+
pricingModel: string;
|
|
128
|
+
notes: string;
|
|
129
|
+
}
|
|
130
|
+
export interface APIProduct {
|
|
131
|
+
partNumber: string;
|
|
132
|
+
displayName: string;
|
|
133
|
+
metricName: string;
|
|
134
|
+
serviceCategory: string;
|
|
135
|
+
priceUSD: number;
|
|
136
|
+
}
|
|
137
|
+
export interface RegionInfo {
|
|
138
|
+
name: string;
|
|
139
|
+
location: string;
|
|
140
|
+
type: string;
|
|
141
|
+
}
|
|
142
|
+
export interface OCIPricingData {
|
|
143
|
+
metadata: PricingMetadata;
|
|
144
|
+
compute: ComputeShapePricing[];
|
|
145
|
+
storage: StoragePricing[];
|
|
146
|
+
database: DatabasePricing[];
|
|
147
|
+
networking: NetworkingPricing[];
|
|
148
|
+
kubernetes: KubernetesPricing[];
|
|
149
|
+
serverless?: PricingItem[];
|
|
150
|
+
containers?: PricingItem[];
|
|
151
|
+
observability?: PricingItem[];
|
|
152
|
+
security?: PricingItem[];
|
|
153
|
+
dataAnalytics?: PricingItem[];
|
|
154
|
+
aiMl?: PricingItem[];
|
|
155
|
+
edge?: PricingItem[];
|
|
156
|
+
products: APIProduct[];
|
|
157
|
+
categories: string[];
|
|
158
|
+
regions: RegionInfo[];
|
|
159
|
+
freeTier: Record<string, unknown>;
|
|
160
|
+
services: ServiceCatalogEntry[];
|
|
161
|
+
}
|
|
162
|
+
//# 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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oci-pricing-mcp",
|
|
3
|
+
"version": "1.2.1",
|
|
4
|
+
"description": "OCI Pricing MCP Server - Model Context Protocol server for Oracle Cloud Infrastructure pricing information",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"oci-pricing-mcp": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"dev": "tsc --watch",
|
|
15
|
+
"prepublishOnly": "npm run build"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"mcp",
|
|
19
|
+
"model-context-protocol",
|
|
20
|
+
"oracle",
|
|
21
|
+
"oci",
|
|
22
|
+
"cloud",
|
|
23
|
+
"pricing",
|
|
24
|
+
"cost",
|
|
25
|
+
"ai",
|
|
26
|
+
"claude"
|
|
27
|
+
],
|
|
28
|
+
"author": {
|
|
29
|
+
"name": "Jason Wilbur",
|
|
30
|
+
"url": "https://jasonwilbur.com"
|
|
31
|
+
},
|
|
32
|
+
"license": "Apache-2.0",
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/jasonwilbur/oci-pricing-mcp"
|
|
36
|
+
},
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=18.0.0"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^20.10.0",
|
|
45
|
+
"typescript": "^5.3.0"
|
|
46
|
+
},
|
|
47
|
+
"files": [
|
|
48
|
+
"dist",
|
|
49
|
+
"README.md",
|
|
50
|
+
"LICENSE",
|
|
51
|
+
"NOTICE"
|
|
52
|
+
]
|
|
53
|
+
}
|