Power BI Skills MCP Server

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.

Category
访问服务器

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

  1. On first query, the server loads unique values from your configured sensitive columns via DAX
  2. 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)
  3. 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

  1. The wizard opens a browser for Microsoft sign-in
  2. You sign in with your Power BI account
  3. Tokens are cached locally in ~/.powerbi-mcp/
  4. 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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选