Powerbi Mcp

Powerbi Mcp

🚀 Power BI MCP Server

本项目是一个Model Context Protocol (MCP) 服务器,可让AI助手通过自然语言与Power BI数据集进行交互。你可以直接在AI助手中查询数据、生成DAX查询并获取数据洞察,无需在不同工具之间频繁切换。

Verified on MseeP MseeP.ai Security Assessment Badge MCP Python

🎥 实时演示

转变你的Power BI使用体验——用自然语言提问,即刻从数据中获取洞察。

✨ 主要特性

  • 🔗 直接连接Power BI:可通过XMLA端点连接到任何Power BI数据集。
  • 💬 自然语言查询:用简单的英语提问,即可获取DAX查询和结果。
  • 📊 自动生成DAX:使用GPT - 4o - mini由AI驱动生成DAX查询。
  • 🔍 表发现功能:自动探索表、列和度量。
  • 性能优化:采用异步操作和智能缓存。
  • 🛡️ 安全认证:使用Azure AD进行服务主体认证。
  • 📈 智能建议:根据你的数据提供相关问题建议。

🎥 演示

提出如“各地区的总销售额是多少?”这样的问题,即可从你的Power BI数据中立即获得洞察。

🚀 快速开始

前提条件

  • Python 3.8 或更高版本
  • 安装了ADOMD.NET的Windows系统,或者在Linux上使用Docker(容器包含运行时)
  • SQL Server Management Studio (SSMS) 或ADOMD.NET客户端库(仅适用于Windows)
  • 启用了XMLA端点的Power BI Pro/Premium
  • 具有访问你的Power BI数据集权限的Azure AD服务主体
  • OpenAI API密钥(自然语言功能可选)

安装步骤

  1. 克隆仓库
git clone https://github.com/yourusername/powerbi-mcp-server.git
cd powerbi-mcp-server
  1. 安装依赖
pip install -r requirements.txt
  1. 配置环境变量
cp .env.example .env
# 使用你的凭证编辑.env文件
  1. 测试连接
python quickstart.py

与Claude Desktop配置

将以下内容添加到你的Claude Desktop配置文件中:

  • Windows%APPDATA%\Claude\claude_desktop_config.json
  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"powerbi": {
"command": "python",
"args": ["C:/path/to/powerbi-mcp-server/src/server.py"],
"env": {
"PYTHONPATH": "C:/path/to/powerbi-mcp-server",
"OPENAI_API_KEY": "your-openai-api-key"
}
}
}
}

Docker使用

构建容器镜像:

docker build -t powerbi-mcp .

运行服务器:

docker run -it --rm -e OPENAI_API_KEY= powerbi-mcp

容器默认监听端口8000。可以使用环境变量或命令行参数覆盖主机或端口:

docker run -it --rm -e OPENAI_API_KEY= -p 7000:7000 powerbi-mcp \
python src/server.py --host 0.0.0.0 --port 7000

容器包含pythonnetpyadomd所需的.NET运行时。它设置了PYTHONNET_RUNTIME=coreclrDOTNET_ROOT=/usr/share/dotnet,因此可以自动检测.NET运行时。环境变量与.env.example中的变量相对应;可以使用-e VAR=value传递它们,或者在构建上下文中提供一个.env文件。

💻 使用示例

基础用法

配置完成后,你可以通过Claude与你的Power BI数据进行交互:

连接到数据集

Connect to Power BI dataset at powerbi://api.powerbi.com/v1.0/myorg/YourWorkspace

探索数据

What tables are available?
Show me the structure of the Sales table

提问

What are the total sales by product category?
Show me the trend of revenue over the last 12 months
Which store has the highest gross margin?

执行自定义DAX

Execute DAX: EVALUATE SUMMARIZE(Sales, Product[Category], "Total", SUM(Sales[Amount]))

🔧 配置

所需凭证

  1. Power BI XMLA端点
    • 格式:powerbi://api.powerbi.com/v1.0/myorg/WorkspaceName
    • 在Power BI管理门户→工作区设置中启用。
  2. Azure AD服务主体
    • 在Azure门户→应用注册中创建。
    • 在Power BI工作区→访问设置中授予访问权限。
  3. OpenAI API密钥(可选)
    • 仅自然语言功能需要。
    • 如果未设置此密钥,依赖GPT模型的端点将被隐藏。
    • OpenAI平台获取。
    • 使用的模型:gpt - 4o - mini(比GPT - 4便宜200倍)

环境变量

创建一个.env文件(OpenAI设置可选):

# OpenAI配置(可选)
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_MODEL=gpt-4o-mini  # 默认使用gpt-4o-mini

# 可选:默认Power BI凭证
# 当`connect_powerbi`操作未提供tenant_id、client_id或client_secret时使用这些值。
DEFAULT_TENANT_ID=your_tenant_id
DEFAULT_CLIENT_ID=your_client_id
DEFAULT_CLIENT_SECRET=your_client_secret

# 日志记录
LOG_LEVEL=INFO

🏗️ 架构

powerbi-mcp-server/
├── src/
│   └── server.py          # 主要的MCP服务器实现
├── docs/                  # 文档
├── examples/              # 示例查询和用例
├── tests/                 # 测试套件
├── .env.example          # 环境变量模板
├── requirements.txt      # Python依赖项
├── quickstart.py        # 快速测试脚本
└── README.md           # 本文件

关键组件

  1. PowerBIConnector:处理XMLA连接和DAX执行。
  2. DataAnalyzer:由AI驱动的查询生成和解释。
  3. PowerBIMCPServer:MCP协议实现。

🔐 安全最佳实践

  • 切勿提交凭证:使用.env文件,并将其添加到.gitignore中。
  • 使用服务主体:避免使用个人凭证。
  • 最小权限原则:仅授予数据集必要的访问权限。
  • 定期轮换密钥:定期更新服务主体密钥。
  • 使用安全连接:始终使用HTTPS/TLS。

🧪 测试

运行测试套件:

python -m pytest tests/

测试特定功能:

python tests/test_connection.py
python tests/test_dax_generation.py

🤝 贡献

我们欢迎贡献!详情请参阅CONTRIBUTING.md。

  1. 分叉仓库
  2. 创建你的功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开拉取请求

📊 性能

  • 连接时间:2 - 3秒
  • 查询执行:根据复杂度,1 - 5秒
  • 令牌使用:使用GPT - 4o - mini每个查询约500 - 2000个令牌
  • 成本:典型使用情况下每天约$0.02 - 0.06

🐛 故障排除

常见问题

  1. 未找到ADOMD.NET
    • 对于Windows,安装SQL Server Management Studio (SSMS)。
    • 在Linux上,使用提供的Docker镜像,该镜像包含跨平台的ADOMD.NET运行时。
  2. 连接失败
    • 验证Power BI中是否启用了XMLA端点。
    • 检查服务主体是否具有工作区访问权限。
    • 确保数据集名称完全匹配。
  3. 超时错误
    • 在Claude Desktop配置中增加超时时间。
    • 检查与Power BI的网络连接。

详细解决方案请参阅故障排除文档。

📄 许可证

本项目采用MIT许可证 - 详情请参阅LICENSE文件。

🙏 致谢

📬 支持

  • 0 关注
  • 0 收藏,38 浏览
  • system 提出于 2025-09-21 04:18

相似服务问题

相关AI产品