对这个项目感兴趣的人可能也会对后续项目 tabular-mcp 感兴趣,该项目允许在本地 PowerBI 模型上运行 DAX 查询。 非常欢迎支持!
这是一个用于 PBIXRay 的 模型上下文协议 (MCP) 服务器。
此 MCP 服务器公开了 PBIXRay 的功能,作为工具和资源供 LLM 客户端与 Power BI (.pbix) 文件进行交互。
工具列表是可配置的,因此您可以选择要提供给 MCP 客户端的工具。 如果您不使用某些功能或不想暴露敏感信息,这将非常有用。
| 工具 | 类别 | 描述 |
|---|---|---|
load_pbix_file | 核心 | 加载一个 Power BI (.pbix) 文件以进行分析 |
get_tables | 模型 | 列出模型中的所有表 |
get_metadata | 模型 | 获取有关 Power BI 配置的元数据 |
get_power_query | 查询 | 显示用于数据转换的所有 M/Power Query 代码 |
get_m_parameters | 查询 | 显示所有 M 参数值 |
get_model_size | 模型 | 获取模型大小(以字节为单位) |
get_dax_tables | 查询 | 查看 DAX 计算表 |
get_dax_measures | 查询 | 通过表或度量值名称过滤访问 DAX 度量值 |
get_dax_columns | 查询 | 通过过滤选项访问计算列的 DAX 表达式 |
get_schema | 结构 | 获取有关数据模型架构和列类型的详细信息 |
get_relationships | 结构 | 获取有关数据模型关系的详细信息 |
get_table_contents | 数据 | 使用分页检索指定表的内容 |
get_statistics | 模型 | 获取有关模型的统计信息,可选过滤 |
get_model_summary | 模型 | 获取当前 Power BI 模型的全面摘要 |
将服务器配置添加到客户端配置文件中。例如,对于 Claude Desktop:
{
"mcpServers": {
"pbixray": {
"command": "wsl.exe",
"args": [
"bash",
"-c",
"source ~/dev/pbixray-mcp/venv/bin/activate && python ~/dev/pbixray-mcp/src/pbixray_server.py"
]
}
}
}
在 Windows 上使用 Claude Desktop 并在 WSL 中使用 PBIXRay MCP 服务器时,需要注意加载 PBIX 文件时的路径差异。
Windows 路径(如 C:\Users\name\file.pbix)不能直接在 WSL 中访问。让您的 AI 助手知道如何在路径之间进行转换,通过添加以下说明到项目说明或其他类似文档中:
“请注意,MCP 服务器正在 WSL 中运行。Windows 路径(如 C:\Users\name\Downloads\file.pbix)不能直接在 WSL 中访问。相反,在引用文件时使用 WSL 路径:
Windows: C:\Users\name\Downloads\file.pbix
WSL: /mnt/c/Users/name/Downloads/file.pbix”
服务器支持几个命令行选项:
--disallow [tool_names]:出于安全原因禁用特定工具--max-rows N:设置返回的最大行数(默认:100)--page-size N:设置分页结果的默认页面大小(默认:20)可以在配置 JSON 中按需添加命令行选项:
{
"mcpServers": {
"pbixray": {
"command": "wsl.exe",
"args": [
"bash",
"-c",
"source ~/dev/pbixray-mcp/venv/bin/activate && python ~/dev/pbixray-mcp/src/pbixray_server.py --max-rows 100 --page-size 20 --disallow get_power_query"
],
"env": {}
}
}
}
工具支持额外参数用于过滤和分页:
像 get_dax_measures、get_dax_columns、get_schema 等工具支持按特定名称过滤:
# 从特定表获取度量值
get_dax_measures(table_name="Sales")
# 获取特定度量值
get_dax_measures(table_name="Sales", measure_name="Total Sales")
get_table_contents 工具支持分页以高效处理大表:
# 获取客户表的第一页(默认每页 20 行)
get_table_contents(table_name="Customer")
# 获取第二页,每页 50 行
get_table_contents(table_name="Customer", page=2, page_size=50)
您可以安装 PBIXRay MCP 服务器:
pip install pbixray-mcp-server
对于参与项目开发的人员:
克隆仓库:
git clone https://github.com/username/pbixray-mcp.git
cd pbixray-mcp
在开发模式下安装:
pip install -e .
如果是从源码安装,请创建虚拟环境并安装依赖项:
python -m venv venv
source venv/bin/activate # 在 Windows 上:venv\Scripts\activate
pip install mcp pbixray numpy
仓库包括示例文件和测试脚本,帮助您开始:
# 使用 demo/ 文件夹中的示例 AdventureWorks Sales.pbix 文件进行测试
python tests/test_with_sample.py
# 尝试交互式演示
python examples/demo.py
# 对特定功能进行独立测试
python test_pagination.py
python test_metadata_fix.py
测试脚本将帮助您了解如何使用提供的样本 PBIX 文件与服务器进行交互。
在开发过程中测试服务器,可以使用 MCP Inspector:
# 先激活您的环境
source venv/bin/activate
# 运行 MCP Inspector
mcp dev src/pbixray_server.py
这将启动一个交互会话,您可以在其中调用工具并测试响应。
pbixray-mcp/
├── README.md - 本文件
├── INSTALLATION.md - 详细的安装说明
├── src/ - 源代码
│ ├── __init__.py
│ └── pbixray_server.py
├── tests/ - 测试脚本
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_server.py
│ └── test_with_sample.py
├── examples/ - 示例脚本和配置
│ ├── demo.py
│ └── config/
├── demo/ - 示例 PBIX 文件
│ ├── README.md
│ └── AdventureWorks Sales.pbix
└── docs/ - 额外文档
└── ROADMAP.md
非常欢迎贡献!