← Registry

API Tools

entsoemcp.com

Provides access to ENTSO-E electricity market data, including bidding zones, production types, and time-series queries for day-ahead prices.

1 endpoint14 known toolsFirst detected August 29, 2026Last detected August 29, 2026

ENDPOINT 1

https://entsoemcp.com/mcp

No auth detected

MCP server metadata

Name
MCP Energy Data
Version
1.0
Capabilities
experimentalloggingprompts.listChangedresources.listChangedtools.listChangedextensions.io.modelcontextprotocol/ui
Server instructions

ENTSO-E European power-market data: prices, load, generation, cross-border flows, outages. Hot-path is DuckDB-over-Parquet — queries are sub-second over the cached ingest. Use `data_coverage` before assuming a recent date is landed. DATE CONVENTION (read before every series query): • Default: `start`/`end` are UTC. `start` is INCLUSIVE, `end` is EXCLUSIVE — i.e. ts_utc ∈ [start, end). • For 'all of April 2026' use start=2026-04-01, end=2026-05-01 (NOT end=2026-04-30 — that drops April 30 entirely, plus any local-time hours of April that fall on UTC dates outside the window for non-UTC zones). • For 'yesterday' use start=YESTERDAY, end=TODAY. MARKET-DAY CONVENTION (use this for any 'what was the price on day X' question): • The SDAC pan-European day-ahead auction defines its delivery day on a CET/CEST-aligned 24-hour grid for every coupled bidding zone — same UTC window for DE_LU, ES, GR, FI, PT, etc. (EPEX SPOT MRC process: 'All timings indicated in this document are CET timings'). UTC midnights slice off the last 1–2 hours of the real market day and pull in 1–2 from the next. • For market-day questions ('yesterday's DE_LU baseload', 'May 2026 ES capture rate'), pass tz='Europe/Berlin' so the window aligns to the auction's delivery day. Example: get_day_ahead_prices(zone='DE_LU', start='2026-05-11', end='2026-05-12', tz='Europe/Berlin') returns exactly the 24 SDAC delivery hours for May 11. • For per-zone-local-clock questions (rare; consumer-style: 'when was the consumption peak in Spain yesterday in Madrid time?') pass tz='local' — resolves to the zone's own IANA tz (Europe/Madrid for ES, etc.), NOT the auction grid. • For zone-agnostic / cross-time-zone analysis, keep the UTC default. • Responses always include a `period` field with start_utc, end_utc, duration_hours, and (when a zone is involved) start_local/end_local — verify duration_hours matches your intent (a 30-day month is 720 h). • aggregation='daily'|'monthly' buckets follow the resolved tz: UTC by default; with tz= set, buckets align to that tz's day/month and are labeled by the local period start as a plain 'YYYY-MM-DD' string (the period block echoes bucket_tz). Market-day daily means = tz='Europe/Berlin' + aggregation='daily' in one call. DATA RESOLUTION (read before per-hour math): • Most endpoints publish at PT60M (one row per hour). Some zones have rolled over to MTU=15min (PT15M) for select endpoints — notably `day_ahead_price` for DE_LU, and `actual_load`/`generation_per_type` across many zones. Data is stored at the native resolution it was published at. • For day-ahead prices specifically: the auction still clears HOURLY, so the 4 quarter rows of an hour all carry the same price value. An hourly AVG of PT15M DA prices equals the original hourly price; a SUM would 4× over-count. • For per-hour math on raw rows: aggregate to hourly first via `DATE_TRUNC('hour', ts_utc)` + AVG, THEN operate. The `get_derivation` tools handle this internally — `capture_price`, `negative_price_hours`, `residual_load`, `res_share`, `tb_spread` all aggregate to hourly before counting/averaging so the per-hour math is consistent across zones. • For raw-row consumers: check the response row count vs expected hours. 2880 rows for a 720-hour April → PT15M storage; 720 rows → PT60M. Use `aggregation='hourly'` on `get_series` (or the `/api/series` / `/download` query param) to collapse to one row per hour at query time, regardless of native storage.

Known tools 14

list_zones

List registered ENTSO-E bidding zones.

Inferred read-only
list_endpoints

List supported ENTSO-E endpoint families.

Inferred read-only
list_psr_types

List production-type (psr_type) codes.

Inferred read-only
get_series

Generic time-series query for ANY registered series endpoint.

Inferred read-only
get_day_ahead_prices

Day-ahead clearing price (EUR/MWh) for a bidding zone.

Inferred read-only
get_tb_spread

Top-Bottom (TBx) spread — daily battery-arbitrage benchmark.

Inferred read-only
get_load

Actual or forecast load (MW).

Inferred read-only
get_generation

Aggregated generation (MW) per production type.

Inferred read-only
get_crossborder_flow

Cross-border physical flow (MW) between two adjacent zones.

Inferred read-only
get_outages

Generation-unit unavailability events (UMM).

Inferred read-only
compare_zones

Compare one endpoint across multiple zones.

Inferred read-only
data_coverage

Show ingest coverage and lag for (endpoint × zone) — call before queries if you're not sure whether the data is landed yet.

Inferred read-only
list_derivations

List computed-metric derivations available via get_derivation().

Inferred read-only
get_derivation

Compute **capture price**, **capture rate** (a.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.mcp-energy-data]
url = "https://entsoemcp.com/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "mcp-energy-data": {
      "type": "http",
      "url": "https://entsoemcp.com/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: mcp-energy-data
Remote MCP URL: https://entsoemcp.com/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "mcp-energy-data": {
      "url": "https://entsoemcp.com/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "mcp-energy-data": {
      "type": "http",
      "url": "https://entsoemcp.com/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "mcp-energy-data",
  "transport": "streamable-http",
  "url": "https://entsoemcp.com/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.