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
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文件已找到
