Power BI + AI via MCP — Practical Guide · Brighter
Practical Guide - 2025-2026

Power BI + AI via MCP:
what actually works

Setup guide, real prompts, and an honest breakdown of what works and what doesn't. Ready to use today.

Setup guide 3 starter prompts DAX unit tests Security checklist .pbip trick What-works matrix
447
measures documented in one evening
~5 min
VS Code setup time
Jan '26
CVEs in official MCP servers

You've probably tried Copilot in Power BI. Most people were underwhelmed. It's a chat window on top of a report - it can answer questions about your data, but it can't touch your model. It doesn't know your measures. It can't fix anything.

MCP is completely different. MCP (Model Context Protocol) gives an external AI - Claude, GitHub Copilot, Gemini - a direct connection inside your Power BI semantic model. Not reading a screenshot. Not guessing from a description. Actually seeing every measure, every table, every relationship, every line of Power Query. And making changes to it.

How it works in three steps

1
You ask a question in Claude Desktop or VS Code
2
The app connects via MCP protocol to a server that knows how to talk to Power BI
3
The server gives the AI context (schema, metadata) or tools (run DAX, change a measure, update a dataset)
The AI doesn't guess what's in your model - it reads it directly. It doesn't suggest changes - it makes them.

Two versions: local vs remote

Local server
Runs on your machine. Connects to Power BI Desktop directly. The AI sees your open .pbix or .pbip file and can modify it. No Fabric capacity required. Works offline. This is what you'll set up below.
Remote server
Connects to semantic models published in Fabric workspaces, in the cloud. Requires your Power BI admin to enable a tenant setting. In preview since November 2025. More powerful for enterprise, but more setup and compliance work required.
Start with the local server. It's simpler, free, and where most of the real value is.
⚠️
Before anything else: make a backup of your model file. The MCP server writes directly to your open Power BI Desktop model. There is undo, but never test an AI tool for the first time on your only copy of a production file. Copy the .pbix, rename it, work on the copy.

What you need

Windows 10 or 11 - Power BI Desktop (latest version) - A semantic model open in Desktop - AI client: VS Code + GitHub Copilot OR Claude Desktop
💡
Model quality matters: Microsoft recommends deep-reasoning models: GPT-4o or Claude Sonnet. Older models behave like passive assistants waiting to be micromanaged. Premium models act like proactive agents. The difference in practice is significant.
⚠️
Cost heads-up for large models: a medium-sized model.bim file (~26k lines) requires ~210k tokens. Loading a full schema into Claude Sonnet costs roughly $0.60+ per session. For large models, scope your prompts to specific tables or measure groups - this cuts costs by 70-90% and improves quality.

Path A: VS Code + GitHub Copilot recommended - ~5 minutes

Easiest setup. One extension install, works immediately. Requires a GitHub Copilot subscription (individual plan from $10/month).

1
Install VS Code
From code.visualstudio.com if you don't have it.
2
Install two extensions
"GitHub Copilot" and "GitHub Copilot Chat" via Ctrl+Shift+X.
3
Install the Power BI Modeling MCP extension
Search "Power BI Modeling MCP" in Extensions, or go to: aka.ms/powerbi-modeling-mcp-vscode
4
Open GitHub Copilot Chat
Click the hammer icon in the chat input. You should see "powerbi-modeling-mcp" listed - that's your confirmation it's connected.
5
Open your Power BI Desktop file
Tell Copilot to connect to your local model. You're ready.
First time? Add --readonly in the extension settings (Ctrl+, then search @ext:Microsoft.powerbi-modeling-mcp). You can explore without the AI being able to change anything.

Path B: Claude Desktop ~15 minutes, manual config

1
Download the MCP server package
From the marketplace URL. Rename the .vsix file to .zip, extract to e.g. C:\MCPServers\PowerBIModelingMCP
2
Find the Claude Desktop config file
On Windows: %APPDATA%\Claude\claude_desktop_config.json
Or: Claude Desktop - Settings - Developer - Edit Config
3
Add this configuration to the JSON file
JSON - claude_desktop_config.json
{
  "mcpServers": {
    "powerbi-modeling-mcp": {
      "type": "stdio",
      "command": "C:\\MCPServers\\PowerBIModelingMCP\\extension\\server\\powerbi-modeling-mcp.exe",
      "args": ["--start"],
      "env": {}
    }
  }
}
💡
Replace the path with wherever you extracted the files. Use double backslashes (\\) in JSON paths on Windows. Want read-only mode? Change ["--start"] to ["--start", "--readonly"]. Strongly recommended for your first session.
4
Fully quit Claude Desktop and restart it
Not just close the window - actually quit it. You should see a small hammer icon in the chat input area. That's your confirmation.
Bulk operations - the main event
WORKS
This is the single most confirmed, most valuable use case. You have 80 measures with no descriptions - manually that's a full day. With MCP + Claude, one prompt. Claude reads every measure, writes descriptions, applies them. All of them. One user on r/PowerBI documented 447 measures in a single evening.

