Content
# dialux-mcp
Servidor [MCP](https://modelcontextprotocol.io) para automatizar **DIALux evo**
desde un agente de IA (VS Code, Claude, etc.). Permite generar geometría de
proyectos, lanzar la aplicación, abrir proyectos, ejecutar cálculos, exportar
reportes y normalizar resultados.
> DIALux **no ofrece API ni CLI oficial**. Este servidor combina **generación de
> archivos** (STF importable) con **automatización de UI** (pywinauto) para
> orquestar el flujo de trabajo. DIALux sigue siendo la fuente de verdad del
> cálculo conforme a normativa.
## Estado
- DIALux evo objetivo: **5.13.0.9593** (DIAL GmbH), interfaz en español (es-ES).
- Plataforma: **Windows** (la automatización requiere DIALux instalado).
- Python: **3.11+**.
## Instalación
```pwsh
# Entorno y dependencias base (modelos, parsers, cálculo, servidor MCP)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .
# Extras de automatización (solo en la máquina con DIALux)
pip install -e ".[automation]"
# Extras de desarrollo (tests, lint)
pip install -e ".[dev]"
```
## Configuración
Variables de entorno (todas opcionales; hay autodetección):
| Variable | Descripción | Valor por defecto |
|----------|-------------|-------------------|
| `DIALUX_EXE_PATH` | Ruta a `DIALux.exe` | autodetección en `C:\Program Files\DIAL GmbH\DIALux\` |
| `DIALUX_PROJECTS_DIR` | Carpeta de proyectos | `~/Documents/DIALux_Projects` |
| `DIALUX_RESULTS_DIR` | Carpeta de salidas | `./runs` |
| `DIALUX_UI_LANGUAGE` | Idioma de la UI | `es-ES` |
| `DIALUX_LAUNCH_TIMEOUT` | Timeout de arranque (s) | `120` |
| `DIALUX_CALC_TIMEOUT` | Timeout de cálculo (s) | `900` |
## Uso como servidor MCP en VS Code
`.vscode/mcp.json`:
```json
{
"servers": {
"dialux": {
"command": "dialux-mcp",
"env": {
"DIALUX_EXE_PATH": "C:\\Program Files\\DIAL GmbH\\DIALux\\DIALux.exe"
}
}
}
}
```
## Herramientas expuestas
**Operativas**
- `health_check` — verifica instalación y dependencias.
- `launch_dialux` — lanza DIALux y espera a que esté listo.
- `open_project` — abre un `.dlx` existente.
- `run_calculation` — inicia el cálculo y espera a que finalice.
- `export_report` — exporta reporte (pdf/docx/xml/csv).
- `capture_view` — captura una imagen de la vista.
- `get_results_summary` — normaliza un CSV de resultados.
- `close_project` / `get_session_log`.
**Generación / diseño**
- `calculate_lighting_layout` — distribución de luminarias por el método del flujo luminoso.
- `generate_stf_project` — crea un archivo STF importable en DIALux.
## Pruebas
```pwsh
pytest # unitarias (e2e excluidas por defecto)
pytest -m e2e # requiere DIALux + DIALUX_E2E_PROJECT
```
## Limitaciones conocidas
- Los selectores de UI ([selectors.py](src/dialux_mcp/automation/selectors.py))
son una base inicial y deben ajustarse con inspección real (Inspect.exe).
- STF importa **geometría y reflexiones**, no fotometría ni luminarias calculadas.
- El parseo de reportes en v1 admite **CSV/XML**; se recomienda exportar CSV.
## Arquitectura
Ver [docs/architecture.md](docs/architecture.md).
# dialux-mcp