BFE energy dashboard, ElCom tariffs, public consumption data
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
MCP server for Swiss electricity data β three official sources, twelve tools, zero authentication.
π Read this in your language: π©πͺ Deutsch
Part of the Swiss Public Data MCP Portfolio β a coordinated set of MCP servers for Swiss public administration.
"How have ewz electricity tariffs for a typical school building (consumption category C3, β150'000 kWh/a) developed since 2019, and how do they compare to the Swiss median?"
A single conversation calls tariff_get_by_municipality (bfs_nr=261, category="C3") + tariff_get_median_swiss and returns a year-by-year comparison with full provenance β ready for a GeschΓ€ftsleitung slide.
Three official Swiss data sources combined into one MCP server, each with its own dedicated tool group:
| Source | What it provides | Provenance |
|---|---|---|
| Energiedashboard.ch (Bundesamt fΓΌr Energie) | National production mix, consumption forecast, storage-lake fill, consumer price index | live_api |
| ElCom electricity-price cubes (via LINDAS SPARQL) | Tariffs per municipality, category, year, with full breakdown (energy + grid usage + KEV + Abgaben) | sparql |
| opendata.swiss + Stadt ZΓΌrich OGD (CKAN) | Dataset discovery for raw time series (e.g. quarter-hour NE5/NE7 consumption) | live_api |
No authentication required. All endpoints are public Swiss OGD.
dashboard_* β Energiedashboard.ch (BFE)dashboard_get_production_mix β Production mix by year (TWh + %): Kernkraft, Wasserkraft, PV, Wind, thermal.dashboard_get_consumption_forecast β Current consumption forecast + 5-day outlook + 5-year envelope.dashboard_get_storage_lakes β Speichersee fill level (CH or per region: Wallis, Tessin, GraubΓΌnden, Zentral/Ost) β critical winter-supply indicator.dashboard_get_consumer_price_index β Endverbraucher-Strompreis-Index (2020-01-01 = 100).tariff_* β ElCom (via LINDAS SPARQL)tariff_list_categories β H1βH8 (households) and C1βC7 (commercial). C3 β 150'000 kWh/a is the typical reference for school buildings.tariff_get_by_municipality β Tariffs for a BFS-Nr + category + year range, broken into energy / grid usage / KEV / Abgaben.tariff_get_median_swiss β National median benchmark.tariff_get_median_canton β Cantonal median (e.g. for Kanton ZΓΌrich).tariff_compare_municipalities β Compare up to 20 municipalities side-by-side.consumption_* β opendata.swiss + Stadt ZΓΌrich OGDconsumption_search_bfe_datasets β CKAN search across BFE-published datasets.consumption_search_zurich β CKAN search across Stadt ZΓΌrich OGD (includes quarter-hour NE5/NE7 consumption).electricity_check_status β Liveness probe across all four upstreams (HTTP status + latency + overall-healthy flag).Add to claude_desktop_config.json:
Works on Render.com, Railway, Fly.io.
Host binding (security). In HTTP mode the host defaults to
127.0.0.1(loopback only). Bind to all interfaces withSWISS_ELECTRICITY_HOST=0.0.0.0only inside a container, where the network boundary is the container, not the host. Setting0.0.0.0on a developer machine exposes the server to the local network (NeighborJack).
A multi-stage Dockerfile is provided. It runs as a non-root user (UID 10001)
and sets SWISS_ELECTRICITY_HOST=0.0.0.0 explicitly for the containerised case.
| Env var | Default | Purpose |
|---|---|---|
SWISS_ELECTRICITY_TRANSPORT | stdio | stdio or streamable-http |
SWISS_ELECTRICITY_HOST | 127.0.0.1 | HTTP bind host (0.0.0.0 in containers only) |
SWISS_ELECTRICITY_PORT | 8000 | HTTP port |
SWISS_ELECTRICITY_LOG_LEVEL | INFO | Log level (DEBUG/INFO/WARNING/ERROR) |
SWISS_ELECTRICITY_CORS_ORIGINS | (empty) | Comma-separated allowed CORS origins (browser clients); never * |
OTEL_EXPORTER_OTLP_ENDPOINT | (unset) | Enables OpenTelemetry tracing when set |
SWISS_ELECTRICITY_ENV | unknown | deployment.environment resource attribute for traces |
Logging is structured JSON on stderr (stdout is reserved for the stdio JSON-RPC channel). Upstream failures are logged in full server-side but masked in client-facing responses.
Tracing is opt-in. Install the extra and point it at a collector:
You get one span per tool call (mcp.tool.<name>) plus automatic httpx child
spans for each upstream request. No argument values or PII are recorded.
Hybrid (live API + SPARQL + CKAN discovery), no authentication. Three reasons this is the right shape:
swiss-energy-mcp: that server covers geo and infrastructure data (power plants, grid lines). swiss-electricity-mcp covers time-series and tariffs. Both compose cleanly.Every tool response is a Pydantic envelope carrying:
source β full attribution string (e.g. "Daten: Bundesamt fΓΌr Energie (BFE)β¦").provenance β exactly one of live_api / sparql / cached / weekly_dump / stale_cache_fallback.retrieved_at β ISO-8601 UTC timestamp.This makes accidental misattribution structurally impossible.
This server intentionally exposes only Tools, not Resources or Prompts. The
data is parametric and query-driven (a municipality BFS number, a category, a
year), which maps naturally to tool calls; there is no stable, enumerable set of
documents to expose as Resources, and no curated prompt templates to ship. If a
future use case needs, say, a fixed "national production mix" document, the
read-only dashboard_* tools are the obvious Resource-migration candidates.
Phase 1 β read-only. All 12 tools are read-only (readOnlyHint=true) with no
write or destructive operations. Phase-transition criteria and the longer-term
plan live in docs/roadmap.md. Security posture (egress,
supply-chain, lethal-trifecta assessment) is documented in
docs/security-posture.md.
This server speaks two protocol eras over the same endpoint. The client's first request on a connection decides which one applies; a later claim from the other era is refused.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/swiss-electricity-mcp)<a href="https://allmcps.com/mcp/swiss-electricity-mcp"><img src="https://allmcps.com/api/badge/swiss-electricity-mcp?style=directory" alt="Swiss Electricity MCP on AllMCPs" /></a>