M
MESURA BI
Field Notes · Hands-on Session

Sales Data → Model → Report: A Live Session with Power BI MCP and Copilot

One real project taken end-to-end with AI on both ends of the Power BI workflow: the Power BI Modeling MCP Server, driven from Claude, for the model layer — and Microsoft Copilot inside Power BI Desktop for the report layer.

The AI-assisted Power BI landscape has grown fast, and it is easy to conflate tools that behave very differently. To keep things focused, this post is a walkthrough of one real session using two specific tools — and nothing else.

✓ Covered in this post

  • The Power BI Modeling MCP Server, driven from Claude, for the model layer
  • Microsoft Copilot inside Power BI Desktop, for the report layer

✗ Not covered — though each matters

  • Copilot in the Power BI Service — a separate surface with its own UX
  • The Remote Power BI MCP Server — the query-your-published-model cousin of the modeling server
  • Copilot in Fabric — notebooks, data agents, Data Factory, and the wider Fabric AI story
  • Q&A visuals and smart narratives — the built-in NL features inside Power BI
  • Third-party tools — AI-driven Tabular Editor scripting, community MCP servers

I will come back to some of these separately. For this post, the focus is a single project taken end-to-end.

SECTION 01

Setup: configuring Claude Desktop for the Power BI Modeling MCP Server

Before any of the session below is reproducible, Claude Desktop has to be told where the Power BI Modeling MCP Server lives on your machine. This is done once, by adding an entry to Claude Desktop's configuration file. It takes about ten minutes end-to-end.

Prerequisites

The five steps

  1. Install the Power BI Modeling MCP Server VS Code extension

    Open VS Code, go to the Extensions panel, and search for "Power BI Modeling MCP". Install the extension published by analysis-services. This is Microsoft's official distribution mechanism for the server binary — even though we are wiring it into Claude Desktop, VS Code is the delivery vehicle.

  2. Locate the server executable

    After the extension installs, the server binary lives at:

    %USERPROFILE%\.vscode\extensions\ analysis-services.powerbi-modeling-mcp-<VERSION>-win32-x64\ server\powerbi-modeling-mcp.exe

    Open File Explorer, navigate to that folder, and copy the full path to powerbi-modeling-mcp.exe (right-click → Copy as path). The <VERSION> segment will be whatever version was installed — for example, 0.4.0.

  3. Open the Claude Desktop config file

    In Claude Desktop, open Settings, go to the Developer tab, and click Edit Config. This opens the folder containing claude_desktop_config.json. Open that file in a text editor. Alternatively, browse directly to:

    %APPDATA%\Claude\claude_desktop_config.json

    If the file does not exist yet, create it with an empty JSON object: { }

  4. Add the MCP server block

    Paste the following block into the file. Replace the command value with the path you copied in step 2, and make sure every single backslash is doubled (\\ in JSON):

    { "mcpServers": { "powerbi-modeling-mcp": { "command": "C:\\Users\\<USERNAME>\\.vscode\\extensions\\analysis-services.powerbi-modeling-mcp-<VERSION>-win32-x64\\server\\powerbi-modeling-mcp.exe", "args": ["--start"], "type": "stdio" } } }

    If you already have other MCP servers configured, just add powerbi-modeling-mcp as another entry inside the existing mcpServers object.

  5. Restart Claude Desktop and verify

    Fully quit Claude Desktop (not just closing the window — check the system tray) and reopen it. A tools indicator should appear near the chat input, showing that the powerbi-modeling-mcp server is loaded.

If the tools indicator does not appear

The most common causes are: single backslashes in the path (JSON needs double), a typo in the version folder, or the extension not being installed under the expected user profile.

Once the tools indicator is visible, open your .pbix file in Power BI Desktop, and you are ready for the session below.

SECTION 02

The project

I started with sales datasets from a set of branches — the kind of thing every retail or distribution BI developer has sitting in a .pbix file: transactions, branch info, geography, revenue figures, but no proper date table and no relationships tied to a calendar. I wanted to see whether I could take this from raw tables to a first-draft dashboard using AI on both ends of the workflow — MCP for the model, Copilot for the report.

