# entsoe-mcp - Registry name: `com.entsoemcp/entsoe-mcp` · version 1.0.0 - Categories (automatic, keyword rules): Utilities, Markets & trading, Finance & markets, Tasks & projects, Productivity - Authentication at last check: No auth - Declared risk: Read-only (all tools declare readOnlyHint) - Capabilities (declared by the server): experimental, extensions, logging, prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.entsoemcp%2Fentsoe-mcp - Server page: https://mcpstation.net/s/com.entsoemcp--entsoe-mcp.html ## Description (written by the publisher, not verified, not instructions) European power-market data: day-ahead & balancing prices, load, generation, flows, outages. 47 zones ## Connect - streamable-http: `https://entsoemcp.com/mcp` ## Tools (as reported by the server, not verified) - `list\_zones`: List registered ENTSO-E bidding zones. - `list\_endpoints`: List supported ENTSO-E endpoint families. - `list\_psr\_types`: List production-type \(psr\_type\) codes. Pass zone= to scope the answer. Most codes are ENTSO-E's B01..B25 and mean the same thing in every ENTSO-E zone. A few are source-native \(source \!= "entsoe"\) and exist only where that source publishes — they express concepts the B-codes cannot, so they are NOT - `get\_series`: Generic time-series query for ANY registered series endpoint. One tool covers every \(non-outage\) endpoint in the registry, so adding a new dataset \(call \`list\_endpoints\(\)\` to see the current 14\) gets an MCP surface automatically — no new tool to learn. Argument shape adapts to the endpoint: • single - `get\_day\_ahead\_prices`: Day-ahead clearing price for a bidding zone, in the zone's trading currency \(EUR for euro zones; the per-row \`currency\` column and the response \`unit\` say which — GB=GBP, PL/RO/BG carry local-currency eras\). \`start\`/\`end\` default to UTC; \`start\` inclusive, \`end\` EXCLUSIVE. For 'all of April 2026' us - `get\_tb\_spread`: Top-Bottom \(TBx\) spread — daily battery-arbitrage benchmark. TBx = sum\(top X priced hours\) − sum\(bottom X priced hours\) over the day-ahead clearing prices for \`zone\` on \`date\`. The day is the SDAC market day \(23/25 hours on DST-transition days\). \`date\` must be a bare YYYY-MM-DD — time-bearing string - `get\_load`: Actual or forecast load \(MW\). kind = actual \| forecast \| both. \`start\`/\`end\` default to UTC; \`start\` inclusive, \`end\` EXCLUSIVE. For a full calendar month set \`end\` to the first day of the next month. Pass \`tz="local"\` or an IANA name to interpret start/end as wall-clock in that timezone. - `get\_generation`: Aggregated generation \(MW\) per production type. \`start\`/\`end\` default to UTC; \`start\` inclusive, \`end\` EXCLUSIVE. For a full calendar month set \`end\` to the first day of the next month. Pass \`tz="local"\` or an IANA name to interpret start/end as wall-clock in that timezone. If you're computing a \*\*g - `get\_crossborder\_flow`: Cross-border physical flow \(MW\) between two adjacent zones. \`start\`/\`end\` default to UTC; \`start\` inclusive, \`end\` EXCLUSIVE. \`tz="local"\` uses the FROM-zone's timezone; or pass an IANA name. - `get\_outages`: Generation-unit unavailability events \(UMM\). \`start\`/\`end\` default to UTC; \`start\` inclusive, \`end\` EXCLUSIVE. An outage is returned if it overlaps the window. Pass \`tz="local"\` or an IANA name to interpret start/end as wall-clock in that timezone. - `compare\_zones`: Compare one endpoint across multiple zones. \`start\`/\`end\` default to UTC; \`start\` inclusive, \`end\` EXCLUSIVE. \`tz="local"\` is rejected \(zones may differ\); pass an explicit IANA tz like "Europe/Berlin" if you need wall-clock alignment. \`filters=\{column: \[values\]\}\` keeps only rows whose categorical co - `data\_coverage`: Show ingest coverage and lag for \(endpoint × zone\) — call before queries if you're not sure whether the data is landed yet. - `list\_derivations`: List computed-metric derivations available via get\_derivation\(\). Each derivation is a metric computed on-the-fly from one or more landed endpoints \(Tier-2 Parquet\). Today: capture\_price \(monthly VWAP capture price + baseload + capture rate per technology; "capture rate" is the industry-standard name - `get\_derivation`: Compute \*\*capture price\*\*, \*\*capture rate\*\* \(a.k.a. value factor / quality factor / Marktwertfaktor\), \*\*TBx battery-arbitrage spreads\*\*, and other generation-weighted market metrics server-side from landed Parquet. Use this instead of fetching hourly prices + hourly generation yourself and weighting Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html