Power BI MCP服务器
模型上下文协议(MCP)服务器,使AI助手能够以编程方式与Power BI工作区、数据集、报告和仪表板进行交互。
🚀 特性
- 工作空间管理:列出和管理Power BI工作区
- 报告操作:访问、克隆、导出和重新绑定报告
- 数据集管理:执行DAX查询、刷新数据集、管理计划
- 仪表板访问:列出仪表板并与之交互
- 推送数据集:使用实时数据创建和管理推送数据集
- 认证:使用Microsoft Entra ID进行安全的OAuth2身份验证
📋 先决条件
- Node.js(v18或更高版本)
- npm或纱线
- Power BI Pro或高级许可证
- Microsoft Entra ID应用程序注册
- MCP兼容的人工智能助手(克劳德桌面等)
🔧 安装
- 克隆存储库:
git clone https://github.com/michaelmckinleyconsulting/powerbi-mcp-server.git
cd powerbi-mcp-server- 安装依赖项:
npm install- 构建项目:
npm run build⚙️ 配置
1.Microsoft Entra ID设置
- 在中注册应用程序 Azure 门户
- 为Power BI服务配置API权限
- 注意你的:
- 客户端ID - 租户ID - 客户端密码(如果仅使用应用程序身份验证)
2.环境变量
创建一个 .env 根目录中的文件(请参见 .env.example 模板):
PBI_PUBLIC_CLIENT_ID=your_client_id
PBI_TENANT_ID=your_tenant_id # Optional, defaults to 'common'
PBI_SCOPES=https://analysis.windows.net/powerbi/api/.default # Optional, or specify custom scopes备注:此服务器使用带有PKCE的授权码流(不需要客户端密钥)。使用重定向URI配置Azure应用程序:
http://localhosthttp://127.0.0.1
3.MCP配置
添加到MCP客户端配置中:
Claude桌面版
{
"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代码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到分析工作区”
示例提示
"List all reports in my Sales workspace"
"Execute this DAX query against the Finance dataset: EVALUATE SUMMARIZE(...)"
"Export the Monthly KPI report to PowerPoint"
"Show me the refresh history for the Customer dataset"
"Create a push dataset for real-time monitoring"🔐 认证
服务器支持两种身份验证方法:
- 互动(推荐):用户通过浏览器登录
- 仅限应用程序:使用客户端凭据(需要管理员同意)
首次运行时,服务器将提示您通过默认浏览器进行身份验证。
📁 项目结构
powerbi-mcp-server/
├── src/
│ ├── index.ts # Main server entry point
│ ├── auth/ # Authentication logic
│ ├── handlers/ # Request handlers
│ ├── types/ # TypeScript definitions
│ └── utils/ # Utility functions
├── dist/ # Compiled JavaScript (git-ignored)
├── package.json
├── tsconfig.json
└── README.md🛠️ 发展
以开发模式运行
npm run dev运行测试
npm test生产大楼
npm run build📊 支持的Power BI操作
工作区(组)
- 列出工作区
- 获取工作区用户
- 添加/删除用户
报告
- 列出报告
- 获取报告元数据
- 克隆报告
- 导出为各种格式(PDF、PPTX、PNG)
- 重新绑定到不同的数据集
数据集
- 列出数据集
- 执行DAX查询
- 触发器刷新
- 管理刷新计划
- 获取刷新历史记录
仪表盘
- 列出仪表板
- 获取仪表板互动程序
推送数据集
- 创建推送数据集
- 向表中添加行
- 清除表格数据
🔧 故障排除
常见问题
- 身份验证失败:确保您的Azure应用程序注册具有适当的Power BI权限
- 未找到工作区:验证您的帐户是否可以访问Power BI工作区
- DAX查询失败:检查数据集权限和查询语法
- 导出超时:大型报告可能需要时间;服务器处理异步轮询
调试模式
启用详细日志记录:
DEBUG=powerbi:* node dist/index.js📄 许可证
这个项目是 来源可用 根据带有Commons条款的修改后的MIT许可证-请参阅 许可证 文件以获取详细信息。
非商业用途:免费供个人、教育和公司内部使用。
商业用途:需要单独的商业许可证。联系方式\[michael@mckinley.consulting\]商业许可。
由于商业限制,这不是OSI批准的“开源”,但允许社区完全用于非商业目的。
🤝 贡献
我们欢迎捐款!请注意:
- 通过贡献,您同意您的贡献将在相同的许可下获得许可
- 对于实质性更改,请先打开一个问题进行讨论
- 确保所有测试通过,并为新功能添加测试
💬 支持
- 问题:
- 商业支持: \[michael@mckinley.consulting\]
- 文档: 维基
🙏 致谢
- 建立在 模型上下文协议 规格
- 使用Microsoft Power BI REST API
- 受到MCP社区的启发
______________________________________________________________________
备注:这不是微软的官方产品。Power BI是微软公司的商标。