Same logic applies to: renaming 50+ measures to a naming convention, generating translations for 200+ columns, hiding service columns, creating hierarchies, organizing measure folders.
u/Full_Metal_Analyst, r/PowerBI: "Added descriptions to 447 measures in one evening."
Reading and modifying the model directly
WORKS
The agent sees everything: structure, measures, Power Query, relationships. And can make changes without you clicking through menus - create and fix relationships, replace DAX code in measures, create calculated columns and new tables. Breaking changes are intercepted and return errors - the agent sees them and can self-correct.
Debugging - the example that makes people stop
WORKS
A user types: "find the problem on this dashboard." The AI finds the right workspace on its own, opens the right dashboard, inspects the visual - and discovers a column misspelling that had gone unnoticed for months. One prompt. Zero clicks. No explanation of where to look.

For measure divergence: describe two measures giving different numbers. Claude writes its own DAX test queries, runs them against your model, and works backwards to find exactly where they diverge.
u/1234okie1234: "Claude can write its own DAX, run it and work backwards to understand what's happening. No need to explain the problem manually."
The no-MCP shortcut - start here if not ready
WORKS
Not ready for MCP setup, or your company has data policies that make it complicated? Save your model as a .pbip file - this format stores your model as JSON files, human-readable, easy to parse. Open that JSON in any LLM. Ask it to analyze, document, generate DAX. You apply changes manually, but for analysis and writing measures - it works today, zero setup, full control over what data you share.

What doesn't work

Complex DAX generation is unreliable
PARTIAL
This is the most important caveat lost in the excitement. LLMs produce DAX that looks correct, runs without errors - and calculates the wrong thing. Simple measures work well: YTD, prior year, basic aggregations. Complex DAX with multiple filter contexts and specific business logic is a genuine risk. Don't put AI-generated complex measures into production without validating against known values.
Michael Hannecke, Medium: "Use the agent for mechanical tasks with low risk of error. Don't use it for tasks requiring judgment about business logic."
Building dashboards and visuals
NOT YET
MCP connects to the semantic model layer only - not the report layer. You cannot describe a dashboard and get a first version back. Creating visuals, arranging pages, setting report themes - all stays manual.
The agent can get confused
WATCH OUT
In environments with multiple workspaces, the agent started working on the wrong model. In environments with several open files, always verify which model the agent is connected to before any write operations.

Once connected, open Claude (or Copilot), make sure Power BI Desktop is running with your model open, and try these in order. Copy and paste them as-is.

Prompt 1 — confirm the connection Run this first
What tables and measures are in this model? Give me a brief description of what each table appears to contain based on its column names.

Watch it read your entire model structure back to you. If this works - you're connected and ready.

Prompt 2 — bulk documentation The one that makes people stop and stare
Look at all measures in this model. For each one, write a description explaining what it calculates, what filters it respects, and give an example of what the value might represent. Write in English, keep each description under 3 sentences. Apply the descriptions to the model.

For a model with 80 measures, this takes about 2 minutes. Manually it's a full day.

Prompt 3 — naming convention cleanup Always review before applying
Look at all measures in this model. Rename them to follow PascalCase with no spaces or underscores. Before making any changes, list what you plan to rename so I can review and confirm.

The "list first, then confirm" part is important. Always ask the agent to show you what it plans to do before applying changes to a model you care about.

⚠️
Most people using MCP right now are doing it with Claude Desktop and a personal Pro account. That is the most dangerous setup for corporate data. This is not theoretical risk - it's a practical issue that will close the door for most corporate deployments if you don't handle it upfront.
Claude Pro vs API - a critical difference
RISK
Claude Pro, by default, uses your conversation data for model training. Data can be stored for up to 5 years unless you manually disable it in account settings. Most users don't know this setting exists.

The API is a completely different situation: commercial data through the API is explicitly excluded from training. But API means a corporate contract, a Data Processing Agreement, and infrastructure setup.
MCP protocol vulnerabilities
RISK
MCP is less than two years old. It has not gone through enterprise security audits. Documented CVEs were found in January 2026 in official servers from both Anthropic and Microsoft. Combining multiple MCP servers creates additional attack vectors.

