
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.
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.
Installation
In SourceWeft
- Open Comparador de luz y gas (CNMC) in the dashboard and add it to a workspace.
- 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]
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
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):
Sin --texto imprime JSON con las claves modo, importes, consulta, cobertura,
ofertas, alternativa_por_separado y analisis. Cada oferta:
Desde Python:
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.
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).
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(), claveanalisis): 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
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
- docs/qr-escaneado.md: lectura del QR en facturas escaneadas, con las cifras por resolución.
Desarrollo
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
Source: README.md at commit 7aada70
Tools
0Version history
4- v0.2.5LatestOct 20, 2026
- v0.2.4Oct 15, 2026
- v0.2.2Oct 15, 2026
- 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