Comparador de luz y gas (CNMC)

io.github.nuncaeslupusPublished by GitHub account nuncaeslupusv0.2.5Updated Oct 27, 2026

Ofertas de luz y gas en España del comparador oficial de la CNMC, ordenadas por precio.

VerifiedSTDIODesktop onlyLocation & LifestyleFinance

Overview

AI-generated overview

Compares official CNMC electricity and gas offers in Spain by price, from a postal code, consumption and power or a bill QR code.

What you can do
  • Compare electricity, gas or both supplies by postal code, consumption and power, returning offers sorted by price with a multi-year analysis
  • Read the data encoded in a bill's QR code, either from a QR string or from a PDF or image file on disk
  • Report coverage, listing which large suppliers are missing from the official comparator
  • Return results as JSON or a text table, with annual or billing-period amounts
When to use it
Useful when someone in Spain wants to check which CNMC-verified electricity or gas offers are cheapest for their home or business, or wants to compare a current bill against available offers.
Requirements
Runs locally over stdio, launched with uvx from the PyPI package comparador-luz-gas (or via the provided Dockerfile). Reading QR codes from PDF or image files needs the extra facturas plus system libraries libzbar0 and poppler-utils. Network access to the CNMC API is required for comparisons; no account, API key or environment variable is declared.
Before you install
Each comparison sends the postal code, consumption and power to the CNMC public API. Bill files and QR data contain real address, CUPS and consumption details, so keep them out of shared or versioned folders. Results are not a full market census, exclude taxes breakdown, and ignore additional services or equipment rental on the bill.

Installation

In SourceWeft

  1. Open Comparador de luz y gas (CNMC) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

comparador-luz-gas

[PyPI] [CI] [License: MIT] [comparador-luz-gas MCP server – quality and maintenance score on Glama]

[Built with claude-arsenal]

[comparador-luz-gas: los 83 parámetros del formulario de la CNMC se quedan en tres datos, código postal, consumo y potencia, o el QR de la factura, y salen las ofertas ordenadas de más barata a más cara, con el aviso de qué comercializadoras grandes faltan]

El comparador oficial de tarifas de luz y gas de la CNMC, como librería, CLI y servidor MCP.

El comparador de la CNMC es la única comparativa oficial de ofertas de energía en España, pero solo se usa a través de un formulario web; su API pública pide 83 parámetros por consulta. Este proyecto la reduce a tres datos (código postal, consumo, potencia) o al QR de la factura, y devuelve las ofertas en JSON ordenadas por precio, con un análisis a varios años y el aviso de qué comercializadoras grandes no están en el comparador.

Inicio rápido

bash
uvx comparador-luz-gas --cp 28013 --consumo 2600 --texto --top 5

O instalado: pip install comparador-luz-gas. Para leer el QR de un PDF o una imagen, pip install "comparador-luz-gas[facturas]" y sudo apt install libzbar0 poppler-utils.

Ejemplo

Salida real (consulta del 2026-10-20; los precios cambian con el mercado):

text
$ comparador-luz-gas --cp 28013 --consumo 2600 --texto --top 5  1er año    2º año  comercializadora                       oferta----------------------------------------------------------------------------------------------------   653.02      0.00  Comercializadora de referencia         PVPC Histórico 19/10/2025 - 19/10/2026   655.15    655.15  ENERGIA NUFRI SL                       ENERGIA NUFRI - CON HORARIOS   657.85    721.45  niba                                   niba Zen   661.53    661.53  ENERGIA NUFRI SL                       ENERGIA NUFRI - UNIVERSAL CON HORARIOS   662.80    713.51  CIDE HCENERGÍA S.A.U                   Plan Estrella Dúo
70 ofertas de 28 comercializadoras.No están en el comparador: ENDESA, IBERDROLA, TOTALENERGIES, HOLALUZ, EDP, GALP.[...]
A 3 años, lo más barato es ENERGIA NUFRI SL «ENERGIA NUFRI - CON HORARIOS»: 1965.45 €(655.15 €/año en régimen). ¿Prefieres pagar lo mismo a cualquier hora o puedes concentrarel consumo en las horas baratas? Con tu reparto actual gana la discriminación horaria por41.79 €: [...]- La mejor a 3 años es solo para nuevos clientes: [...]- El PVPC sale 2.13 € más barato al año que la mejor fija (653.02 € frente a 655.15 €),  pero es variable: [...]- 13 de 70 ofertas tienen permanencia (penalización de 16.87 a 37.42 €).

