PowerBI模型分析服务器

一个用于通过MCP协议暴露PBIXRay功能的服务器,支持加载分析PowerBI文件、探索数据模型、访问查询语言和分析数据结构。

  • by ngoc0610
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ngoc0610/mcp

使用说明

信息!

对这个项目感兴趣的人也可能对 这个后续项目, 表格式mcp,它允许对本地PowerBI模型运行DAX查询。 非常感谢您的支持!

PBIXRay MCP服务器

A. 模型上下文协议 PBIXRay的MCP服务器。

此MCP服务器公开了以下功能 PBIXRay 作为LLM客户端与Power BI(.pbix)文件交互的工具和资源。

特性

  • [x] 加载和分析PBIX文件
  • [x] 数据模型探索
    • [x] 在模型中列出表
    • [x] 正在检索模型元数据
    • [x] 检查模型尺寸
    • [x] 获取模型统计信息
    • [x] 获取全面的模型摘要
  • [x] 查询语言访问
    • [x] 查看电源查询(M)代码
    • [x] 访问M参数
    • [x] 探索DAX计算表
    • [x] 查看DAX指标
    • [x] 检查DAX计算列
  • [x] 数据结构分析
    • [x] 正在检索架构信息
    • [x] 分析表关系
    • [x] 通过分页访问表内容

工具列表是可配置的,因此您可以选择要向MCP客户端提供哪些工具。 如果您不使用某些功能或不想暴露敏感信息,这很有用。

工具

工具 类别 描述
load_pbix_file 核心 加载Power BI(.pbix)文件进行分析
get_tables 模型 列出模型中的所有表
get_metadata 模型 获取Power BI配置的元数据
get_power_query 查询 显示用于数据转换的所有M/Power查询代码
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上使用WSL中的PBIXRay MCP服务器和Claude Desktop时,加载PBIX文件时需要注意路径差异。 Windows路径(如 C:\Users\name\file.pbix)无法在WSL中直接访问。通过添加以下内容,让您的AI助手知道如何在补丁之间进行转换 “请注意,mcp服务器正在wsl中运行。Windows路径(如C:\Users\name\file.pbix)不能在wsl中直接访问。相反,在引用文件时使用wsl路径: Windows:C:\用户\名称\下载\文件.pbix“ WSL:/mnt/c/Users/name/Downloads/file.pbix”到项目说明或类似文件。

命令行选项

服务器支持多种命令行选项:

  • --disallow [tool_names]:出于安全原因禁用特定工具
  • --max-rows N:设置返回的最大行数(默认值:100)
  • --page-size N:为分页结果设置默认页面大小(默认值:20)

可以在config 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服务器:

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  # On 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

测试脚本将帮助您了解如何使用中提供的示例PBIX文件与服务器交互 demo/ 目录。

发展模式

要在开发过程中测试服务器,请使用MCP检查器:

# 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

贡献

欢迎投稿!

鸣谢

许可证(克劳德坚持添加这些)

MIT许可证