Labsco
MCP SERVER

Enedis Linky MCP Server

by mjrgr

Read your Enedis Linky smart meter — daily consumption, half-hourly load curve, peak power and solar production — through the free Conso API.

IoT, Smart Home & Embedded Hardware
Summary
The Enedis side has to be switched on first.

The most common failure is not the server: hourly consumption collection is off by default in the Enedis customer space, and until it is enabled a valid token and an authorised PRM still return nothing for the date range. The troubleshooting section maps each status code to its cause — 401 means the token, 403 means the PRM is not authorised — which makes the first setup much shorter than it otherwise would be. Rate limits come from Conso at 5 requests per second.

What it is

A Go server over the Conso API, the free proxy in front of Enedis' Linky data. It gives an assistant direct access to your own electricity readings, so questions about consumption are answered from the meter rather than from a monthly bill.

What you get
  • Daily electricity consumption in Wh over a date range — `get_daily_consumption`
  • Average power readings at 30-minute intervals in W — `get_load_curve`
  • The maximum power reached each day, in VA — `get_max_power`
  • Daily solar production in Wh for installations that have it, and its 30-minute production load curve in W — `get_daily_production`, `get_production_load_curve`
  • An optional built-in web dashboard with connection status, summary statistics and charts for daily consumption, load curve and max power — no MCP client needed to use it
Requirements

A Conso API token, free from conso.boris.sh, in `CONSO_API_TOKEN`, and your 14-digit PRM meter identifier — setting `LINKY_PRM` makes the `prm` parameter optional on every call. Before any of it works, enable hourly consumption recording and collection in your Enedis customer space and authorise the PRM at Conso. Run the prebuilt image `ghcr.io/mjrgr/enedis-linky-mcp-server:latest` or build the Go binary. `MCP_TRANSPORT` defaults to `stdio` for Claude Desktop; set it to `sse` with `PORT` (default 8080) for an HTTP client. The dashboard is switched on with `LINKY_DASHBOARD=true` and listens separately, so both can run at once.

Setup effort

One command plus a key — claude mcp add linky -s local -- docker run -i --rm \ -e CONSO_API_TOKEN=your_token_here \ -e LINKY_PRM=12345678901234 \ ghcr.io/mjrgr/enedis-linky-mcp-server:latest, then supply credentials