使用说明
MCPBI-表格模型MCP服务器
这是一个模型上下文协议(MCP)服务器,用于在本地运行表格模型,即在PowerBI桌面上运行的PowerBI模型。
此服务器允许启用MCP的LLM客户端与您的表格模型通信,并帮助您调试、分析和编写DAX查询。
示例:副驾驶通过MCP查询表格模型
运作原理
它使用以下命令连接到表格模型的本地运行实例 ADOMD中的AdomdConnection。网.
使用此连接,服务器然后允许客户端执行 DAX查询 并通过预定义的工具(使用DMV查询)检索模型元数据以实现高精度,以及用于调试和开发的自定义DAX查询。
特性
配置选项
端口
指定要连接的Power BI Desktop实例端口(必需)。
# Example: Connect to Power BI Desktop instance on port 56751
dotnet run -- --port 56751
混淆
使用可配置的加密策略保护敏感数据:
- 无 (默认):无混淆
- 全部:屏蔽所有值
- 维度:仅屏蔽文本/日期字段(保持数字数据可见)
- 事实:仅屏蔽数字字段(保持维度上下文)
# Example: Protect customer/product names while keeping sales figures visible
dotnet run -- --port 56751 --obfuscation-strategy dimensions --encryption-key "YourSecureKey123!"
输出截断
具有全面元数据的自动行限制:
- 默认500行限制(可配置)
- 答复包括:
totalRows,displayedRows,truncated,hasMore
# Example: Increase row limit for analysis
dotnet run -- --port 56751 --max-rows 2000
工具
list_objects
- 列出模型中的所有对象(表、列、度量值、关系)
- 返回对象类型、名称和基本元数据
get_object_details
- 检索特定对象(表、列、度量值)的详细元数据
- 返回属性、数据类型、关系和依赖关系
list_functions
- 列出可用的DAX函数,并可选择按类别或来源进行筛选
- 返回函数名、描述、接口分类和起源
get_function_details
- 检索特定DAX函数的全面详细信息,包括完整的参数信息
- 返回函数签名、参数要求、返回类型和DirectQuery兼容性
run_query
- 对模型执行自定义DAX查询
- 返回带有元数据的查询结果(总行数、截断状态)
1. 模型发现
使用[ListTables], [GetTableColumns],以及[GetTableRelationships]无需手动点击Power BI Desktop,即可快速理解不熟悉模型的结构。
2. DAX援助
LLM客户端可以使用[ListMeasures]以及[GetMeasureDetails]了解您现有的DAX模式,并建议遵循您的命名约定和计算风格的一致的新度量。
3. 调试
合并[RunQuery]与[ValidateDaxSyntax]迭代测试和优化DAX表达式,并立即反馈语法和结果。
validate_query
- 在不执行的情况下验证DAX查询语法
- 返回语法正确性和错误消息(如果适用)
分析查询性能
- 分析DAX查询性能并提供优化建议
- 返回执行时间、资源使用情况和改进建议
安装
安装说明
需求
- Power BI桌面(打开PBIX文件进行查找)
- Windows操作系统
- Visual Studio代码(用于MCP服务器集成)
- .NET 8.0运行时
从预构建版本设置
-
下载版本 从 发布 目录或GitHub发布页面并解压缩到您的首选位置。
-
打开Power BI桌面 使用您要使用的PBIX文件。
-
获取PowerBI实例信息
有几种方法可以检测Power BI Desktop实例。 最简单的方法是打开表格编辑器并检查连接字符串中的端口。
在下一步中,只需将端口(上例中的63717)添加到MCP服务器配置中即可(您可以忽略数据库ID,因为此服务器连接到默认型号)。
如果没有表格编辑器,可以使用附带的发现工具查找正在运行的实例和数据库。
打开PowerShell,导航到发布目录,然后运行:
cd path\to\release
.\pbi-local-mcp.DiscoverCli.exe
备注:在PowerShell中,必须使用 .\ 从当前目录运行可执行文件的前缀。
按照提示操作:
- 选择Power BI Desktop实例(由端口标识)
- 选择要连接的数据库/模型
这创建了一个 .env 文件包含 PBI_PORT 和 PBI_DB_ID 在发布目录中,您可以在MCP配置中引用该目录,如果直接指定端口,则可以忽略该目录。
- 配置MCP服务器 在你的编辑。对于带有Roo的VS代码,创建/编辑
.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" ] } } }path\\to\\release使用您的实际发布目录路径和YOUR_PBI_PORT使用来自PBI实例的端口号。
源代码设置(用于开发)
-
克隆存储库:
git clone <repository-url> cd MCPBI -
构建项目:
dotnet build -
打开Power BI桌面 使用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\\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" ] } } }替换
path\\to\\MCPBI使用您的实际存储库路径。
配置说明
- 使用端口或envFile:您可以直接在中指定Power BI端口
args或使用envFile从加载.env. - 端口参数:The
--port发布配置中的参数连接到该端口上的特定Power BI Desktop实例 - envFile:开发设置使用
envFile自动加载PBI_PORT和PBI_DB_ID从.env - 始终允许:列出每次调用无需用户批准即可使用的所有工具
- 工作目录:The
cwd参数设置工作目录,其中.env文件已找到
