Power BI语义模型开发工具

一个通过MCP客户端与Power BI项目和独立语义模型交互的工具,旨在提高语义模型开发任务的效率。

  • by crazy-treyn
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 crazy-treyn/pbip-mcp

使用说明

pbip-mcp(电力BI项目mcp服务器)

目的

通过MCP客户端与Power BI项目和独立语义模型进行交互的简单方法,以提高典型语义模型开发任务的生产率。

同时支持:

  • 📁 PBIP项目:目录包含 .pbip 与关联的文件 .SemanticModel 文件夹
  • 📂 独立语义模型:个人 .SemanticModel 目录

安装

先决条件:

  • uv
  • Power BI项目 (目录与 .pbip 文件)或 独立语义模型 (.SemanticModel 文件夹)使用。TMDL格式(不适用于.TMSL)
  • MCP客户端,如VS Code或Claude Desktop

安装MCP服务器

git clone https://github.com/crazy-treyn/pbip-mcp.git
cd pbip-mcp
uv sync # initialize virtual environment and install dependencies

将MCP服务器添加到MCP客户端

{
  "mcpServers": {
    "pbip-mcp": {
      "command": "C:\\{YOUR_GIT_REPO_HERE}\\.venv\\Scripts\\python.exe",
      "args": [
        "-m",
        "pbip_mcp.server"
      ]
    }
  }
}

可用的MCP工具

📊 工具概述矩阵

类别 工具 范围 目的 效率
项目 list_projects 目录 查找所有PBIP项目 🚀 单次通话
项目 load_project 单个项目 加载项目元数据 🚀 单次通话
模型 get_model_details 完整模型 完整模型分析 🚀 一下子什么都做了
表格 list_tables 所有表格 表格基本信息 🚀 单次通话
表格 get_table_details 单表 深度表分析 ⚡ 每张桌子
列 list_columns 全表/单表 列信息 🚀 所有桌子或⚡ 每张桌子
列 add_column 单表 创建新列 ⚡ 每列
列 update_column 单表 修改现有列 ⚡ 每列
列 delete_column 单表 删除列 ⚡ 每列
措施 list_measures 全表/单表 测量信息 🚀 所有桌子或⚡ 每张桌子
措施 add_measure 单表 创建新度量 ⚡ 按措施
措施 update_measure 单表 修改现有度量 ⚡ 按措施
措施 delete_measure 单表 删除度量值 ⚡ 按措施
关系 list_relationships 所有关系 关系信息 🚀 单次通话

传说: 🚀 = 批量操作(高效)|⚡ = 单项作业

📋 详细工具参考

项目管理

工具 必需参数 可选参数 说明
list_projects directory - 扫描目录以查找所有PBIP项目和独立语义模型
load_project project_path - 加载包含元数据和工件信息的完整项目结构

模型分析

工具 必需参数 可选参数 说明
get_model_details project_path* - 🚀 散装: 完整的模型概述,包括所有表、列、度量值、关系和统计数据

*project_path 接受以下任一条件:

  • PBIP项目目录的路径(包含 .pbip 文件)
  • 通往独立之路 .SemanticModel 目录

表操作

工具 必需参数 可选参数 说明
list_tables project_path* - 所有表的基本信息(名称、计数、可见性标志)
get_table_details project_path*, table_name - 详细的单表分析,包括列、度量值、分区、层次结构和关系

列操作

工具 必需参数 可选参数 说明
list_columns project_path* table_name 🚀 散装: 所有表中的所有列或具有汇总统计信息的单个表列
add_column project_path*, table_name, column_name data_type, expression, format_string, summarize_by, is_hidden 创建新的常规列或计算列
update_column project_path*, table_name, column_name data_type, expression, format_string, summarize_by, is_hidden 修改现有列属性
delete_column project_path*, table_name, column_name - 从表中删除列

测量操作

工具 必需参数 可选参数 说明
list_measures project_path* table_name 🚀 散装: 所有表中的所有度量值或具有汇总统计的单表度量值
add_measure project_path*, table_name, measure_name, expression description, format_string 创建新的DAX度量值并进行验证
update_measure project_path*, table_name, measure_name expression, description, format_string 修改现有度量值属性
delete_measure project_path*, table_name, measure_name - 从表中删除度量值

关系运营

工具 必需参数 可选参数 说明
list_relationships project_path* - 所有具有基数、活动状态和摘要统计信息的模型关系

注: 全部 project_path 参数接受以下任一条件:

  • PBIP项目目录的路径(包含 .pbip 文件)
  • 通往独立之路 .SemanticModel 目录

用法

设置MCP客户端并连接到MCP服务器后,通过提供以下任一路径开始对话:

  • PBIP项目:包含您的目录的路径 .pbip 文件
  • 独立语义模型:直接通往您的路径 .SemanticModel 目录

支持的路径类型

# PBIP Project (directory containing .pbip file)
C:\MyProject\SalesReport\

# Standalone Semantic Model (direct path to .SemanticModel folder)  
C:\MyProject\SalesReport.SemanticModel\

示例报告

提供了一个示例报告供您测试,因此您不必使用自己的报告,位于 TestReport 文件夹

示例问题

对于PBIP项目:

  • 在此处列出我的Power BI项目中“事实”表中的所有列和度量值: C:\Projects\SalesAnalysis\
  • 获取以下型号的完整详细信息: C:\Users\YourName\PowerBI\MyProject\

对于独立语义模型:

  • 分析以下中的所有表和关系: C:\Models\SalesData.SemanticModel\
  • 在以下内容中为所有没有描述的措施添加描述: C:\SemanticModels\Finance.SemanticModel\

一般任务:

  • 使用以下日期逻辑添加我所有度量的YTD变体:{在此处插入日期逻辑}
  • 显示所有表中的所有计算列