PBIXRay服务
一种模型上下文协议,允许AI客户端通过PBIXRay Python包查询元数据来与PowerBI模型进行交互。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"pbixray": {
"args": [
"bash",
"-c",
"source ~/dev/pbixray-mcp/venv/bin/activate \u0026\u0026 python ~/dev/pbixray-mcp/src/pbixray_server.py --max-rows 100 --page-size 50 --disallow get_power_query"
],
"command": "wsl.exe",
"env": {}
}
}
}
该服务需要配置环境变量:DISALLOW、MAX_ROWS、PAGE_SIZE
服务介绍
PBIXRay MCP 服务器
一个用于 PBIXRay 的 模型上下文协议 (MCP) 服务器。
此 MCP 服务器将 PBIXRay 的功能作为工具和资源暴露给 LLM 客户端,以便与 Power BI (.pbix) 文件进行交互。
功能
- 加载和分析 PBIX 文件
- 数据模型探索
- 列出模型中的表
- 获取模型元数据
- 检查模型大小
- 获取模型统计信息
- 获取全面的模型摘要
- 查询语言访问
- 查看 Power Query (M) 代码
- 访问 M 参数
- 探索 DAX 计算表
- 查看 DAX 度量
- 检查 DAX 计算列
- 数据结构分析
- 获取模式信息
- 分析表关系
- 通过分页访问表内容
工具列表是可配置的,因此您可以选择要向 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 模型的综合摘要 |
使用方法
WSL(推荐)
将服务器配置添加到您的客户端配置文件中。例如,对于 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"
]
}
}
}
WSL 路径转换(Claude 项目说明)
当在 Windows 上使用 Claude Desktop 并通过 WSL 运行 PBIXRay MCP Server 时,加载 PBIX 文件时需要注意路径差异。
Windows 路径(如 C:\Users\name\file.pbix)不能直接在 WSL 中访问。请让你的 AI 助手知道如何在路径之间进行转换,可以通过在项目说明或类似文档中添加以下内容:
"请注意 mcp 服务器运行在 wsl 中。Windows 路径(如 C:\Users\name\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 50 --disallow get_power_query"
],
"env": {}
}
}
}
查询选项
工具支持用于过滤和分页的额外参数:
按名称过滤
像 get_dax_measures, get_dax_columns, get_schema 等工具支持按特定名称过滤:
# Get measures from a specific table
get_dax_measures(table_name="Sales")
# Get a specific measure
get_dax_measures(table_name="Sales", measure_name="Total Sales")
大表分页
get_table_contents 工具支持分页以高效处理大表:
# Get first page of Customer table (default 20 rows per page)
get_table_contents(table_name="Customer")
# Get second page with 50 rows per page
get_table_contents(table_name="Customer", page=2, page_size=50)
开发与测试
你可以安装 PBIXRay MCP Server:
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
使用示例文件测试
仓库包含示例文件和测试脚本以帮助你入门:
# Test with sample AdventureWorks Sales.pbix file in demo/ folder
python tests/test_with_sample.py
# Try the interactive demo
python examples/demo.py
# For isolated tests of specific features
python test_pagination.py
python test_metadata_fix.py
这些测试脚本将帮助你理解如何使用 demo/ 目录下提供的示例 PBIX 文件与服务器交互。
开发模式
为了在开发过程中测试服务器,请使用 MCP Inspector:
# Activate your environment first
source venv/bin/activate
# Run the MCP Inspector
mcp dev src/pbixray_server.py
这将启动一个交互会话,您可以在其中调用工具并测试响应。
项目结构
pbixray-mcp/
├── README.md - This file
├── INSTALLATION.md - Detailed installation instructions
├── src/ - Source code
│ ├── __init__.py
│ └── pbixray_server.py
├── tests/ - Test scripts
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_server.py
│ └── test_with_sample.py
├── examples/ - Example scripts and configs
│ ├── demo.py
│ └── config/
├── demo/ - Sample PBIX files
│ ├── README.md
│ └── AdventureWorks Sales.pbix
└── docs/ - Additional documentation
└── ROADMAP.md
贡献
非常欢迎贡献!