Power BI Skills MCP Server
Enables AI assistants to query Power BI datasets via MCP, automatically anonymizing sensitive data before it reaches the AI, and generating rich HTML reports from natural language questions.
README
Proxuma Power BI Skills
AI prompt files and MCP server for generating reports and dashboards from your Power BI data. Works with Claude Code, GitHub Copilot, Cursor, and any MCP-compatible AI tool.
You ask a business question. The AI queries your data model, anonymizes it, and generates a complete HTML report or dashboard builder with real numbers. Your data never reaches the AI in readable form.
What's included
| Component | Description |
|---|---|
| MCP Server | Python server connecting AI tools to Power BI and Fabric APIs |
| Report Prompt | Generates standalone HTML reports with KPIs, tables, analysis, and findings |
| QBR Prompt | Generates Quarterly Business Review reports |
| Project Report Prompt | Generates project status reports |
| Data Anonymization | Two-pass anonymization: deterministic aliases + NLP safety net |
| Setup Wizard | Auto-discovers workspaces, datasets, and sensitive columns |
Quick start
git clone https://github.com/Proxuma/powerbi-claude-skills.git
cd powerbi-claude-skills
pip install -r requirements.txt
python -m server.wizard
The wizard walks you through Microsoft sign-in, picks your workspace and dataset, detects sensitive columns, and writes the config. No GUIDs to hunt for.
Then add the MCP server to your AI tool:
Claude Code:
claude mcp add powerbi -- python -m server.server
VS Code (GitHub Copilot / Cursor):
Add to .vscode/mcp.json:
{
"servers": {
"powerbi": {
"command": "python",
"args": ["-m", "server.server"],
"cwd": "/path/to/powerbi-claude-skills"
}
}
}
Claude Desktop:
Add to claude_desktop_config.json:
{
"mcpServers": {
"powerbi": {
"command": "python",
"args": ["-m", "server.server"],
"cwd": "/path/to/powerbi-claude-skills"
}
}
}
Prompts
Import these as slash commands or paste them as system prompts.
| File | Use |
|---|---|
prompts/powerbireport.md |
#powerbireport what is my monthly revenue trend? |
prompts/powerbireportQBR.md |
#powerbireportQBR Q1 2026 |
prompts/projectreport.md |
#projectreport Project Alpha |
prompts/powerbi.md |
General Power BI data questions |
Data anonymization
All data is automatically anonymized before it reaches the AI. The AI only sees aliases like Client_A, Resource_1, Contact_3.
How it works
- On first query, the server loads unique values from your configured sensitive columns via DAX
- Every response passes through two layers:
- Pass 1 — Deterministic lookup: known entities get consistent aliases (fast, auditable)
- Pass 2 — Presidio NLP: catches unexpected PII in free-text fields (optional safety net)
- After report generation, restore real names locally
Restoring real names
Option A — Drag and drop: Open the generated report in a browser. Drag ~/.powerbi-mcp/sessions/latest/mapping.json onto the restore button at the top of the page.
Option B — CLI:
python -m server report.html -o report-real.html
Configuration
The wizard (option 4) auto-detects sensitive columns. Or edit ~/.powerbi-mcp/config.json manually:
{
"anonymization": {
"enabled": true,
"sensitive_columns": {
"client": ["'Company'[CompanyName]"],
"resource": ["'Resource'[FullName]"],
"contact": ["'Contact'[ContactName]"]
},
"presidio_enabled": true
}
}
Audit trail
Every session stores its mapping at ~/.powerbi-mcp/sessions/<id>/mapping.json. This file never leaves your machine. Use it to verify what was anonymized and provide compliance documentation.
MCP tools
Once the server is running, your AI assistant has access to:
| Tool | Description |
|---|---|
list_workspaces |
List all Power BI workspaces |
list_datasets |
List datasets in a workspace |
execute_dax |
Run a DAX query and get anonymized results |
search_schema |
Search for measures, columns, or tables |
list_measures |
List all measure names |
list_fabric_items |
List items in a Fabric workspace |
get_schema |
Full schema (caution: can be >10MB) |
anonymization_status |
Show anonymization state and entity counts |
Requirements
- Python 3.10+
- Power BI Pro or Premium Per User license (for API access)
- An MCP-compatible AI tool (Claude Code, GitHub Copilot, Cursor, Claude Desktop)
No Azure app registration needed. The server uses the same public client flow as Power BI Desktop.
Authentication
- The wizard opens a browser for Microsoft sign-in
- You sign in with your Power BI account
- Tokens are cached locally in
~/.powerbi-mcp/ - Subsequent runs refresh automatically — no re-login needed
Tokens are stored only on your machine. The MCP server never sends credentials to any third party.
Project structure
powerbi-claude-skills/
├── server/
│ ├── server.py # MCP server
│ ├── auth.py # Azure AD authentication
│ ├── wizard.py # Setup wizard
│ ├── entity_registry.py # Deterministic entity anonymization
│ ├── anonymizer.py # Two-pass anonymizer (registry + Presidio)
│ ├── mapping.py # Session mapping persistence
│ ├── deanonymizer.py # Restore real names (XSS-safe)
│ ├── __main__.py # CLI deanonymize entry point
│ └── config.example.json # Example configuration
├── prompts/
│ ├── powerbireport.md # Report generator
│ ├── powerbireportQBR.md # QBR report generator
│ ├── projectreport.md # Project report generator
│ └── powerbi.md # General Power BI queries
├── templates/
│ └── report-shell.html # Report HTML template (with restore UI)
├── tests/ # Test suite
├── requirements.txt
├── LICENSE
└── README.md
Running tests
pip install pytest
python -m pytest tests/ -v
Compatibility
| AI Tool | Status |
|---|---|
| Claude Code (CLI) | Supported |
| GitHub Copilot (VS Code, Agent mode) | Supported |
| Claude Desktop | Supported |
| Cursor | Supported |
| ChatGPT (via MCP plugin) | Experimental |
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。