这是一个用于本地运行制表模型(即在PowerBI Desktop上运行的PowerBI模型)的模型上下文协议(MCP)服务器。
该服务器允许启用MCP的大型语言模型(LLM)客户端与您的制表模型进行通信,并帮助您调试、分析和组合DAX查询。
示例:Copilot通过MCP查询制表模型
它使用ADOMD.NET中的AdomdConnection连接到本地运行的制表模型实例。
通过此连接,服务器允许客户端执行DAX查询并通过预定义工具获取模型元数据(使用DMV查询),以及自定义DAX查询以供调试和开发。
此MCP服务器通过ADOMD.NET实现客户端与Power BI制表模型之间的通信,支持预定义的元数据查询以及具有完整DEFINE块功能的灵活DAX查询,以进行高级分析。
MCPBI提供了10种工具,使LLM客户端能够探索、分析和调试您的Power BI模型:
ListTables
GetTableDetails
GetTableColumns
GetTableRelationships
ListMeasures
GetMeasureDetails
PreviewTableData
RunQuery
ValidateDaxSyntax
AnalyzeQueryPerformance
使用[ListTables]、[GetTableColumns]和[GetTableRelationships]快速了解不熟悉的模型结构,无需手动点击Power BI Desktop。
LLM客户端可以使用[ListMeasures]和[GetMeasureDetails]学习现有的DAX模式,并建议遵循命名约定和计算风格的一致新度量。
结合使用[RunQuery]和[ValidateDaxSyntax]迭代测试和精炼DAX表达式,立即获得语法和结果反馈。
使用[AnalyzeQueryPerformance]识别慢查询,然后通过迭代改进并使用[RunQuery]验证性能提升。
从发布目录或GitHub发布页面下载并解压到首选位置。
打开Power BI Desktop,选择要处理的PBIX文件。
获取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中,必须使用.\前缀来运行当前目录中的可执行文件。
按照提示操作:
这将在发布目录中创建一个包含PBI_PORT和PBI_DB_ID的.env文件,您可以在MCP配置中引用它,或者如果直接指定端口则忽略它。
.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实例的端口号。克隆仓库:
git clone <repository-url>
cd tabular-mcp
构建项目:
dotnet build
打开Power BI Desktop,选择PBIX文件。
运行发现 以创建.env文件:
dotnet run --project pbi-local-mcp/pbi-local-mcp.csproj discover-pbi
按照提示选择实例和数据库。
配置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替换为您实际的仓库路径。
args中指定Power BI端口,也可以使用envFile从.env加载。--port参数连接到该端口上的特定Power BI Desktop实例envFile自动从.env加载PBI_PORT和PBI_DB_IDcwd参数设置.env文件所在的工作目录