Horizun PBI MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HORIZUN_PBI_MCP_LIBS_DIR | No | Carpeta con las DLLs de ADOMD.NET/TOM | ./libs |
| HORIZUN_PBI_MCP_MAX_ROWS | No | Límite de filas por defecto en DAX | 1000 |
| HORIZUN_PBI_MCP_LOG_LEVEL | No | DEBUG/INFO/WARNING/ERROR | INFO |
| HORIZUN_PBI_MCP_BACKUPS_DIR | No | Backups de .pbip | ./backups |
| HORIZUN_PBI_MCP_OUTPUTS_DIR | No | Documentación y change_log.md | ./outputs |
| HORIZUN_PBI_MCP_DEFAULT_PBIP | No | .pbip a abrir al iniciar | |
| HORIZUN_PBI_MCP_DOTNET_RUNTIME | No | Runtime de pythonnet (netfx o coreclr) | netfx |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pbi_audit_projectA | Auditoria integral: modelo semantico + informe + layout. Devuelve puntaje global y por dominio, resumen ejecutivo, hallazgos priorizados con evidencia y recomendacion, y que reglas tienen correccion automatica.
|
| pbi_audit_report_onlyA | Audita solo el informe PBIR (sin las reglas del modelo semantico). Cubre paginas vacias, visuales sin titulo, campos rotos, duplicados, tamanos de lienzo inconsistentes y la geometria de cada pagina. |
| pbi_plan_audit_fixesA | Planifica correcciones para reglas CONCRETAS. No escribe nada. No existe "arreglar todo": hay que indicar |
| pbi_apply_audit_fixesA | Aplica las acciones devueltas por pbi_plan_audit_fixes. Requiere confirm=true. Cada accion se aplica por su propia via segura (transaccion, verificacion y rollback); si una falla, se reporta sin detener las demas y sin ocultarlo. |
| pbi_list_autofix_rulesB | Reglas que tienen correccion automatica, y en que consiste cada una. |
| pbi_list_desktop_modelsA | Lista los modelos de Power BI Desktop abiertos localmente. Detecta el motor de Analysis Services (localhost:) de cada informe abierto y devuelve puerto, connection string, catalogo y nº de tablas. |
| pbi_select_modelA | Selecciona el modelo local activo para futuras operaciones. Si hay un solo modelo abierto no hace falta indicar puerto. Si hay varios,
pasa el |
| pbi_run_daxA | Ejecuta una consulta DAX de SOLO LECTURA contra el modelo activo. Solo se admiten formas reconocidas: EVALUATE, DEFINE...EVALUATE y DMVs de $SYSTEM. Cualquier otra cosa se rechaza (politica fail-closed).
Devuelve columnas, tipos observados, filas, estadisticas de ejecucion y si se trunco (y por que: filas o tamano). Los errores DAX del motor se devuelven tal cual. |
| pbi_test_connectionA | Valida la conexion al modelo activo con una consulta trivial. |
| pbi_validate_measuresA | Valida DAX de medidas SIN modificar el modelo (dry-run con DEFINE MEASURE). Ideal para probar medidas ANTES de crearlas con pbi_create_measure.
|
| pbi_list_tablesA | Lista tablas con columnas, tipos, visibilidad y conteos.
|
| pbi_list_measuresA | Lista medidas con tabla, expresion DAX, formato, descripcion y carpeta. |
| pbi_list_relationshipsB | Lista relaciones: tablas/columnas, cardinalidad, filtro cruzado y estado. |
| pbi_analyze_model_qualityB | Detecta problemas tipicos del modelo (calidad). Revisa medidas sin carpeta, DAX muy largo, relaciones bidireccionales/ inactivas, columnas calculadas, IDs visibles, ausencia de calendario, etc. |
| pbi_document_modelA | Genera documentacion completa del modelo en Markdown. Incluye resumen, tablas, columnas, medidas, relaciones, jerarquias, roles (RLS) y advertencias de calidad. Guarda el archivo en outputs/. |
| pbi_model_summaryA | Resumen compacto del modelo, pensado para leerlo de un vistazo. Conteos, tablas con su tamano, medidas por tabla, columnas calculadas,
tablas desconectadas, relaciones bidireccionales y referencias rotas.
Es la primera tool que conviene llamar para orientarse en un modelo.
|
| pbi_search_modelA | Busca objetos del modelo por nombre (y en el DAX de las medidas).
|
| pbi_get_objectA | Devuelve un objeto del modelo con todo su detalle.
|
| pbi_measure_dependenciesA | De que depende una medida y quien depende de ella. Devuelve dependencias directas (medidas, columnas y referencias ROTAS),
el cierre transitivo sobre medidas hasta |
| pbi_column_dependenciesA | Que usa una columna: medidas, columnas calculadas, relaciones y jerarquias. Util antes de ocultar o eliminar una columna: dice si algo se rompe. |
| pbi_list_hierarchiesB | Lista las jerarquias del modelo con sus niveles y columnas. |
| pbi_list_rolesB | Lista los roles de seguridad (RLS) y sus filtros por tabla. |
| pbi_list_perspectivesA | Lista las perspectivas del modelo. Requiere la capa EN VIVO: el lector TMDL de este proyecto no las extrae. Si no hay ninguna, devuelve una lista vacia con la explicacion. |
| pbi_list_partitionsB | Lista las particiones por tabla (modo de almacenamiento y origen). |
| pbi_audit_modelA | Audita el modelo semantico con reglas de identificador estable. Cada hallazgo trae |
| pbi_list_audit_rulesA | Catalogo de reglas de auditoria disponibles, con su dominio y severidad. |
| pbi_create_measureA | Crea (o reemplaza con overwrite=true) una medida DAX. Valida que la tabla exista y que la medida no exista salvo overwrite.
mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip'. |
| pbi_update_measureA | Actualiza una medida existente. Lo no especificado se conserva. mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip'. |
| pbi_delete_measureA | Elimina una medida. Operacion destructiva: requiere confirm=true. mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip'. |
| pbi_set_column_visibilityA | Oculta o muestra una columna del modelo (p.ej. ocultar columnas de ID). mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip'. |
| pbi_hide_columnsA | Oculta/muestra VARIAS columnas como un solo lote.
Valida todas las entradas antes de escribir: si alguna tabla o columna
no existe, no se modifica nada y el error indica el indice. Los archivos
TMDL se escriben en una sola transaccion y el modelo en vivo con un solo
SaveChanges. mode='both' esta temporalmente deshabilitado bajo la politica estricta: 'live' necesita Power BI Desktop abierto y 'pbip' lo necesita cerrado, asi que una sola llamada aplicaria solo uno de los dos destinos. Elige 'live' o 'pbip'. |
| pbi_set_relationship_directionA | Cambia el filtro cruzado de una relacion.
No confundir |
| pbi_disable_auto_date_timeA | Activa/desactiva 'Auto fecha y hora' (solo modo pbip). Desactivarlo aligera el modelo: al reabrir el .pbip, Power BI elimina las tablas de fecha automaticas (LocalDateTable_*). Requiere proyecto .pbip activo. |
| pbi_health_checkA | Estado general del servidor: dependencias, DLLs, sesion y proyecto. Solo lectura. Es lo primero que conviene llamar: dice si la capa EN VIVO esta disponible, si hay un proyecto .pbip abierto y si algo requiere atencion (sesion obsoleta, journals pendientes). |
| pbi_capabilitiesA | Que puede hacerse AHORA MISMO, y que no, con el motivo. Un agente deberia consultarla antes de planificar: dice si la capa en vivo esta disponible, si se puede escribir en el .pbip, y que capacidades dependen de la version del motor. |
| pbi_session_infoA | Detalle de la sesion: modelo activo, proyecto activo y su frescura. Distingue una sesion valida de una obsoleta ( |
| pbi_list_pending_journalsA | Lista los journals del proyecto activo. Un journal |
| pbi_inspect_journalA | Inspecciona un journal y lo compara con el estado ACTUAL del proyecto. Solo lectura: no restaura nada. Por cada archivo dice si sigue como el
original, si hay respaldo disponible y cual fue su desenlace.
|
| pbi_recover_from_journalA | Restaura los originales guardados en un journal. DESTRUCTIVA. Sin Estados: Cada archivo se verifica byte a byte tras restaurarlo, y se recrean los directorios padre que hubieran desaparecido. |
| pbi_purge_backupsA | Aplica la politica de retencion a los backups. DESTRUCTIVA. Sin Se conserva siempre el journal mas reciente y TODOS los pendientes: un journal pendiente guarda los unicos originales de una transaccion que no llego a cerrarse. |
| pbi_plan_changeA | Calcula un PLAN sin aplicar nada, y devuelve un
El plan incluye el diff por archivo y una huella del estado sobre el que se calculo. Si el proyecto cambia despues, pbi_apply_plan lo rechaza. |
| pbi_apply_planA | Aplica un plan calculado con pbi_plan_change o con un dry_run. Verifica que el proyecto siga en el estado sobre el que se planifico; si cambio, rechaza el plan en vez de aplicar algo distinto de lo aprobado.
|
| pbi_page_building_blocksA | Entrega el material para diseniar una hoja: modelo (tablas/medidas/columnas), catalogo de visuales existentes (reutilizables como plantilla), canvas y paginas. Usa esto ANTES de proponer una hoja: te dice que campos y tipos de visual hay. |
| pbi_preview_spec_htmlA | Genera una MAQUETA HTML de una hoja propuesta (sin escribir nada al .pbip).
|
| pbi_export_page_htmlB | Exporta una MAQUETA HTML de una pagina EXISTENTE (layout + campos de cada visual). |
| pbi_create_page_from_specA | Crea una hoja (pagina) PBIR completa a partir de un spec.
|
| pbi_open_pbip_projectA | Abre un proyecto .pbip y lo marca como proyecto activo. Detecta carpetas .SemanticModel (TMDL) y .Report (PBIR) y devuelve un
resumen con advertencias (p.ej. si el informe no usa PBIR).
|
| pbi_validate_pbip_projectA | Valida a fondo el proyecto .pbip activo (estructura, PBIR, TMDL). |
| pbi_backup_pbip_projectA | Crea un backup con timestamp del proyecto .pbip activo.
|
| pbi_refresh_modelA | Refresca el modelo LOCAL abierto en Power BI Desktop (no el Service).
|
| pbi_get_visualA | Definicion completa y normalizada de un visual. Devuelve tipo, posicion, orden Z, titulo, campos por rol, medidas y columnas referenciadas, si tiene formato propio, sus filtros, y la definicion cruda por si hace falta inspeccionarla. |
| pbi_report_capabilitiesA | Version PBIR observada, tema, custom visuals y tipos clonables. Solo se pueden crear visuales de tipos ya presentes en el informe: se clona una estructura real en vez de inventarla. Esta tool dice cuales hay disponibles antes de intentarlo. |
| pbi_duplicate_visualA | Duplica un visual conservando campos, formato y filtros. Solo se regenera el identificador, que debe ser unico. La copia se
desplaza |
| pbi_delete_visualA | Elimina un visual. Operacion destructiva: requiere confirm=true. Devuelve la definicion previa, y el journal permite restaurarla. |
| pbi_set_visual_titleA | Cambia el titulo de un visual PRESERVANDO su formato (fuente, color). |
| pbi_set_visual_z_orderA | Fija el orden Z de los visuales de una pagina.
|
| pbi_replace_visual_fieldA | Sustituye una referencia de campo dentro de un visual.
El destino se valida contra el modelo antes de escribir: si no existe,
es ambiguo o es de otro tipo (medida donde va una columna), se rechaza
con |
| pbi_copy_visual_formatA | Copia el formato de un visual a otros DEL MISMO TIPO. Se copia el formato pero no el texto del titulo, que es contenido. Copiar entre tipos distintos se rechaza: la estructura de formato no es intercambiable y Power BI podria rechazar el informe. |
| pbi_duplicate_pageA | Duplica una pagina con todos sus visuales, en una sola transaccion. Se regeneran los identificadores que deben ser unicos (el de la pagina y el de cada visual) y se conserva todo lo demas. |
| pbi_delete_pageA | Elimina una pagina y actualiza el orden y la pagina activa. Destructiva: requiere confirm=true. Se niega a borrar la ultima pagina del informe, porque un informe sin paginas no abre. |
| pbi_rename_pageA | Cambia el nombre visible de una pagina. El id interno no cambia. |
| pbi_reorder_pagesA | Fija el orden de las paginas del informe. Acepta ids o nombres visibles. Las paginas que no menciones quedan al final, conservando su orden relativo. |
| pbi_detect_layout_issuesA | Diagnostica la geometria de una pagina (o de todas). Solo lectura. Detecta solapamientos, visuales fuera del lienzo, tamanos demasiado pequenos, margenes, separaciones inconsistentes, orden Z duplicado o ausente, paginas vacias y paginas saturadas. Cada hallazgo trae su evidencia geometrica. |
| pbi_align_visualsC | Alinea varios visuales por un borde.
|
| pbi_distribute_visualsA | Reparte visuales con separacion uniforme. Necesita al menos tres visuales: con dos, la separacion ya es la que hay. |
| pbi_normalize_page_layoutA | Corrige lo corregible de una pagina sin reacomodarla entera. Mete dentro del lienzo lo que se sale, sube al minimo lo demasiado
pequeno y respeta los margenes. NO mueve lo que ya esta bien: es una
correccion conservadora. |
| pbi_list_page_presetsA | Presets de pagina disponibles, con los bloques que compone cada uno. Un preset describe la INTENCION de la pagina (KPIs arriba, grafico protagonista, detalle abajo). Los campos concretos los eliges tu. |
| pbi_generate_page_specA | Genera un borrador de spec a partir de un preset y unos campos.
|
| pbi_validate_page_specB | Valida un spec: esquema, referencias contra el modelo y geometria. Los errores traen su JSON path ( |
| pbi_preview_page_specB | Maqueta HTML del spec con las posiciones FINALES. No escribe al .pbip. Lo que muestra el preview es exactamente lo que se escribiria: tipos, titulos, campos, tamanos y posiciones salen del mismo compilado que usa la aplicacion. |
| pbi_diff_page_specA | Compara el spec con una pagina existente antes de aplicarlo. Dice que visuales se anadirian, cuales sobrarian y cuantos quedan igual. Si la pagina no existe, informa que se creara. |
| pbi_apply_page_specA | Materializa el spec como una pagina PBIR, en UNA transaccion. Cuatro desenlaces explicitos:
|
| pbi_validate_generated_pageA | Verifica una pagina YA escrita: referencias rotas y geometria. Se usa despues de aplicar un spec para comprobar que el resultado es valido de verdad, no solo que la escritura no fallo. |
| pbi_list_report_pagesA | Lista las paginas del informe PBIR activo (id, nombre, tamano, nº visuales). |
| pbi_list_visualsA | Lista los visuales de una pagina: id, tipo, posicion, campos, titulo.
|
| pbi_document_report_layoutA | Genera documentacion Markdown del layout del informe (paginas y visuales). |
| pbi_create_visualA | Crea un visual PBIR en una pagina.
|
| pbi_add_custom_visualB | Registra un custom visual de AppSource en el informe (publicCustomVisuals). Sin argumentos registra "HTML Content" (renderiza HTML/SVG desde una medida DAX). Power BI Desktop lo descarga de AppSource al abrir el informe. |
| pbi_create_html_visualB | Crea un visual "HTML Content" que renderiza el HTML/SVG devuelto por una medida.
|
| pbi_update_visual_positionC | Mueve/redimensiona un visual existente. |
| pbi_arrange_visualsB | Reorganiza los visuales de una pagina.
|
| pbi_generate_report_pageB | Genera una pagina con visuales propuestos a partir del modelo. Revisa el modelo, valida los campos sugeridos (no inventa campos), crea la pagina, agrega tarjetas para medidas y un grafico por categoria, y acomoda todo con el layout indicado. Devuelve un resumen de lo creado. |
| pbi_build_dashboardA | Construye un dashboard completo desde un objetivo, no desde primitivas. Analiza el modelo, compone el spec segun el preset, calcula el layout,
genera preview, aplica en una transaccion y verifica el resultado.
|
| pbi_build_executive_pageC | Pagina de resumen ejecutivo: fila de KPIs y grafico protagonista. |
| pbi_build_evm_pageA | Pagina EVM (Earned Value Management). Espera medidas del tipo PV, EV, AC, CPI y SPI; si no las reconoce, lo avisa en vez de generar una pagina que no significa nada. |
| pbi_repair_broken_referencesA | Detecta referencias rotas en los visuales y las repara. Sin |
| pbi_normalize_reportA | Normaliza la geometria de TODAS las paginas del informe. Mete dentro del lienzo lo que se sale, sube al minimo lo demasiado pequeno y respeta margenes. No reacomoda lo que ya cumple. Compara el puntaje de auditoria antes y despues. |
| pbi_compare_live_to_pbipA | Compara el modelo EN VIVO con el TMDL del disco. Util para saber si hay cambios en memoria sin guardar: lista tablas y medidas que solo estan en un lado, y medidas cuyo DAX difiere. |
| pbi_prepare_deliveryA | Checklist de pre-entrega con plan de correccion. Audita el proyecto, produce un checklist de bloqueantes y propone las
correcciones automaticas disponibles. Con |
| pbi_generate_technical_documentationA | Documentacion tecnica completa en Markdown, guardada en outputs/. Incluye el modelo (tablas, medidas con su DAX y dependencias), el informe pagina a pagina con los campos de cada visual, y la auditoria con puntaje por dominio. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pablo-horizun/horizun-pbi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server