Skip to content
Building

AI · Business intelligence

Power BI MCP — ask your dashboards in plain language

A dashboard answers the questions someone thought of in advance. Every other question becomes a message to the analyst. Power BI MCP gives an AI assistant a safe, typed way into the Power BI model through the Model Context Protocol, so a business question is answered from the same numbers the dashboards use.

Role
Solo build — MCP server, tool design and query layer
When
2026
Stack
Power BI · DAX · Model Context Protocol · Python · LLMs
System
  1. Business question
  2. AI assistantMCP client
  3. MCP serverschema · DAX tools
  4. Power BI modelsemantic layer
  5. Answerfigures + query

01

The problem

Managers wait on an analyst for every number that isn't already a visual.

Copying data out of Power BI into a chatbot breaks governance and throws away the model's measures and relationships.

02

What I built

  • An MCP server that exposes the Power BI semantic model as a small set of tools: list tables and measures, read the schema, run a DAX query.
  • Guard-rails that steer the assistant to the measures that already exist, instead of inventing its own maths.
  • Answers that come back with the figures and the query that produced them, so an analyst can verify them.

03

How it works

  1. Step 01

    Ask

    Someone asks a business question in plain language.

  2. Step 02

    Plan

    The assistant reads the model's tables and measures through MCP tools and works out what it needs.

  3. Step 03

    Query

    It runs a DAX query against the Power BI model, using the same measures the dashboards use.

  4. Step 04

    Answer

    The result comes back as a short answer, with the numbers and the query attached.

04

Outcome

  • One source of truth: the assistant answers from the governed model, not from a copy of the data.
  • In active development.

What's next

  • Row-level security passed through, so each person only sees the data they are allowed to see.
  • A test set of business questions with known answers.

Want this kind of work on your data?

Get in touch