返回市场
动力BI-MCP服务器

动力BI-MCP服务器

作者:michaelmckinleyconsulting3 星标更新:2025-11-19

项目介绍

Power BI MCP 服务器

这是一个模型上下文协议(MCP)服务器,使AI助手能够与Power BI工作区、数据集、报告和仪表板进行程序化交互。

🚀 功能

  • 工作区管理:列出并管理工作区
  • 报告操作:访问、克隆、导出和重新绑定报告
  • 数据集管理:执行DAX查询、刷新数据集、管理计划
  • 仪表板访问:列出并交互仪表板
  • 推送数据集:创建和管理实时数据推送数据集
  • 认证:使用Microsoft Entra ID的安全OAuth2认证

📋 先决条件

  • Node.js(v18或更高版本)
  • npm 或 yarn
  • Power BI Pro或Premium许可证
  • Microsoft Entra ID应用注册
  • 支持MCP的AI助手(如Claude Desktop等)

🔧 安装

  1. 克隆仓库:
git clone https://github.com/michaelmckinleyconsulting/powerbi-mcp-server.git
cd powerbi-mcp-server
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

⚙️ 配置

1. Microsoft Entra ID 设置

  1. Azure门户中注册一个应用程序
  2. 配置Power BI服务的API权限
  3. 记录以下信息:
    • 客户端ID
    • 租户ID
    • 客户端密钥(如果使用仅应用认证)

2. 环境变量

在根目录下创建一个.env文件(参考.env.example模板):

PBI_PUBLIC_CLIENT_ID=your_client_id
PBI_TENANT_ID=your_tenant_id  # 可选,默认为'common'
PBI_SCOPES=https://analysis.windows.net/powerbi/api/.default  # 可选,或指定自定义范围

注意:此服务器使用带有PKCE的授权码流(不需要客户端密钥)。配置您的Azure应用以包含重定向URI:

  • http://localhost
  • http://127.0.0.1

3. MCP配置

添加到您的MCP客户端配置中:

Claude Desktop

{
  "mcpServers": {
    "powerbi": {
      "command": "node",
      "args": ["path/to/powerbi-mcp-server/dist/index.js"],
      "env": {
        "PBI_PUBLIC_CLIENT_ID": "your_client_id",
        "PBI_TENANT_ID": "your_tenant_id"
      }
    }
  }
}

VS Code MCP扩展

{
  "mcp.servers": {
    "powerbi": {
      "command": "node",
      "args": ["path/to/powerbi-mcp-server/dist/index.js"],
      "transport": "stdio",
      "env": {
        "PBI_PUBLIC_CLIENT_ID": "your_client_id"
      }
    }
  }
}

📖 使用方法

基本操作

配置完成后,您的AI助手可以:

  • 列出工作区:"显示我所有的Power BI工作区"
  • 执行DAX:"运行一个DAX查询以获取按区域划分的销售情况"
  • 导出报告:"将季度报告导出为PDF"
  • 刷新数据集:"刷新销售数据集"
  • 管理访问:"将user@example.com添加到Analytics工作区"

示例提示

"列出我的Sales工作区中的所有报告"
"对Finance数据集执行这个DAX查询:EVALUATE SUMMARIZE(...)"
"将月度KPI报告导出为PowerPoint"
"显示Customer数据集的刷新历史"
"创建用于实时监控的推送数据集"

🔐 认证

服务器支持两种认证方式:

  1. 交互式(推荐):用户通过浏览器登录
  2. 仅应用:使用客户端凭据(需要管理员同意)

首次运行时,服务器会通过默认浏览器提示进行认证。

📁 项目结构

powerbi-mcp-server/
├── src/
│   ├── index.ts           # 主服务器入口点
│   ├── auth/              # 认证逻辑
│   ├── handlers/          # 请求处理器
│   ├── types/             # TypeScript定义
│   └── utils/             # 工具函数
├── dist/                  # 编译后的JavaScript(被git忽略)
├── package.json
├── tsconfig.json
└── README.md

🛠️ 开发

在开发模式下运行

npm run dev

运行测试

npm test

为生产构建

npm run build

📊 支持的Power BI操作

工作区(组)

  • 列出工作区
  • 获取工作区用户
  • 添加/移除用户

报告

  • 列出报告
  • 获取报告元数据
  • 克隆报告
  • 导出为各种格式(PDF、PPTX、PNG)
  • 重新绑定到不同的数据集

数据集

  • 列出数据集
  • 执行DAX查询
  • 触发刷新
  • 管理刷新计划
  • 获取刷新历史

仪表板

  • 列出仪表板
  • 获取仪表板磁贴

推送数据集

  • 创建推送数据集
  • 向表中添加行
  • 清除表数据

🔧 故障排除

常见问题

  1. 认证失败:确保您的Azure应用注册具有正确的Power BI权限
  2. 未找到工作区:验证您的账户是否具有访问Power BI工作区的权限
  3. DAX查询失败:检查数据集权限和查询语法
  4. 导出超时:大型报告可能需要时间;服务器处理异步轮询

调试模式

启用详细日志记录:

DEBUG=powerbi:* node dist/index.js

📄 许可

该项目在修改后的MIT许可下是源代码可用的,附带Commons条款——详情请参阅LICENSE文件。

非商业用途:免费用于个人、教育和公司内部用途。

商业用途:需要单独的商业许可。请联系[michael@mckinley.consulting]获取商业许可。

这并非OSI批准的“开源”产品,但由于商业限制,但允许社区在非商业用途上全面使用。

🤝 贡献

我们欢迎贡献!请注意:

  1. 通过贡献,您同意您的贡献将根据相同的许可进行许可
  2. 对于重大更改,请先打开一个问题进行讨论
  3. 确保所有测试通过,并为新功能添加测试

💬 支持

🙏 致谢


:这不是微软官方产品。Power BI是微软公司的商标。