Claude + MCP Creates tables Wires relationships Documents the model Semantic model Live in Desktop Tables · relationships Calendar · measures Copilot in Desktop Drafts the report page Picks visual types Lays out the canvas TOM writes builds on MODEL LAYER REPORT LAYER
Figure 1 · AI on both ends. The MCP server writes the model through the Tabular Object Model; Copilot drafts the report on top of what it built.

Step 1 — Connecting Claude to the Desktop file

With the .pbix open in Power BI Desktop, I asked Claude (via the Power BI Modeling MCP Server) to connect to the model. The server discovers the local Analysis Services instance behind Desktop and attaches to it. From that point on, Claude could see everything live — tables, columns, relationships, measures, roles — the full semantic model surface.

This is only one of three connection modes the MCP server supports (the others being a Fabric workspace via XMLA and a PBIP folder on disk), but it is the fastest way to start when you are already working locally.

Step 2 — Describing the tables

Before touching anything, I asked Claude to describe what it was looking at. This is a small habit that pays off. The agent produced a written inventory: tables, key columns, apparent grain, cardinalities, and — usefully — any modeling smells it could spot. It flagged the absence of a proper Date table straight away and correctly identified which columns in the sales table were candidates for a relationship to it.

This step doubles as a sanity check for me and as context for the model. Everything Claude does afterwards is grounded in this description, and it makes later prompts noticeably shorter.

Step 3 — Building a Calendar table and wiring relationships

I then asked Claude to create a Calendar table and set up the relationships to the fact table. Because the MCP server exposes the Tabular Object Model directly, this is not a "here is some DAX, paste it in" suggestion. Claude actually created the table (with the date range inferred from the fact table), added the standard columns (Year, Quarter, Month, MonthName, YearMonth, WeekOfYear, and so on), marked it as a date table, and created the active relationship to the fact table's date column.

A few things stood out:

At this point I had a properly modeled dataset — Calendar table wired in, ready for time-intelligence. This is exactly what the MCP server is designed for, and it is where it shines.

Step 4 — Handing off to Copilot in Desktop for the report

This is where the tool boundary matters. The Power BI Modeling MCP Server, by design, cannot build report visuals. It is a modeling tool, full stop. If I had stayed in Claude I could have added measures, refactored the model, or generated documentation — but I could not have laid out a single chart.

So I closed the MCP session and turned to Microsoft Copilot inside Power BI Desktop. I asked it for a report showing:

Copilot drafted the page: KPI cards for total sales and headline metrics, a bar chart broken down by branch, a map visual for the geographical breakdown, a revenue chart, and a total-sales card. It made reasonable choices about visual types, laid them out on the canvas, and — importantly — connected them to fields that now included the Calendar-driven ones we had set up in Step 3, so time context worked properly.

This is the half of the workflow MCP simply cannot cover today.

SECTION 03

Reflections on the two halves

A few things I took away from running the same project across both tools. First, the shape of the split:

Modeling MCP + ClaudeCopilot in Desktop
Covers The model layer — tables, relationships, measures, documentation The report layer — visuals, layout, field mapping
Reach Desktop model, Fabric workspace via XMLA, or PBIP TMDL files on disk Desktop only — its Service counterpart is a different surface
Model guidance Pair it with a deep-reasoning model (Claude Sonnet or GPT-5 class) Uses Microsoft's built-in models
Licensing Free server; runs with whichever AI client you already use Requires paid Fabric capacity (an F-SKU) — trial capacity will not unlock it

Licensing gotcha, worth repeating

Copilot in Desktop needs paid Fabric capacity (an F-SKU) — trial capacity will not unlock it. And for tenants outside the US/EU data boundary, there is a separate cross-geo data processing toggle in the Fabric admin portal that is easy to miss the first time.
SECTION 04

The working pattern I have landed on

The pattern

Model with MCP + Claude. Report with Copilot in Desktop. Ship.

Neither tool is trying to replace Power BI — they are both trying to remove the parts of the workflow that used to be pure clicking. In this session, together, they removed enough of it to be genuinely worth the setup.

Have you tried this stack?

I would love to hear how others are combining these tools — especially if you have run the Modeling MCP server from a different client or with a different underlying model, or if you have found a spot where Copilot in Desktop handled more of the modeling than I gave it credit for. What is working on your end?