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
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
-
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.
-
Abra o Power BI Desktop com um arquivo PBIX com o qual deseja trabalhar.
-
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.
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.
- Configure o servidor MCP no seu editor. Para VS Code com Roo, crie/edite
.roo/mcp.json:
Substitua{ "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\\releasepelo caminho real do seu diretório da versão eYOUR_PBI_PORTpelo número da porta da instância do PBI.
Configuração a partir do Código-Fonte (Para Desenvolvimento)
-
Clone o repositório:
git clone <repository-url> cd MCPBI -
Compile o projeto:
dotnet build -
Abra o Power BI Desktop com um arquivo PBIX.
-
Execute a descoberta para criar o arquivo
.env:dotnet run --project pbi-local-mcp/pbi-local-mcp.csproj discover-pbiSiga as instruções para selecionar a instância e o banco de dados.
-
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\\MCPBIpelo caminho real do seu repositório.
Notas de Configuração
- Use porta ou envFile: Você pode especificar a porta do Power BI diretamente em
argsou usarenvFilepara carregar de.env. - Argumento de porta: O argumento
--portna configuração da versão conecta-se à instância específica do Power BI Desktop nessa porta - envFile: A configuração de desenvolvimento usa
envFilepara carregar automaticamentePBI_PORTePBI_DB_IDde.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
cwddefine o diretório de trabalho onde o arquivo.envestá localizado