Tabular MCP Server
Un servidor MCP para modelos tabulares locales como PowerBI. Permite a los clientes LLM depurar, analizar y componer consultas DAX conectándose a una instancia de modelo tabular local.
Documentación
MCPBI - Servidor MCP de Modelos Tabulares
Este es un servidor de Protocolo de Contexto de Modelo (MCP) para ejecutar modelos tabulares localmente, es decir, modelos de PowerBI que se ejecutan en PowerBI Desktop.
Este servidor permite que clientes LLM habilitados para MCP se comuniquen con sus modelos tabulares y le ayuden a depurar, analizar y componer consultas DAX.
Ejemplo: Copilot consultando un Modelo Tabular vía MCP
Cómo funciona
Se conecta a una instancia local en ejecución de modelos tabulares usando AdomdConnection en ADOMD.NET.
Usando esta conexión, el servidor permite a los clientes ejecutar consultas DAX y recuperar metadatos del modelo (usando consultas DMV) a través de herramientas predefinidas para alta precisión, así como consultas DAX personalizadas para depuración y desarrollo.
Características
Opciones de Configuración
Puerto
Especifique el puerto de la instancia de Power BI Desktop a la que conectarse (obligatorio).
# Example: Connect to Power BI Desktop instance on port 56751
dotnet run -- --port 56751
Ofuscación
Proteja datos sensibles con estrategias de cifrado configurables:
- Ninguna (predeterminado): Sin ofuscación
- Todo: Enmascarar todos los valores
- Dimensiones: Enmascarar solo campos de texto/fecha (mantener datos numéricos visibles)
- Hechos: Enmascarar solo campos numéricos (mantener contexto dimensional)
# Example: Protect customer/product names while keeping sales figures visible
dotnet run -- --port 56751 --obfuscation-strategy dimensions --encryption-key "YourSecureKey123!"
Truncamiento de Salida
Límite automático de filas con metadatos completos:
- Límite predeterminado de 500 filas (configurable)
- La respuesta incluye:
totalRows,displayedRows,truncated,hasMore
# Example: Increase row limit for analysis
dotnet run -- --port 56751 --max-rows 2000
Herramientas
list_objects
- Lista todos los objetos en el modelo (tablas, columnas, medidas, relaciones)
- Devuelve tipo de objeto, nombre y metadatos básicos
get_object_details
- Recupera metadatos detallados para un objeto específico (tabla, columna, medida)
- Devuelve propiedades, tipos de datos, relaciones y dependencias
list_functions
- Lista funciones DAX disponibles con filtrado opcional por categoría u origen
- Devuelve nombre de función, descripción, clasificación de interfaz y origen
get_function_details
- Recupera detalles completos para una función DAX específica, incluyendo información completa de parámetros
- Devuelve firma de función, requisitos de parámetros, tipo de retorno y compatibilidad con DirectQuery
run_query
- Ejecuta una consulta DAX personalizada contra el modelo
- Devuelve resultados de consulta con metadatos (filas totales, estado de truncamiento)
1. Descubrimiento de Modelo
Use [ListTables], [GetTableColumns] y [GetTableRelationships] para comprender rápidamente la estructura de un modelo desconocido sin hacer clic manualmente en Power BI Desktop.
2. Asistencia DAX
Los clientes LLM pueden usar [ListMeasures] y [GetMeasureDetails] para aprender sus patrones DAX existentes y sugerir nuevas medidas consistentes que sigan sus convenciones de nomenclatura y estilos de cálculo.
3. Depuración
Combine [RunQuery] con [ValidateDaxSyntax] para probar y refinar expresiones DAX de forma iterativa con retroalimentación inmediata sobre sintaxis y resultados.
validate_query
- Valida la sintaxis de consultas DAX sin ejecución
- Devuelve corrección de sintaxis y mensajes de error si corresponde
analyze_query_performance
- Analiza el rendimiento de consultas DAX y proporciona sugerencias de optimización
- Devuelve tiempo de ejecución, uso de recursos y recomendaciones de mejora
Instalación
Instrucciones de Configuración
Requisitos
- Power BI Desktop (con un archivo PBIX abierto para descubrimiento)
- Sistema operativo Windows
- Visual Studio Code (para integración del servidor MCP)
- .NET 8.0 Runtime
Configuración desde Versión Precompilada
-
Descargue la versión desde el directorio Releases o la página de releases de GitHub y extráigala a su ubicación preferida.
-
Abra Power BI Desktop con un archivo PBIX con el que desee trabajar.
-
Obtenga información de la instancia de PowerBI
Hay varias formas de detectar instancias de Power BI Desktop. La más fácil es abrir Tabular Editor y verificar el puerto en la cadena de conexión.
Simplemente agregue el puerto (63717 en el ejemplo anterior) a su configuración del servidor MCP en el siguiente paso (puede ignorar el ID de base de datos, ya que este servidor se conecta al modelo predeterminado).
Si no tiene Tabular Editor, puede usar la herramienta de descubrimiento incluida para encontrar la instancia y base de datos en ejecución.
Abra PowerShell, navegue al directorio de la versión y ejecute:
cd path\to\release
.\pbi-local-mcp.DiscoverCli.exe
Nota: En PowerShell, debe usar el prefijo .\ para ejecutar ejecutables desde el directorio actual.
Siga las indicaciones para:
- Seleccionar la instancia de Power BI Desktop (identificada por puerto)
- Elegir la base de datos/modelo al que conectarse
Esto crea un archivo .env con PBI_PORT y PBI_DB_ID en el directorio de la versión, al que puede hacer referencia en su configuración MCP o ignorar si especifica el puerto directamente.
- Configure el servidor MCP en su editor. Para VS Code con Roo, cree/edite
.roo/mcp.json:
Reemplace{ "mcpServers": { "MCPBI": { "type": "stdio", "command": "path\\to\\release\\mcpbi.exe", "cwd": "path\\to\\release", "args": ["--port", "YOUR_PBI_PORT"], "disabled": false, "alwaysAllow": [ "ListTables", "GetTableDetails", "GetTableColumns", "GetTableRelationships", "ListMeasures", "GetMeasureDetails", "PreviewTableData", "RunQuery", "ValidateDaxSyntax", "AnalyzeQueryPerformance", "ListFunctions", "GetFunctionDetails" ] } } }path\\to\\releasecon la ruta real de su directorio de versión yYOUR_PBI_PORTcon el número de puerto de la instancia de PBI.
Configuración desde Código Fuente (Para Desarrollo)
-
Clone el repositorio:
git clone <repository-url> cd MCPBI -
Compile el proyecto:
dotnet build -
Abra Power BI Desktop con un archivo PBIX.
-
Ejecute el descubrimiento para crear el archivo
.env:dotnet run --project pbi-local-mcp/pbi-local-mcp.csproj discover-pbiSiga las indicaciones para seleccionar instancia y base de datos.
-
Configure el servidor MCP en
.roo/mcp.json:{ "mcpServers": { "mcpbi-dev": { "type": "stdio", "command": "dotnet", "cwd": "path\\to\\MCPBI", "envFile": "path\\to\\MCPBI\\.env", "args": [ "exec", "path\\to\\MCPBI\\pbi-local-mcp\\bin\\Debug\\net8.0\\pbi-local-mcp.dll" ], "disabled": false, "alwaysAllow": [ "ListTables", "GetTableDetails", "GetTableColumns", "GetTableRelationships", "ListMeasures", "GetMeasureDetails", "PreviewTableData", "RunQuery", "ValidateDaxSyntax", "AnalyzeQueryPerformance", "ListFunctions", "GetFunctionDetails" ] } } }Reemplace
path\\to\\MCPBIcon la ruta real de su repositorio.
Notas de Configuración
- Use puerto o envFile: Puede especificar el puerto de Power BI directamente en
argso usarenvFilepara cargar desde.env. - Argumento de puerto: El argumento
--porten la configuración de la versión se conecta a la instancia específica de Power BI Desktop en ese puerto - envFile: La configuración de desarrollo usa
envFilepara cargar automáticamentePBI_PORTyPBI_DB_IDdesde.env - alwaysAllow: Lista todas las herramientas que se pueden usar sin requerir aprobación del usuario para cada invocación
- Directorio de trabajo: El parámetro
cwdestablece el directorio de trabajo donde se encuentra el archivo.env