For freelancers and consultants working on their own models: manageable risk. For enterprise teams with sensitive financial or customer data: this needs a proper compliance conversation before anyone opens Claude Desktop.
Rule of thumb: Keep MCP server in an isolated network, with TLS and authentication. Never combine with production data without compliance review.

Each prompt is designed to get a specific, reliable result - with context that prevents the most common AI mistakes.

DAX measure with built-in validation Use when asking AI to write a new measure
1) Describe which tables and fields are needed to calculate [NetMargin]. 2) Write the DAX code for the measure [NetMargin] (Profit / Revenue). 3) Write a validation query: EVALUATE ROW("CheckNetMargin", [NetMargin], "Expected", 0.12) If the result is wrong, explain your reasoning and correct it.

The third step forces the AI to generate a verification query alongside the code. This surfaces logical errors before you paste anything into your model.

Bulk documentation with model context Use when your model has undocumented measures
In the Sales table there is a column Deleted = 1 for soft-deleted records — ignore those rows in all calculations. For every measure in this model, write a description in the following format: - What it calculates - Which filters it respects - An example of what the value might represent Apply the descriptions to the model. Working language: English.

Giving the AI context about your data structure (the Deleted flag) before asking it to document prevents it from writing descriptions that ignore your business rules.

Debug a measure divergence Use when two measures give different numbers in the same context
Two measures return different results with the same filter applied: [MeasureA] = 145,000 [MeasureB] = 138,000 Check the filter context for both measures. Write a DAX diagnostic query, run it, and explain exactly what is causing the difference.

Every time Claude generates or modifies a measure, verify it actually calculates correctly - not just runs without errors. AI-generated DAX can look right, pass syntax checks, and still return wrong numbers. Run these in DAX Studio or SSMS before merging any AI-assisted change into production.

DAX - Basic unit test
EVALUATE ROW(
  "Test",     "TotalSales 2023",
  "Expected", 12345,
  "Actual",   CALCULATE([TotalSales], 'Date'[Year] = 2023)
)

If Actual does not equal Expected - the test fails. Replace the measure name, year, and expected value with your own.

DAX - Multiple scenarios via UNION
EVALUATE UNION(
  ROW("Test", "Sales 2023", "Result",
    IF(CALCULATE([TotalSales], 'Date'[Year] = 2023) = 12345,
      "PASS", "FAIL")),
  ROW("Test", "Sales Q1", "Result",
    IF(CALCULATE([TotalSales], 'Date'[Quarter] = "Q1") = 3100,
      "PASS", "FAIL"))
)

Returns PASS or FAIL for each scenario. Add as many ROW() blocks as you need. One failed row = something is wrong with that measure.

CapabilityStatusComment
Bulk ops: descriptions, renaming, hierarchiesWORKSMain value of MCP. Hours to minutes.
.pbip + any LLM - analysis and documentationWORKSNo MCP needed. Full control over what you share.
MCP + Claude - reading and debugging measuresWORKSAgent sees everything, writes test DAX itself.
GitHub Copilot Agent Mode + MCPWORKSAlternative to Claude. Easier in corporate environments.
Simple DAX (YTD, PY, basic aggregations)WORKSReliable for straightforward measures.
Complex DAX with business logicPARTIALLooks correct, often semantically wrong. Always validate.
Deneb + Claude - custom visualsPARTIALWorks for basic specs. Requires Vega-Lite knowledge.
Built-in Copilot in Power BIWEAKNo model access. Weaker than expected.
Building dashboards and visuals via MCPNOT YETSemantic model only. Report layer stays manual.
Claude Pro + corporate dataRISKData may be used for training by default.
MCP without compliance reviewRISKYoung protocol. CVEs found in official servers Jan 2026.

The bottom line

MCP + Claude genuinely changes the work for routine operations on a semantic model. Bulk documentation, renaming, debugging - real time savings, starting today.

For complex business logic in DAX and building reports - not reliable yet. For corporate use with sensitive data - needs proper compliance work first.

Real audience today
Freelancers, consultants, analysts at smaller companies without strict compliance requirements.
Safe to start with
.pbip + LLM for documentation and analysis. Zero MCP risk, immediate value.
Never skip
DAX unit tests after any AI-generated measure. Always validate before production.
Join Brighter waitlist
Free. No credit card required. Early access + 300 bonus credits.
Sources
r/PowerBI Tabular Editor Blog Bulldog Analytics Medium — M. Hannecke Dark Reading MCP Engine — M. Anatsko pbidax Microsoft Learn Formula5
Made on
Tilda