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
- Business question
- AI assistantMCP client
- MCP serverschema · DAX tools
- Power BI modelsemantic layer
- Answerfigures + query
- Business question
- AI assistantMCP client
- MCP serverschema · DAX tools
- Power BI modelsemantic layer
- 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
- Step 01
Ask
Someone asks a business question in plain language.
- Step 02
Plan
The assistant reads the model's tables and measures through MCP tools and works out what it needs.
- Step 03
Query
It runs a DAX query against the Power BI model, using the same measures the dashboards use.
- 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