Voltcast MCP Server โ European electricity prices, forecasts & carbon
Model Context Protocol server for
Voltcast: day-ahead electricity prices for 43 European
bidding zones (15-minute native resolution, history to 2015), probabilistic
price forecasts whose accuracy is published daily at
voltcast.com/accuracy, carbon intensity, and
cheapest-window optimization.
Two ways to run it:
1. Hosted endpoint (recommended)
https://voltcast.com/api/mcp
Streamable HTTP transport, protocol 2025-06-18. Server card:
/.well-known/mcp.json.
2. Local stdio server (this repo)
VOLTCAST_API_KEY=your_key npx voltcast-mcp
Or with Docker:
docker build -t voltcast-mcp .
docker run -i -e VOLTCAST_API_KEY=your_key voltcast-mcp
The stdio server is a thin proxy onto the same REST API โ identical tools,
auth and rate limits. It starts and answers introspection without a key;
list_zones works keyless too.
{
"mcpServers": {
"voltcast": {
"command": "npx",
"args": ["voltcast-mcp"],
"env": { "VOLTCAST_API_KEY": "YOUR_API_KEY" }
}
}
}
| Tool | Auth | What it does |
|---|
list_zones | none | The 43-zone registry (codes, names, currencies) |
get_prices | key | Day-ahead prices for a zone/date, 15-minute native |
get_forecast | key | P50 (and P10/P90 on paid tiers) price curve up to 7 days ahead |
get_carbon | key | Carbon intensity + green score from the live generation mix |
get_renewables | key | Wind/solar forecasts (TSO + Voltcast model) vs realized |
cheapest_window | key | Cheapest contiguous window for a load in the next 48h |
Auth
Authorization: Bearer <api key> โ free tier (no card) at
voltcast.com/register. list_zones works
without a key.
Client config
{
"mcpServers": {
"voltcast": {
"url": "https://voltcast.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Honesty, stated plainly
Every forecast the server returns is benchmarked daily against a naive
baseline in public โ losses included. Zones where the model loses are free
to use under the guarantee. Data sources: ENTSO-E Transparency Platform,
SMARD.de (CC BY 4.0), attributed in every response.