Skip to main content
Glama
Divyansh-dev12

powerbi-mcp-server

powerbi-mcp

An MCP server that connects Claude (and any MCP-compatible client) to Microsoft Power BI via the Power BI REST API using a Service Principal.

Tools exposed

Tool

Description

list_workspaces

List all workspaces the SP has access to

list_datasets

List datasets in a workspace (or all)

execute_dax_query

Run a DAX query against a dataset and get results

refresh_dataset

Trigger an on-demand dataset refresh

list_reports

List reports in a workspace (or all)

get_report_pages

Get all pages in a report

get_report_visuals

Get all visuals on a report page

Related MCP server: Power BI MCP for Claude

Prerequisites

  1. Azure App Registration with these Power BI API permissions (Application, not Delegated):

    • Dataset.Read.All

    • Dataset.ReadWrite.All (for refresh)

    • Report.Read.All

    • Workspace.Read.All

  2. In Power BI Admin Portal → Tenant settings, enable:

    • Allow service principals to use Power BI APIs

    • Add the security group containing your App Registration

  3. Add the service principal as a Member or Admin to the workspaces you want to access.

Setup

# Clone and install
git clone <this-repo>
cd powerbi-mcp-server
pip install -e .

# Copy and fill in credentials
cp .env.example .env
# Edit .env with your tenant ID, client ID, client secret

Configure in Claude Code / Claude Desktop

Add this to your MCP configuration (~/.claude/claude_desktop_config.json for Desktop, or claude mcp add for Claude Code):

{
  "mcpServers": {
    "powerbi": {
      "command": "python",
      "args": ["-m", "powerbi_mcp"],
      "env": {
        "POWERBI_TENANT_ID": "your-tenant-id",
        "POWERBI_CLIENT_ID": "your-client-id",
        "POWERBI_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Or using uv (no install needed):

{
  "mcpServers": {
    "powerbi": {
      "command": "uvx",
      "args": ["--from", "/path/to/powerbi-mcp-server", "powerbi-mcp"],
      "env": {
        "POWERBI_TENANT_ID": "...",
        "POWERBI_CLIENT_ID": "...",
        "POWERBI_CLIENT_SECRET": "..."
      }
    }
  }
}

Claude Code CLI

claude mcp add powerbi \
  --command python \
  --args "-m powerbi_mcp" \
  -e POWERBI_TENANT_ID=your-tenant-id \
  -e POWERBI_CLIENT_ID=your-client-id \
  -e POWERBI_CLIENT_SECRET=your-client-secret

Example prompts

Once connected, you can ask Claude:

  • "List all Power BI workspaces I have access to."

  • "Run this DAX query on dataset abc-123: EVALUATE SUMMARIZE(Sales, Sales[Region], "Total", SUM(Sales[Amount]))"

  • "Refresh the dataset named 'Monthly Sales' in the Finance workspace."

  • "Show me all the pages and visuals in the Executive Dashboard report."

Development

pip install -e ".[dev]"
python -m powerbi_mcp   # runs the MCP server via stdio
Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Divyansh-dev12/powerbi-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server