返回市场
pbixray-mcp服务器

pbixray-mcp服务器

作者:jonaolden35 星标更新:2025-05-27

项目介绍

MseeP.ai 安全评估徽章

提醒!

对这个项目感兴趣的人可能也会对后续项目 tabular-mcp 感兴趣,该项目允许在本地 PowerBI 模型上运行 DAX 查询。 非常欢迎支持!

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 服务器时,需要注意加载 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_measuresget_dax_columnsget_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

开发安装

对于参与项目开发的人员:

  1. 克隆仓库:

    git clone https://github.com/username/pbixray-mcp.git
    cd pbixray-mcp
    
  2. 在开发模式下安装:

    pip install -e .
    
  3. 如果是从源码安装,请创建虚拟环境并安装依赖项:

    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

贡献

非常欢迎贡献!

致谢

  • Hugoberry - 原始 PBIXRay 库
  • rusiaaman - WCGW(此 MCP 完全由 Claude 使用 wcgw 编写)

许可证(Claude 坚持添加这些)

MIT 许可证