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 +159 -0
- package/build/index.d.ts +12 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +434 -0
- package/build/index.js.map +1 -0
- package/package.json +52 -0
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)
|
package/build/index.d.ts
ADDED
|
@@ -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":"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"}
|
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
|
+
}
|