Tabular MCP Server

Um servidor MCP para modelos tabulares locais como PowerBI. Ele permite que clientes LLM depurem, analisem e componham consultas DAX conectando-se a uma instância de modelo tabular local.

Documentação

MCPBI - Tabular Model MCP Server

Este é um servidor Model Context Protocol (MCP) para executar Modelos Tabulares localmente, ou seja, modelos PowerBI executando no PowerBI Desktop.

Este servidor permite que clientes LLM habilitados para MCP se comuniquem com seus modelos tabulares e ajudem você a depurar, analisar e compor consultas DAX.

Exemplo: Copilot consultando Modelo Tabular via MCP

roocodedemo

Como funciona

Ele se conecta a uma instância local em execução de Modelos Tabulares usando o AdomdConnection no ADOMD.NET.

Usando essa conexão, o servidor permite que clientes executem consultas DAX e recuperem metadados do modelo (usando consultas DMV) por meio de ferramentas predefinidas para alta precisão, bem como consultas DAX personalizadas para depuração e desenvolvimento.

Recursos

Opções de Configuração

Porta

Especifique a porta da instância do Power BI Desktop para conectar (obrigatório).

# Example: Connect to Power BI Desktop instance on port 56751
dotnet run -- --port 56751

Ofuscação

Proteja dados sensíveis com estratégias de criptografia configuráveis:

  • Nenhum (padrão): Sem ofuscação
  • Todos: Mascarar todos os valores
  • Dimensões: Mascarar apenas campos de texto/data (manter dados numéricos visíveis)
  • Fatos: Mascarar apenas campos numéricos (manter contexto dimensional)
# Example: Protect customer/product names while keeping sales figures visible
dotnet run -- --port 56751 --obfuscation-strategy dimensions --encryption-key "YourSecureKey123!"

Truncamento de Saída

Limitação automática de linhas com metadados abrangentes:

  • Limite padrão de 500 linhas (configurável)
  • A resposta inclui: totalRows, displayedRows, truncated, hasMore
# Example: Increase row limit for analysis
dotnet run -- --port 56751 --max-rows 2000

Ferramentas

list_objects

  • Lista todos os objetos no modelo (tabelas, colunas, medidas, relações)
  • Retorna tipo do objeto, nome e metadados básicos

get_object_details

  • Recupera metadados detalhados para um objeto específico (tabela, coluna, medida)
  • Retorna propriedades, tipos de dados, relações e dependências

list_functions

  • Lista funções DAX disponíveis com filtragem opcional por categoria ou origem
  • Retorna nome da função, descrição, classificação de interface e origem

get_function_details

  • Recupera detalhes abrangentes para uma função DAX específica, incluindo informações completas de parâmetros
  • Retorna assinatura da função, requisitos de parâmetros, tipo de retorno e compatibilidade com DirectQuery

run_query

  • Executa uma consulta DAX personalizada contra o modelo
  • Retorna resultados da consulta com metadados (total de linhas, status de truncamento)

1. Descoberta de Modelo

Use [ListTables], [GetTableColumns] e [GetTableRelationships] para entender rapidamente a estrutura de um modelo desconhecido sem precisar navegar manualmente pelo Power BI Desktop.

2. Assistência DAX

Clientes LLM podem usar [ListMeasures] e [GetMeasureDetails] para aprender seus padrões DAX existentes e sugerir novas medidas consistentes que sigam suas convenções de nomenclatura e estilos de cálculo.

3. Depuração

Combine [RunQuery] com [ValidateDaxSyntax] para testar e refinar iterativamente expressões DAX com feedback imediato sobre sintaxe e resultados.

validate_query

  • Valida a sintaxe da consulta DAX sem executá-la
  • Retorna correção da sintaxe e mensagens de erro, se aplicável

analyze_query_performance

  • Analisa o desempenho de consultas DAX e fornece sugestões de otimização
  • Retorna tempo de execução, uso de recursos e recomendações de melhoria

Instalação

Instruções de Configuração

Requisitos

  • Power BI Desktop (com um arquivo PBIX aberto para descoberta)
  • Sistema operacional Windows
  • Visual Studio Code (para integração com o servidor MCP)
  • .NET 8.0 Runtime

Configuração a partir da Versão Pré-compilada

  1. Baixe a versão do diretório Releases ou da página de releases do GitHub e extraia para o local de sua preferência.

  2. Abra o Power BI Desktop com um arquivo PBIX com o qual deseja trabalhar.

  3. Obtenha as informações da instância do Power BI

Existem várias maneiras de detectar instâncias do Power BI Desktop. A mais fácil é abrir o Tabular Editor e verificar a porta na string de conexão.

Tabular Editor

Basta adicionar a porta (63717 no exemplo acima) à configuração do seu servidor MCP na próxima etapa (você pode ignorar o ID do banco de dados, pois este servidor se conecta ao modelo padrão). Se você não tiver o Tabular Editor, pode usar a ferramenta de descoberta incluída para encontrar a instância e o banco de dados em execução.

Abra o PowerShell, navegue até o diretório da versão e execute:

cd path\to\release
.\pbi-local-mcp.DiscoverCli.exe

Nota: No PowerShell, você deve usar o prefixo .\ para executar executáveis do diretório atual.

Siga as instruções para:

  • Selecionar a instância do Power BI Desktop (identificada pela porta)
  • Escolher o banco de dados/modelo ao qual conectar

Isso cria um arquivo .env com PBI_PORT e PBI_DB_ID no diretório da versão, que você pode referenciar na sua configuração MCP ou ignorar se especificar a porta diretamente.

  1. Configure o servidor MCP no seu editor. Para VS Code com Roo, crie/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"
          ]
        }
      }
    }
    
    Substitua path\\to\\release pelo caminho real do seu diretório da versão e YOUR_PBI_PORT pelo número da porta da instância do PBI.

Configuração a partir do Código-Fonte (Para Desenvolvimento)

  1. Clone o repositório:

    git clone <repository-url>
    cd MCPBI
    
  2. Compile o projeto:

    dotnet build
    
  3. Abra o Power BI Desktop com um arquivo PBIX.

  4. Execute a descoberta para criar o arquivo .env:

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

    Siga as instruções para selecionar a instância e o banco de dados.

  5. Configure o servidor MCP em .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"
          ]
        }
      }
    }
    

    Substitua path\\to\\MCPBI pelo caminho real do seu repositório.

Notas de Configuração

  • Use porta ou envFile: Você pode especificar a porta do Power BI diretamente em args ou usar envFile para carregar de .env.
  • Argumento de porta: O argumento --port na configuração da versão conecta-se à instância específica do Power BI Desktop nessa porta
  • envFile: A configuração de desenvolvimento usa envFile para carregar automaticamente PBI_PORT e PBI_DB_ID de .env
  • alwaysAllow: Lista todas as ferramentas que podem ser usadas sem exigir aprovação do usuário para cada invocação
  • Diretório de trabalho: O parâmetro cwd define o diretório de trabalho onde o arquivo .env está localizado