Sin --texto imprime JSON con las claves modo, importes, consulta, cobertura, ofertas, alternativa_por_separado y analisis. Cada oferta:

json
{"comercializadora": "Comercializadora de referencia", "oferta": "PVPC Histórico 19/10/2025 - 19/10/2026", "importe_primer_anio": 653.02, "importe_segundo_anio": 0.0, "permanencia": false, "servicios_adicionales": false, "verde": false, "validez": "Válida para consumidores con derecho a PVPC", "precio_unico": false, "id_oferta": 180, "penalizacion_estimada": 0, "solo_nuevos_clientes": false}

Desde Python:

python
from comparador_luz_gas import Consulta, comparar, desde_fichero, interpretar
r = comparar(Consulta(codigo_postal="28013", consumo_anual_luz=2600, potencia=3.45))r.ofertas[0]  # la más barata el primer añor.to_dict()  # lo mismo que imprime el CLIinterpretar(r, anios=3)["resumen"]  # valoración a 3 años
r = comparar(desde_fichero("factura.pdf").consulta())  # todo desde el QR de la factura

Uso con agentes de IA

Servidor MCP

comparador-luz-gas mcp sirve el comparador por stdio, sin dependencias extra. Está en el registro oficial de MCP como io.github.nuncaeslupus/comparador-luz-gas.

json
{  "mcpServers": {    "comparador-luz-gas": { "command": "uvx", "args": ["comparador-luz-gas", "mcp"] }  }}

Para leer facturas del disco: "args": ["--from", "comparador-luz-gas[facturas]", "comparador-luz-gas", "mcp"]. También hay Dockerfile (docker run -i --rm comparador-luz-gas).

herramientaqué hace
comparar_ofertasofertas + análisis a largo plazo, como el JSON del CLI. Basta qr, o cp + consumo (luz); para gas, suministro: "gas" con cp + consumo_gas; para ambas, suministro: "ambas" con cp, consumo y consumo_gas; max_ofertas (20 por defecto) recorta la lista
leer_factura_qrlos datos del QR de una factura, sin consultar la CNMC
leer_factura_archivolee el QR de un PDF o imagen del disco (necesita el extra facturas)

Los errores vuelven como {"ok": false, "error": "ArgumentoInvalido", "message": "..."}.

Desde el CLI

Un agente sin MCP puede llamar al CLI: por defecto escribe JSON en stdout. modo e importes dicen si los importes son anuales o de un periodo de factura, para que no se confunda un mes con un año. Un argumento inválido sale con código 2 y el mensaje en stderr.

Cómo funciona

  • Una petición a la API oficial de la CNMC (3-8 s, límite 90 s). No hay precios propios ni caché: solo cuentas sobre lo que responde la CNMC.
  • Lee el QR de la factura. Desde la Resolución de la CNMC de 24/06/2021 (BOE-A-2022-16989) toda factura de luz lleva un QR con código postal, potencias, consumo anual por franja, periodo e importe. El formato lo fija la CNMC, así que vale para cualquier comercializadora. desde_qr() no tiene dependencias: una app que ya escaneó el QR le pasa la cadena.
  • Dos modos. Por defecto, coste estimado de 12 meses. Con --mensual (f.consulta(mensual=True)), el coste del periodo concreto de la factura, comparable con el importe impreso.
  • Análisis a largo plazo (interpretar(), clave analisis): coste a N años (primer_anio + (N-1) × siguientes), porque el primer puesto suele ganarlo un descuento de bienvenida que se cobra una vez. Separa precio único frente a discriminación horaria, señala las ofertas solo para nuevos clientes, la permanencia y su penalización, y el PVPC frente a la mejor fija.
  • Cobertura. Cada respuesta lista las comercializadoras presentes y las grandes que faltan (cobertura.grandes_ausentes).
  • Anualizar. anualizar(facturas) extrapola el consumo de varias facturas recientes en vez de usar los 12 meses rodantes del QR.

