oilpriceapi-mcp 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/README.md ADDED
@@ -0,0 +1,159 @@
1
+ # OilPriceAPI MCP Server
2
+
3
+ Real-time oil, gas, and commodity prices for Claude Desktop and Claude Code via the Model Context Protocol.
4
+
5
+ ## Features
6
+
7
+ - **Real-time prices** for 40+ commodities (oil, gas, coal, refined products)
8
+ - **Natural language queries** - ask for "brent oil" or "natural gas", not codes
9
+ - **Market overviews** - get all prices at once
10
+ - **Price comparisons** - compare Brent vs WTI, US vs European gas
11
+
12
+ ## Installation
13
+
14
+ ### Claude Desktop
15
+
16
+ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
17
+
18
+ ```json
19
+ {
20
+ "mcpServers": {
21
+ "oilpriceapi": {
22
+ "command": "npx",
23
+ "args": ["oilpriceapi-mcp"],
24
+ "env": {
25
+ "OILPRICEAPI_KEY": "your-api-key-here"
26
+ }
27
+ }
28
+ }
29
+ }
30
+ ```
31
+
32
+ ### Claude Code
33
+
34
+ Add to your project's `.mcp.json`:
35
+
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "oilpriceapi": {
40
+ "command": "npx",
41
+ "args": ["oilpriceapi-mcp"],
42
+ "env": {
43
+ "OILPRICEAPI_KEY": "your-api-key-here"
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ Or install globally:
51
+
52
+ ```bash
53
+ npm install -g oilpriceapi-mcp
54
+ ```
55
+
56
+ ## Getting an API Key
57
+
58
+ 1. Sign up at [oilpriceapi.com](https://oilpriceapi.com)
59
+ 2. Get your API key from the dashboard
60
+ 3. Add it to your MCP config as shown above
61
+
62
+ ## Available Tools
63
+
64
+ ### `get_commodity_price`
65
+
66
+ Get the current price of a specific commodity.
67
+
68
+ **Examples:**
69
+ - "What's the current Brent oil price?"
70
+ - "Get the price of natural gas"
71
+ - "How much is WTI crude?"
72
+
73
+ ### `get_market_overview`
74
+
75
+ Get prices for all commodities, optionally filtered by category.
76
+
77
+ **Categories:** `oil`, `gas`, `coal`, `refined`, `all`
78
+
79
+ **Examples:**
80
+ - "Give me a market overview"
81
+ - "Show all oil prices"
82
+ - "What are the current gas prices?"
83
+
84
+ ### `compare_prices`
85
+
86
+ Compare prices between 2-5 commodities.
87
+
88
+ **Examples:**
89
+ - "Compare Brent and WTI prices"
90
+ - "What's the spread between US and European gas?"
91
+
92
+ ### `list_commodities`
93
+
94
+ List all available commodities and their codes.
95
+
96
+ ## Supported Commodities
97
+
98
+ ### Crude Oil
99
+ - Brent Crude (global benchmark)
100
+ - WTI (US benchmark)
101
+ - Urals (Russian)
102
+ - Dubai (Middle East)
103
+
104
+ ### Natural Gas
105
+ - US Henry Hub ($/MMBtu)
106
+ - UK NBP (pence/therm)
107
+ - European TTF (€/MWh)
108
+
109
+ ### Coal
110
+ - Thermal Coal
111
+ - Newcastle Coal (Asia-Pacific)
112
+
113
+ ### Refined Products
114
+ - Diesel
115
+ - Gasoline
116
+ - RBOB Gasoline
117
+ - Jet Fuel
118
+ - Heating Oil
119
+
120
+ ### Other
121
+ - Gold
122
+ - EU Carbon Allowances
123
+ - EUR/USD, GBP/USD exchange rates
124
+
125
+ ## Natural Language Support
126
+
127
+ You don't need to know the exact commodity codes. Just ask naturally:
128
+
129
+ | You say | We understand |
130
+ |---------|---------------|
131
+ | "brent oil", "brent crude" | BRENT_CRUDE_USD |
132
+ | "wti", "us oil", "american oil" | WTI_USD |
133
+ | "natural gas", "gas", "henry hub" | NATURAL_GAS_USD |
134
+ | "european gas", "ttf" | DUTCH_TTF_EUR |
135
+ | "diesel", "diesel fuel" | DIESEL_USD |
136
+ | "gold" | GOLD_USD |
137
+
138
+ ## Development
139
+
140
+ ```bash
141
+ # Install dependencies
142
+ npm install
143
+
144
+ # Build
145
+ npm run build
146
+
147
+ # Run locally
148
+ OILPRICEAPI_KEY=your-key node build/index.js
149
+ ```
150
+
151
+ ## License
152
+
153
+ MIT
154
+
155
+ ## Links
156
+
157
+ - [OilPriceAPI Website](https://oilpriceapi.com)
158
+ - [API Documentation](https://docs.oilpriceapi.com)
159
+ - [MCP Protocol](https://modelcontextprotocol.io)
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * OilPriceAPI MCP Server
4
+ *
5
+ * Provides real-time oil, gas, and commodity prices through the Model Context Protocol.
6
+ * For use with Claude Desktop, Claude Code, and other MCP-compatible clients.
7
+ *
8
+ * @see https://oilpriceapi.com
9
+ * @see https://modelcontextprotocol.io
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
package/build/index.js ADDED
@@ -0,0 +1,434 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * OilPriceAPI MCP Server
4
+ *
5
+ * Provides real-time oil, gas, and commodity prices through the Model Context Protocol.
6
+ * For use with Claude Desktop, Claude Code, and other MCP-compatible clients.
7
+ *
8
+ * @see https://oilpriceapi.com
9
+ * @see https://modelcontextprotocol.io
10
+ */
11
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
12
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
13
+ import { z } from "zod";
14
+ // API Configuration
15
+ const API_BASE = "https://api.oilpriceapi.com";
16
+ const USER_AGENT = "oilpriceapi-mcp/1.0.0";
17
+ // Get API key from environment
18
+ const API_KEY = process.env.OILPRICEAPI_KEY || process.env.OIL_PRICE_API_KEY;
19
+ // Natural language to commodity code mapping
20
+ const COMMODITY_ALIASES = {
21
+ // Crude Oil
22
+ "brent": "BRENT_CRUDE_USD",
23
+ "brent oil": "BRENT_CRUDE_USD",
24
+ "brent crude": "BRENT_CRUDE_USD",
25
+ "brent crude oil": "BRENT_CRUDE_USD",
26
+ "north sea oil": "BRENT_CRUDE_USD",
27
+ "wti": "WTI_USD",
28
+ "wti oil": "WTI_USD",
29
+ "wti crude": "WTI_USD",
30
+ "west texas": "WTI_USD",
31
+ "us oil": "WTI_USD",
32
+ "american oil": "WTI_USD",
33
+ "russian oil": "URALS_CRUDE_USD",
34
+ "urals": "URALS_CRUDE_USD",
35
+ "urals crude": "URALS_CRUDE_USD",
36
+ "dubai": "DUBAI_CRUDE_USD",
37
+ "dubai crude": "DUBAI_CRUDE_USD",
38
+ "dubai oil": "DUBAI_CRUDE_USD",
39
+ "middle east oil": "DUBAI_CRUDE_USD",
40
+ // Natural Gas
41
+ "natural gas": "NATURAL_GAS_USD",
42
+ "gas": "NATURAL_GAS_USD",
43
+ "nat gas": "NATURAL_GAS_USD",
44
+ "henry hub": "NATURAL_GAS_USD",
45
+ "us gas": "NATURAL_GAS_USD",
46
+ "us natural gas": "NATURAL_GAS_USD",
47
+ "uk gas": "NATURAL_GAS_GBP",
48
+ "uk natural gas": "NATURAL_GAS_GBP",
49
+ "british gas": "NATURAL_GAS_GBP",
50
+ "european gas": "DUTCH_TTF_EUR",
51
+ "ttf": "DUTCH_TTF_EUR",
52
+ "dutch ttf": "DUTCH_TTF_EUR",
53
+ "eu gas": "DUTCH_TTF_EUR",
54
+ // Coal
55
+ "coal": "COAL_USD",
56
+ "thermal coal": "COAL_USD",
57
+ "newcastle coal": "NEWCASTLE_COAL_USD",
58
+ "australian coal": "NEWCASTLE_COAL_USD",
59
+ // Refined Products
60
+ "diesel": "DIESEL_USD",
61
+ "diesel fuel": "DIESEL_USD",
62
+ "gasoline": "GASOLINE_USD",
63
+ "petrol": "GASOLINE_USD",
64
+ "gas fuel": "GASOLINE_USD",
65
+ "rbob": "GASOLINE_RBOB_USD",
66
+ "rbob gasoline": "GASOLINE_RBOB_USD",
67
+ "jet fuel": "JET_FUEL_USD",
68
+ "aviation fuel": "JET_FUEL_USD",
69
+ "kerosene": "JET_FUEL_USD",
70
+ "heating oil": "HEATING_OIL_USD",
71
+ // Other
72
+ "gold": "GOLD_USD",
73
+ "carbon": "EU_CARBON_EUR",
74
+ "eu carbon": "EU_CARBON_EUR",
75
+ "carbon credits": "EU_CARBON_EUR",
76
+ "euro": "EUR_USD",
77
+ "eur usd": "EUR_USD",
78
+ "pound": "GBP_USD",
79
+ "gbp usd": "GBP_USD",
80
+ "sterling": "GBP_USD",
81
+ };
82
+ // Commodity metadata for formatting
83
+ const COMMODITY_INFO = {
84
+ "BRENT_CRUDE_USD": { name: "Brent Crude Oil", unit: "barrel" },
85
+ "WTI_USD": { name: "WTI Crude Oil", unit: "barrel" },
86
+ "URALS_CRUDE_USD": { name: "Urals Crude Oil", unit: "barrel" },
87
+ "DUBAI_CRUDE_USD": { name: "Dubai Crude Oil", unit: "barrel" },
88
+ "NATURAL_GAS_USD": { name: "US Natural Gas (Henry Hub)", unit: "MMBtu" },
89
+ "NATURAL_GAS_GBP": { name: "UK Natural Gas", unit: "therm" },
90
+ "DUTCH_TTF_EUR": { name: "European Natural Gas (TTF)", unit: "MWh" },
91
+ "COAL_USD": { name: "Coal", unit: "metric ton" },
92
+ "NEWCASTLE_COAL_USD": { name: "Newcastle Coal", unit: "metric ton" },
93
+ "DIESEL_USD": { name: "Diesel", unit: "gallon" },
94
+ "GASOLINE_USD": { name: "Gasoline", unit: "gallon" },
95
+ "GASOLINE_RBOB_USD": { name: "RBOB Gasoline", unit: "gallon" },
96
+ "JET_FUEL_USD": { name: "Jet Fuel", unit: "gallon" },
97
+ "HEATING_OIL_USD": { name: "Heating Oil", unit: "gallon" },
98
+ "GOLD_USD": { name: "Gold", unit: "troy oz" },
99
+ "EU_CARBON_EUR": { name: "EU Carbon Allowances", unit: "metric ton CO2" },
100
+ "EUR_USD": { name: "Euro to USD", unit: "rate" },
101
+ "GBP_USD": { name: "British Pound to USD", unit: "rate" },
102
+ };
103
+ // Available commodity codes
104
+ const COMMODITY_CODES = [
105
+ "BRENT_CRUDE_USD",
106
+ "WTI_USD",
107
+ "URALS_CRUDE_USD",
108
+ "DUBAI_CRUDE_USD",
109
+ "NATURAL_GAS_USD",
110
+ "NATURAL_GAS_GBP",
111
+ "DUTCH_TTF_EUR",
112
+ "COAL_USD",
113
+ "NEWCASTLE_COAL_USD",
114
+ "DIESEL_USD",
115
+ "GASOLINE_USD",
116
+ "GASOLINE_RBOB_USD",
117
+ "JET_FUEL_USD",
118
+ "HEATING_OIL_USD",
119
+ "GOLD_USD",
120
+ "EU_CARBON_EUR",
121
+ "EUR_USD",
122
+ "GBP_USD",
123
+ ];
124
+ // Create server instance
125
+ const server = new McpServer({
126
+ name: "oilpriceapi",
127
+ version: "1.0.0",
128
+ });
129
+ /**
130
+ * Resolve a natural language commodity name to its API code
131
+ */
132
+ function resolveCommodityCode(input) {
133
+ const normalized = input.toLowerCase().trim();
134
+ // Check if it's already a valid code
135
+ if (COMMODITY_CODES.includes(normalized.toUpperCase())) {
136
+ return normalized.toUpperCase();
137
+ }
138
+ // Try alias mapping
139
+ const mapped = COMMODITY_ALIASES[normalized];
140
+ if (mapped) {
141
+ return mapped;
142
+ }
143
+ // Fuzzy match - check if input contains key words
144
+ for (const [alias, code] of Object.entries(COMMODITY_ALIASES)) {
145
+ if (normalized.includes(alias) || alias.includes(normalized)) {
146
+ return code;
147
+ }
148
+ }
149
+ // Default to Brent if no match
150
+ return "BRENT_CRUDE_USD";
151
+ }
152
+ /**
153
+ * Format a price for display
154
+ */
155
+ function formatPrice(data) {
156
+ const info = COMMODITY_INFO[data.code] || { name: data.code, unit: "unit" };
157
+ const currencySymbol = data.currency === "EUR" ? "€" :
158
+ data.currency === "GBP" || data.currency === "GBp" ? "£" : "$";
159
+ let result = `**${info.name}**: ${currencySymbol}${data.price.toFixed(2)}/${info.unit}`;
160
+ if (data.change_24h !== undefined && data.change_24h_percent !== undefined) {
161
+ const sign = data.change_24h >= 0 ? "+" : "";
162
+ result += `\n- 24h Change: ${sign}${currencySymbol}${data.change_24h.toFixed(2)} (${sign}${data.change_24h_percent.toFixed(2)}%)`;
163
+ }
164
+ const timestamp = data.updated_at || data.created_at;
165
+ if (timestamp) {
166
+ const date = new Date(timestamp);
167
+ result += `\n- Updated: ${date.toLocaleString("en-US", {
168
+ dateStyle: "medium",
169
+ timeStyle: "short",
170
+ timeZone: "UTC"
171
+ })} UTC`;
172
+ }
173
+ return result;
174
+ }
175
+ /**
176
+ * Make API request to OilPriceAPI
177
+ */
178
+ async function makeApiRequest(endpoint) {
179
+ const headers = {
180
+ "User-Agent": USER_AGENT,
181
+ "Accept": "application/json",
182
+ };
183
+ if (API_KEY) {
184
+ headers["Authorization"] = `Bearer ${API_KEY}`;
185
+ }
186
+ try {
187
+ const response = await fetch(`${API_BASE}${endpoint}`, { headers });
188
+ if (!response.ok) {
189
+ if (response.status === 401) {
190
+ console.error("Authentication failed. Check OILPRICEAPI_KEY environment variable.");
191
+ }
192
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
193
+ }
194
+ return await response.json();
195
+ }
196
+ catch (error) {
197
+ console.error(`API request failed: ${endpoint}`, error);
198
+ return null;
199
+ }
200
+ }
201
+ // Register Tools
202
+ /**
203
+ * Get current price of a specific commodity
204
+ */
205
+ server.tool("get_commodity_price", "Get the current real-time price of an oil, gas, or energy commodity. Use natural language like 'brent oil', 'natural gas', 'wti', or 'diesel'.", {
206
+ commodity: z
207
+ .string()
208
+ .describe("Commodity name or code (e.g., 'brent oil', 'natural gas', 'WTI_USD', 'diesel')"),
209
+ }, async ({ commodity }) => {
210
+ const code = resolveCommodityCode(commodity);
211
+ const response = await makeApiRequest(`/v1/prices/latest?by_code=${code}`);
212
+ if (!response || response.status !== "success") {
213
+ return {
214
+ content: [
215
+ {
216
+ type: "text",
217
+ text: `Failed to retrieve price for ${commodity}. Please try again or check if the commodity is supported.`,
218
+ },
219
+ ],
220
+ };
221
+ }
222
+ const formatted = formatPrice(response.data);
223
+ return {
224
+ content: [
225
+ {
226
+ type: "text",
227
+ text: `${formatted}\n\n_Data from [OilPriceAPI](https://oilpriceapi.com)_`,
228
+ },
229
+ ],
230
+ };
231
+ });
232
+ /**
233
+ * Get all commodity prices (market overview)
234
+ */
235
+ server.tool("get_market_overview", "Get current prices for all tracked commodities. Returns a market overview with oil, gas, coal, and refined product prices.", {
236
+ category: z
237
+ .enum(["all", "oil", "gas", "coal", "refined"])
238
+ .optional()
239
+ .describe("Filter by commodity category (default: all)"),
240
+ }, async ({ category = "all" }) => {
241
+ const response = await makeApiRequest("/v1/prices/all");
242
+ if (!response || response.status !== "success") {
243
+ return {
244
+ content: [
245
+ {
246
+ type: "text",
247
+ text: "Failed to retrieve market data. Please try again.",
248
+ },
249
+ ],
250
+ };
251
+ }
252
+ const prices = response.data.data.prices;
253
+ // Category filters
254
+ const categoryFilters = {
255
+ oil: ["BRENT_CRUDE_USD", "WTI_USD", "URALS_CRUDE_USD", "DUBAI_CRUDE_USD"],
256
+ gas: ["NATURAL_GAS_USD", "NATURAL_GAS_GBP", "DUTCH_TTF_EUR"],
257
+ coal: ["COAL_USD", "NEWCASTLE_COAL_USD"],
258
+ refined: ["DIESEL_USD", "GASOLINE_USD", "GASOLINE_RBOB_USD", "JET_FUEL_USD", "HEATING_OIL_USD"],
259
+ };
260
+ let filteredCodes;
261
+ if (category === "all") {
262
+ filteredCodes = Object.keys(prices);
263
+ }
264
+ else {
265
+ filteredCodes = categoryFilters[category] || [];
266
+ }
267
+ const sections = ["# Energy Market Overview\n"];
268
+ // Group by category
269
+ const groupedPrices = {
270
+ "Crude Oil": [],
271
+ "Natural Gas": [],
272
+ "Coal": [],
273
+ "Refined Products": [],
274
+ "Other": [],
275
+ };
276
+ for (const code of filteredCodes) {
277
+ const data = prices[code];
278
+ if (!data)
279
+ continue;
280
+ if (code.includes("CRUDE") || code === "WTI_USD") {
281
+ groupedPrices["Crude Oil"].push(data);
282
+ }
283
+ else if (code.includes("GAS") || code.includes("TTF")) {
284
+ groupedPrices["Natural Gas"].push(data);
285
+ }
286
+ else if (code.includes("COAL")) {
287
+ groupedPrices["Coal"].push(data);
288
+ }
289
+ else if (["DIESEL_USD", "GASOLINE_USD", "GASOLINE_RBOB_USD", "JET_FUEL_USD", "HEATING_OIL_USD", "ULSD_DIESEL_USD"].includes(code)) {
290
+ groupedPrices["Refined Products"].push(data);
291
+ }
292
+ else {
293
+ groupedPrices["Other"].push(data);
294
+ }
295
+ }
296
+ for (const [group, items] of Object.entries(groupedPrices)) {
297
+ if (items.length === 0)
298
+ continue;
299
+ sections.push(`## ${group}\n`);
300
+ for (const item of items) {
301
+ const info = COMMODITY_INFO[item.code] || { name: item.code, unit: "unit" };
302
+ const currencySymbol = item.currency === "EUR" ? "€" :
303
+ item.currency === "GBP" || item.currency === "GBp" ? "£" : "$";
304
+ let line = `- **${info.name}**: ${currencySymbol}${item.price.toFixed(2)}`;
305
+ if (item.change_24h_percent !== undefined) {
306
+ const sign = item.change_24h_percent >= 0 ? "+" : "";
307
+ line += ` (${sign}${item.change_24h_percent.toFixed(1)}%)`;
308
+ }
309
+ sections.push(line);
310
+ }
311
+ sections.push("");
312
+ }
313
+ sections.push(`_Updated: ${new Date(response.data.data.timestamp).toLocaleString("en-US", {
314
+ dateStyle: "medium",
315
+ timeStyle: "short",
316
+ timeZone: "UTC"
317
+ })} UTC | Data from [OilPriceAPI](https://oilpriceapi.com)_`);
318
+ return {
319
+ content: [
320
+ {
321
+ type: "text",
322
+ text: sections.join("\n"),
323
+ },
324
+ ],
325
+ };
326
+ });
327
+ /**
328
+ * Compare prices between commodities
329
+ */
330
+ server.tool("compare_prices", "Compare current prices between multiple commodities (e.g., Brent vs WTI, US gas vs European gas).", {
331
+ commodities: z
332
+ .array(z.string())
333
+ .min(2)
334
+ .max(5)
335
+ .describe("List of commodities to compare (2-5 items)"),
336
+ }, async ({ commodities }) => {
337
+ const codes = commodities.map(resolveCommodityCode);
338
+ const results = [];
339
+ for (const code of codes) {
340
+ const response = await makeApiRequest(`/v1/prices/latest?by_code=${code}`);
341
+ if (response?.status === "success") {
342
+ results.push(response.data);
343
+ }
344
+ }
345
+ if (results.length < 2) {
346
+ return {
347
+ content: [
348
+ {
349
+ type: "text",
350
+ text: "Could not retrieve enough price data for comparison. Please check commodity names.",
351
+ },
352
+ ],
353
+ };
354
+ }
355
+ const sections = ["# Price Comparison\n"];
356
+ for (const data of results) {
357
+ sections.push(formatPrice(data));
358
+ sections.push("");
359
+ }
360
+ // Calculate spread if comparing similar commodities
361
+ if (results.length === 2 && results[0].currency === results[1].currency) {
362
+ const spread = Math.abs(results[0].price - results[1].price);
363
+ const info0 = COMMODITY_INFO[results[0].code]?.name || results[0].code;
364
+ const info1 = COMMODITY_INFO[results[1].code]?.name || results[1].code;
365
+ sections.push(`**Spread**: $${spread.toFixed(2)} (${info0} vs ${info1})`);
366
+ }
367
+ sections.push(`\n_Data from [OilPriceAPI](https://oilpriceapi.com)_`);
368
+ return {
369
+ content: [
370
+ {
371
+ type: "text",
372
+ text: sections.join("\n"),
373
+ },
374
+ ],
375
+ };
376
+ });
377
+ /**
378
+ * List available commodities
379
+ */
380
+ server.tool("list_commodities", "List all available commodities that can be queried for prices.", {}, async () => {
381
+ const sections = ["# Available Commodities\n"];
382
+ sections.push("## Crude Oil");
383
+ sections.push("- `BRENT_CRUDE_USD` - Brent Crude (global benchmark)");
384
+ sections.push("- `WTI_USD` - West Texas Intermediate (US benchmark)");
385
+ sections.push("- `URALS_CRUDE_USD` - Urals Crude (Russian)");
386
+ sections.push("- `DUBAI_CRUDE_USD` - Dubai Crude (Middle East)");
387
+ sections.push("");
388
+ sections.push("## Natural Gas");
389
+ sections.push("- `NATURAL_GAS_USD` - US Henry Hub ($/MMBtu)");
390
+ sections.push("- `NATURAL_GAS_GBP` - UK NBP (pence/therm)");
391
+ sections.push("- `DUTCH_TTF_EUR` - European TTF (€/MWh)");
392
+ sections.push("");
393
+ sections.push("## Coal");
394
+ sections.push("- `COAL_USD` - Thermal Coal");
395
+ sections.push("- `NEWCASTLE_COAL_USD` - Newcastle (Asia-Pacific)");
396
+ sections.push("");
397
+ sections.push("## Refined Products");
398
+ sections.push("- `DIESEL_USD` - Diesel");
399
+ sections.push("- `GASOLINE_USD` - Gasoline");
400
+ sections.push("- `GASOLINE_RBOB_USD` - RBOB Gasoline");
401
+ sections.push("- `JET_FUEL_USD` - Jet Fuel");
402
+ sections.push("- `HEATING_OIL_USD` - Heating Oil");
403
+ sections.push("");
404
+ sections.push("## Other");
405
+ sections.push("- `GOLD_USD` - Gold");
406
+ sections.push("- `EU_CARBON_EUR` - EU Carbon Allowances");
407
+ sections.push("- `EUR_USD` - Euro to USD");
408
+ sections.push("- `GBP_USD` - British Pound to USD");
409
+ sections.push("");
410
+ sections.push("_You can use natural language like 'brent oil' or 'natural gas' - I'll translate it to the right code._");
411
+ return {
412
+ content: [
413
+ {
414
+ type: "text",
415
+ text: sections.join("\n"),
416
+ },
417
+ ],
418
+ };
419
+ });
420
+ // Main entry point
421
+ async function main() {
422
+ // Check for API key
423
+ if (!API_KEY) {
424
+ console.error("Warning: OILPRICEAPI_KEY not set. Some features may be limited.");
425
+ }
426
+ const transport = new StdioServerTransport();
427
+ await server.connect(transport);
428
+ console.error("OilPriceAPI MCP Server running on stdio");
429
+ }
430
+ main().catch((error) => {
431
+ console.error("Fatal error:", error);
432
+ process.exit(1);
433
+ });
434
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oBAAoB;AACpB,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAC/C,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAE3C,+BAA+B;AAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAE7E,6CAA6C;AAC7C,MAAM,iBAAiB,GAA2B;IAChD,YAAY;IACZ,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,iBAAiB;IAC9B,aAAa,EAAE,iBAAiB;IAChC,iBAAiB,EAAE,iBAAiB;IACpC,eAAe,EAAE,iBAAiB;IAClC,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,SAAS;IACvB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,SAAS;IACzB,aAAa,EAAE,iBAAiB;IAChC,OAAO,EAAE,iBAAiB;IAC1B,aAAa,EAAE,iBAAiB;IAChC,OAAO,EAAE,iBAAiB;IAC1B,aAAa,EAAE,iBAAiB;IAChC,WAAW,EAAE,iBAAiB;IAC9B,iBAAiB,EAAE,iBAAiB;IAEpC,cAAc;IACd,aAAa,EAAE,iBAAiB;IAChC,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,iBAAiB;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,QAAQ,EAAE,iBAAiB;IAC3B,gBAAgB,EAAE,iBAAiB;IACnC,QAAQ,EAAE,iBAAiB;IAC3B,gBAAgB,EAAE,iBAAiB;IACnC,aAAa,EAAE,iBAAiB;IAChC,cAAc,EAAE,eAAe;IAC/B,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,eAAe;IAC5B,QAAQ,EAAE,eAAe;IAEzB,OAAO;IACP,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE,UAAU;IAC1B,gBAAgB,EAAE,oBAAoB;IACtC,iBAAiB,EAAE,oBAAoB;IAEvC,mBAAmB;IACnB,QAAQ,EAAE,YAAY;IACtB,aAAa,EAAE,YAAY;IAC3B,UAAU,EAAE,cAAc;IAC1B,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,cAAc;IAC1B,MAAM,EAAE,mBAAmB;IAC3B,eAAe,EAAE,mBAAmB;IACpC,UAAU,EAAE,cAAc;IAC1B,eAAe,EAAE,cAAc;IAC/B,UAAU,EAAE,cAAc;IAC1B,aAAa,EAAE,iBAAiB;IAEhC,QAAQ;IACR,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,eAAe;IACzB,WAAW,EAAE,eAAe;IAC5B,gBAAgB,EAAE,eAAe;IACjC,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF,oCAAoC;AACpC,MAAM,cAAc,GAAmD;IACrE,iBAAiB,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9D,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpD,iBAAiB,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9D,iBAAiB,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9D,iBAAiB,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,OAAO,EAAE;IACxE,iBAAiB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;IAC5D,eAAe,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,KAAK,EAAE;IACpE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;IAChD,oBAAoB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE;IACpE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChD,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpD,mBAAmB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9D,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpD,iBAAiB,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1D,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IAC7C,eAAe,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACzE,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE;IAChD,SAAS,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE;CAC1D,CAAC;AAEF,4BAA4B;AAC5B,MAAM,eAAe,GAAG;IACtB,iBAAiB;IACjB,SAAS;IACT,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,UAAU;IACV,oBAAoB;IACpB,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,SAAS;IACT,SAAS;CACD,CAAC;AAwBX,yBAAyB;AACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAE9C,qCAAqC;IACrC,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAoC,CAAC,EAAE,CAAC;QACzF,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC9D,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAe;IAClC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEtF,IAAI,MAAM,GAAG,KAAK,IAAI,CAAC,IAAI,OAAO,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IAExF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,mBAAmB,IAAI,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACpI,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;IACrD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,IAAI,gBAAgB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACrD,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,KAAK;SAChB,CAAC,MAAM,CAAC;IACX,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAI,QAAgB;IAC/C,MAAM,OAAO,GAA2B;QACtC,YAAY,EAAE,UAAU;QACxB,QAAQ,EAAE,kBAAkB;KAC7B,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,OAAO,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAO,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,iBAAiB;AAEjB;;GAEG;AACH,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,gJAAgJ,EAChJ;IACE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CAAC,gFAAgF,CAAC;CAC9F,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;IACtB,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,6BAA6B,IAAI,EAAE,CACpC,CAAC;IAEF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,gCAAgC,SAAS,4DAA4D;iBAC5G;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,GAAG,SAAS,wDAAwD;aAC3E;SACF;KACF,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,4HAA4H,EAC5H;IACE,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;SAC9C,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,EACD,KAAK,EAAE,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,gBAAgB,CACjB,CAAC;IAEF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,mDAAmD;iBAC1D;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAEzC,mBAAmB;IACnB,MAAM,eAAe,GAA6B;QAChD,GAAG,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;QACzE,GAAG,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,CAAC;QAC5D,IAAI,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC;QACxC,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,iBAAiB,CAAC;KAChG,CAAC;IAEF,IAAI,aAAuB,CAAC;IAC5B,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,QAAQ,GAAa,CAAC,4BAA4B,CAAC,CAAC;IAE1D,oBAAoB;IACpB,MAAM,aAAa,GAAgC;QACjD,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;QACjB,MAAM,EAAE,EAAE;QACV,kBAAkB,EAAE,EAAE;QACtB,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACjD,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpI,aAAa,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAEtF,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,OAAO,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAE3E,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7D,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;QACxF,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,OAAO;QAClB,QAAQ,EAAE,KAAK;KAChB,CAAC,0DAA0D,CAAC,CAAC;IAE9D,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1B;SACF;KACF,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,mGAAmG,EACnG;IACE,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,4CAA4C,CAAC;CAC1D,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;IACxB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpD,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,6BAA6B,IAAI,EAAE,CACpC,CAAC;QAEF,IAAI,QAAQ,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oFAAoF;iBAC3F;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,oDAAoD;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IAEtE,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1B;SACF;KACF,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gEAAgE,EAChE,EAAE,EACF,KAAK,IAAI,EAAE;IACT,MAAM,QAAQ,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAE/C,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACtE,QAAQ,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACtE,QAAQ,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC5D,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvD,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC1D,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,QAAQ,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC;IAEzH,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1B;SACF;KACF,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,mBAAmB;AACnB,KAAK,UAAU,IAAI;IACjB,oBAAoB;IACpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC3D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "oilpriceapi-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for real-time oil, gas, and commodity prices from OilPriceAPI",
5
+ "type": "module",
6
+ "bin": {
7
+ "oilpriceapi-mcp": "./build/index.js"
8
+ },
9
+ "main": "./build/index.js",
10
+ "scripts": {
11
+ "build": "tsc && chmod 755 build/index.js",
12
+ "dev": "tsc --watch",
13
+ "start": "node build/index.js",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "files": [
17
+ "build"
18
+ ],
19
+ "keywords": [
20
+ "mcp",
21
+ "model-context-protocol",
22
+ "oil-prices",
23
+ "commodity-prices",
24
+ "energy",
25
+ "brent-crude",
26
+ "wti",
27
+ "natural-gas",
28
+ "claude",
29
+ "anthropic"
30
+ ],
31
+ "author": "OilPriceAPI <support@oilpriceapi.com>",
32
+ "license": "MIT",
33
+ "homepage": "https://oilpriceapi.com",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/OilpriceAPI/mcp-server.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/OilpriceAPI/mcp-server/issues"
40
+ },
41
+ "engines": {
42
+ "node": ">=18.0.0"
43
+ },
44
+ "dependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.0.0",
46
+ "zod": "^3.23.0"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^20.0.0",
50
+ "typescript": "^5.0.0"
51
+ }
52
+ }