返回市场
表格型-MCP

表格型-MCP

作者:jonaolden16 星标更新:2025-11-21

项目介绍

MCPBI - 制表模型MCP服务器

这是一个用于本地运行制表模型(即在PowerBI Desktop上运行的PowerBI模型)的模型上下文协议(MCP)服务器。

该服务器允许启用MCP的大型语言模型(LLM)客户端与您的制表模型进行通信,并帮助您调试、分析和组合DAX查询。

示例:Copilot通过MCP查询制表模型

roocodedemo

工作原理

它使用ADOMD.NET中的AdomdConnection连接到本地运行的制表模型实例。

通过此连接,服务器允许客户端执行DAX查询并通过预定义工具获取模型元数据(使用DMV查询),以及自定义DAX查询以供调试和开发。

此MCP服务器通过ADOMD.NET实现客户端与Power BI制表模型之间的通信,支持预定义的元数据查询以及具有完整DEFINE块功能的灵活DAX查询,以进行高级分析。

工具

MCPBI提供了10种工具,使LLM客户端能够探索、分析和调试您的Power BI模型:

模型探索工具

ListTables

  • 列出模型中所有表及其元数据(存储模式、可见性、血缘标签)
  • 用例:在开始开发或理解模型结构时快速发现可用表

GetTableDetails

  • 获取特定表的详细元数据
  • 用例:在编写DAX之前了解表属性、表达式和配置

GetTableColumns

  • 列出表中所有列及其数据类型、格式和属性
  • 用例:在构建度量或查询时识别可用列及其特征

GetTableRelationships

  • 显示与表关联的所有关系(基数、过滤方向、活动状态)
  • 用例:理解数据模型连接以确保正确的DAX上下文和过滤传播

度量管理工具

ListMeasures

  • 列出所有度量及其名称、表、数据类型和可见性(可选按表过滤)
  • 用例:发现现有度量以避免重复或找到遵循的模式

GetMeasureDetails

  • 获取完整的度量定义,包括完整的DAX表达式
  • 用例:研究现有度量逻辑、故障排除计算或准备重构

数据探索工具

PreviewTableData

  • 返回表中的前N行
  • 用例:验证数据结构、检查样本值或在开发过程中验证数据加载

DAX开发工具

RunQuery

  • 执行包含完整DEFINE块、EVALUATE语句或简单表达式的DAX查询
  • 返回结构化结果或详细的错误信息以兼容MCP
  • 用例:测试度量、调试计算、分析数据或在实施报告之前验证查询结果

ValidateDaxSyntax

  • 验证DAX表达式并提供复杂度指标
  • 返回语法错误、警告和最佳实践建议
  • 用例:早期捕获语法错误、获得改进建议并在部署前评估表达式复杂度

AnalyzeQueryPerformance

  • 分析查询执行时间和性能特性
  • 提供性能评分、复杂度因素和优化建议
  • 用例:识别慢查询、理解瓶颈并优化DAX以提高报告性能

这些工具如何帮助Power BI开发

1. 模型发现

使用[ListTables]、[GetTableColumns]和[GetTableRelationships]快速了解不熟悉的模型结构,无需手动点击Power BI Desktop。

2. DAX辅助

LLM客户端可以使用[ListMeasures]和[GetMeasureDetails]学习现有的DAX模式,并建议遵循命名约定和计算风格的一致新度量。

3. 调试

结合使用[RunQuery]和[ValidateDaxSyntax]迭代测试和精炼DAX表达式,立即获得语法和结果反馈。

4. 性能优化

使用[AnalyzeQueryPerformance]识别慢查询,然后通过迭代改进并使用[RunQuery]验证性能提升。

安装

设置说明

要求

  • Power BI Desktop(打开PBIX文件以供发现)
  • Windows操作系统
  • Visual Studio Code(用于MCP服务器集成)
  • .NET 8.0运行时

从预构建版本设置(推荐)

  1. 发布目录或GitHub发布页面下载并解压到首选位置。

  2. 打开Power BI Desktop,选择要处理的PBIX文件。

  3. 获取PowerBI实例信息

有几种方法可以检测Power BI Desktop实例。 最简单的方法是打开Tabular Editor并检查连接字符串中的端口。

<img width="317" height="63" alt="Tabular Editor" src="https://gips1.baidu.com/it/u=2176614244,3589326000&fm=3081&app=3081&f=PNG?w=317&h=63" />

只需将端口(如上图所示的63717)添加到下一步中的MCP服务器配置中(您可以忽略数据库ID,因为此服务器连接到默认模型)。
如果您没有Tabular Editor,可以使用随附的发现工具来查找正在运行的实例和数据库。

打开PowerShell,导航到发布目录并运行:

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

注意:在PowerShell中,必须使用.\前缀来运行当前目录中的可执行文件。

按照提示操作:

  • 选择Power BI Desktop实例(由端口标识)
  • 选择要连接的数据库/模型

这将在发布目录中创建一个包含PBI_PORTPBI_DB_ID.env文件,您可以在MCP配置中引用它,或者如果直接指定端口则忽略它。

  1. 配置MCP服务器 在编辑器中。对于安装了Roo的VS Code,创建或编辑.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"
          ]
        }
      }
    }
    
    path\\to\\release替换为您实际的发布目录路径,并将YOUR_PBI_PORT替换为PBI实例的端口号。

从源代码设置(适用于开发)

  1. 克隆仓库

    git clone <repository-url>
    cd tabular-mcp
    
  2. 构建项目

    dotnet build
    
  3. 打开Power BI Desktop,选择PBIX文件。

  4. 运行发现 以创建.env文件:

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

    按照提示选择实例和数据库。

  5. 配置MCP服务器.roo/mcp.json中:

    {
      "mcpServers": {
        "mcpbi-dev": {
          "type": "stdio",
          "command": "dotnet",
          "cwd": "path\\to\\tabular-mcp",
          "envFile": "path\\to\\tabular-mcp\\.env",
          "args": [
            "exec",
            "path\\to\\tabular-mcp\\pbi-local-mcp\\bin\\Debug\\net8.0\\pbi-local-mcp.dll"
          ],
          "disabled": false,
          "alwaysAllow": [
            "ListTables",
            "GetTableDetails",
            "GetTableColumns",
            "GetTableRelationships",
            "ListMeasures",
            "GetMeasureDetails",
            "PreviewTableData",
            "RunQuery",
            "ValidateDaxSyntax",
            "AnalyzeQueryPerformance"
          ]
        }
      }
    }
    

    path\\to\\tabular-mcp替换为您实际的仓库路径。

配置说明

  • 使用端口或envFile:您可以直接在args中指定Power BI端口,也可以使用envFile.env加载。
  • 端口参数:发布配置中的--port参数连接到该端口上的特定Power BI Desktop实例
  • envFile:开发设置使用envFile自动从.env加载PBI_PORTPBI_DB_ID
  • alwaysAllow:列出所有可以使用的工具,无需每次调用时都要求用户批准
  • 工作目录cwd参数设置.env文件所在的工作目录