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

roocodedemo

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

  1. Descargue la versión desde el directorio Releases o la página de releases de GitHub y extráigala a su ubicación preferida.

  2. Abra Power BI Desktop con un archivo PBIX con el que desee trabajar.

  3. 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.

Tabular Editor

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.

  1. Configure el servidor MCP en su editor. Para VS Code con Roo, cree/edite .roo/mcp.json:
    {
      "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"
          ]
        }
      }
    }
    
    Reemplace path\\to\\release con la ruta real de su directorio de versión y YOUR_PBI_PORT con el número de puerto de la instancia de PBI.

Configuración desde Código Fuente (Para Desarrollo)

  1. Clone el repositorio:

    git clone <repository-url>
    cd MCPBI
    
  2. Compile el proyecto:

    dotnet build
    
  3. Abra Power BI Desktop con un archivo PBIX.

  4. Ejecute el descubrimiento para crear el archivo .env:

    dotnet run --project pbi-local-mcp/pbi-local-mcp.csproj discover-pbi
    

    Siga las indicaciones para seleccionar instancia y base de datos.

  5. 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\\MCPBI con la ruta real de su repositorio.

Notas de Configuración

  • Use puerto o envFile: Puede especificar el puerto de Power BI directamente en args o usar envFile para cargar desde .env.
  • Argumento de puerto: El argumento --port en 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 envFile para cargar automáticamente PBI_PORT y PBI_DB_ID desde .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 cwd establece el directorio de trabajo donde se encuentra el archivo .env