CLI

bash
comparador-luz-gas --cp 28013 --consumo 2600                      # JSONcomparador-luz-gas --cp 28013 --consumo 2600 --texto --top 5      # tablacomparador-luz-gas --cp 28013 --consumo 2600 --sin-permanenciacomparador-luz-gas --cp 28013 --consumo 2600 --consumo-gas 6000 --suministro ambascomparador-luz-gas --cp 28013 --consumo 2600 --franjas 600,700,1300 --anios 5comparador-luz-gas --factura factura.pdf --texto                  # compara con los datos del QRcomparador-luz-gas --factura factura.pdf --mensual --texto        # coste de ese periodocomparador-luz-gas --qr 'https://comparador.cnmc.gob.es/comparador/QRE?cp=...'comparador-luz-gas --factura factura.pdf --solo-datos             # solo lee el QR

Otras opciones: --potencia (kW, 3,45 por defecto), --empresa (suministro que no es vivienda). comparador-luz-gas --help las lista todas.

Campos de Consulta: codigo_postal (obligatorio), consumo_anual_luz, consumo_anual_gas, potencia (3.45), suministro ("luz", "gas", "ambas"), franjas ((punta, llano, valle); si falta, perfil 2.0TD), vivienda (True), permanencia y servicios_adicionales (2; 1 = solo ofertas sin ellos).

Limitaciones

  • No es un censo del mercado. La CNMC solo publica ofertas que las comercializadoras le remiten y valida. Comprobado el 2026-09-23 sobre 20 códigos postales: Endesa, TotalEnergies, Plenitude, Holaluz y EDP no tienen ofertas; Iberdrola, una de gas. Endesa e Iberdrola solo aparecen como Comercializadora de referencia (PVPC/TUR). El resultado es la mejor entre las verificadas por la CNMC.
  • Sin desglose de impuestos. Confirma con la comercializadora si el importe lleva IVA.
  • La factura incluye cosas que el comparador no cuenta: servicios adicionales, alquiler de equipos, bono social. El QR los desglosa (impSA, finBS); réstalos antes de comparar.
  • Las ofertas por tramos se valoran con tu reparto punta/llano/valle actual, con los tramos 2.0TD de la Circular 3/2020 (vigentes desde el 1/06/2021; Ceuta y Melilla usan otros). Si piensas mover consumo, repite con --franjas. Si vienes de una tarifa de discriminación horaria anterior, usa solo facturas posteriores a esa fecha.
  • Sin histórico. El catálogo no lleva fechas de alta ni caducidad, y la CNMC no publica el histórico, así que no se puede decir en qué mes conviene cambiar.
  • QR escaneado: 400 dpi aguanta JPEG, giro y desenfoque; 300 dpi va bien salvo desenfoque; 200 dpi solo si está limpio; 150 dpi no se lee.

Documentación

Desarrollo

bash
make sync && make lint && make testmake test-live       # consulta la API realmake test-facturas   # lee el QR de los PDFs de data/facturas/, si los hay

data/har/ y data/facturas/ están en .gitignore (llevan CUPS, dirección y consumos reales); los tests versionados usan un QR inventado.

Proyectos relacionados

  • claude-arsenal — flujo de Claude Code guiado por especificaciones y cola de tareas con puertas de aceptación.
  • drawspec — especificación declarativa de diagramas a SVG/PNG/texto limpio, escribible por LLMs; incluye servidor MCP.
  • doc-control — permite a agentes de IA editar documentos Word como cambios controlados.
  • literary-critic — análisis de manuscritos con LLM al modo de un editor profesional.
  • integral-job-search — búsqueda de empleo centrada en el candidato, dentro de Claude Code.

Licencia

MIT

Source: README.md at commit 7aada70

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

4
  1. v0.2.5LatestOct 20, 2026
  2. v0.2.4Oct 15, 2026
  3. v0.2.2Oct 15, 2026
  4. v0.2.1Oct 15, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts