MCP Servers for Conversational BI

I wanted to write some content off the back of my session at SQL Bits. My session was called MCP Servers for Conversational BI. It was a 50 minute session and I was trying to squeeze a lot of content into it, so there are parts of it I want to expand on.

So the following is an outline of the talk with links to demos and expansions of certain topics you can dig into if you’re interested in them.

View the slide deck →

The content

  • Where are we with BI tools with a general perspective of this on the self serve side of things.
    • AI is here and it’s the latest change in our toolkit. And it’s a big change.
  • What are the Microsoft offerings at the moment?
    • A caveat here that this is from my knowledge only. The Microsoft offerings are ever evolving and vast. I specifically looked at it from a general BI practitioner’s point of view, which to me is Copilot and Data Agents. Just to give a bit of background on my demos, they were all done using synthetically generated data for Car Sales.
    • Now a demo on Fabric of Copilot, asking some simple questions of the data; whether we can get external data (we can’t); if we can create visuals or reports here (we can’t). This is all as of mid April 2026. I suspect these capabilities will become available on Fabric soon.
  • Are there options that allow us to do this same thing outside of the Microsoft environment? Can we do the same thing with other tools, e.g. Claude?
    • Another demo here where we ask some simple questions in Claude Desktop, querying the same semantic model and asking the same questions. Here we are more or less highlighting that we can do essentially the same thing in Claude Desktop as we can in Copilot / Data Agents if we have an MCP that allows us to connect to our semantic model. The demo is not all that impressive but for me it also highlights the more conversational aspect of Claude and a superior UX and general AI experience.
  • What else can we do?
    • Another demo where we give an example of a business user asking the question to AI (Claude) on the UK EV Market. We get an answer back which is a standard answer any one of us would get on this using Claude. This part is not really the demo. But then we ask how this compares with our company’s data and it pulls up data from our semantic model and gives us an idea of where we sit vs what it found on the internet. Now we are showing some additional value for the first time. We see that Claude can take outside information and blend it with our semantic model’s data. We’ve used EV sales here and obviously we could get any data from the internet to do this. But we can also take an Excel file and dump it into Claude and use that as additional outside data where Claude is going to do all the joining up for us. I’m trying to show how easy our data integrates with other data in this environment.
    • Then we ask for a visual on this and now we see some additional functionality. Claude creates a report on the fly. We can take data from multiple sources and create reports joined with ours with a couple of simple prompts.
    • I possibly missed an opportunity to talk about other artifacts — i.e. not reports.
  • What does this mean for reports and dashboards?
    • Are they going to be replaced by users simply asking for data? I don’t think so. I think there are still many reasons to keep reports. It’s still going to be the fastest way to get information in many cases and it allows for people to understand where they are without having to type anything. I also think there’s always going to be a need to do deep dive analysis which doesn’t necessarily suit well to a conversational environment (e.g. looking at order level data).
  • What about saving these reports?
    • We’re now at a stage where we’ve created something that might be useful to come back to or share, but we don’t really have an easy way to save it while keeping our data live. (Caveat here — we actually do now: in Claude Cowork we can create an artifact that’s connected to our model and come back and refresh the data. At the time when I was creating this, this did not exist. It came out on the Tuesday before my demo on the Friday, which we’ll talk about later.) We have a connection to Fabric already which means we have a connection to a Lakehouse or database. We can choose to save the report in there. After all, it’s just some HTML and DAX queries.
  • Some examples of reports I’ve built
    • This section is here to highlight that we can create things not only much more easily than we could in Power BI, but with designs and functionality that would have probably been impossible to create in Power BI. I’ve named this as the “Analytics Store” in my work but the concept is simple — saved reports, documents, investigations, etc. This also allows us to query reports within an AI agent and have it come back with recommendations or suggestions for further analysis. I think this will become a common way to analyse data.
  • Artifacts In Claude
    • Coming back to the note from earlier, I wanted to acknowledge that we now have the capability to work in Copilot and save artifacts that are connected to Semantic Models. So we can come back to them later with updated data and change filters on them with the result being that they query the model for fresh data. This is a fairly big development. I show a demo here that shows a report as an artifact in Claude Desktop and a trace on the Semantic Model it’s querying. We can see the queries running against the model as the report filters are updated, proving that Claude isn’t “cheating” and just loading the entire data load into memory one time and changing the HTML file display using data in its memory.
  • What about Power BI Reports?
    • Next demo is to show that we can create Power BI reports as well. What I wanted to highlight here is that even if we stay in our current environment, we can still have the ability to use AI to create reports.
  • How do we get started with MCPs?
    • Here I gave a demo on setting up a very simple MCP server that just says hello if the AI tool we’re using it with detects that the user has entered a prompt that’s a greeting (like “Hello”). This is where I wanted to give some context around what it is that’s actually happening here in terms of where AI is relevant and being used. This was something it took a while for me to get my head around — specifically that the interpretation happens before the MCP is called and then the usage and result that comes back from the MCP is deterministic. I.e. it’s just code which we’re familiar with. In hindsight, I wish I had spent more time on explaining how the actual Power BI MCP works.
  • Other Uses for MCPs
    • Here I talk about the fact that there are countless uses and scenarios where we could look at using MCPs. Notebook creation, Semantic Model creation and editing, documentation, SQL, Jira, etc. The point is it’s a great tool to use to give us the ability to have integrations with AI in all sorts of ways. The talk was around how it applies to the field of data and analytics but its applications are already massively widespread.
  • What does this mean for us as Data Developers?
    • There were a couple of things I wanted to address here. One was that this is a change that’s coming. The demos I went through show what we can do and most likely where the functionality of the tools we use is going. I don’t believe our jobs are directly going to be replaced by AI but I think they will change and some parts of the role will go away while other parts will be new. I don’t think this is in any way controversial or a bad thing. What I would encourage is getting your hands dirty. There are a lot of new products, acronyms, and buzz words popping up just now and these can feel intimidating and like we’re behind in something. MCP is one of those. Try to fight that feeling and remember that you learned all of the tools you know now from nothing already. Most of all this is fun stuff to work on. Enjoy the opportunity to go and play with a new tool and create new interesting things by integrating AI into things you might not have been able to easily before.

Overall commentary

For me MCPs are the tool that have made AI more than a useful reference. Before I used them as a handy lookup or tool for working alongside my current workflow for things like documentation or researching to being a tool we can integrate into real world scenarios. Of course I understood how it could fit into tools where language interpretation and abstraction is valuable, like call analysis or review sentiments, but for me there was no way for me to actually integrate it into my current way of working that would change how I actually work or interact with data, and the same for users of analytics. I knew it was coming but for me MCPs filled the missing hole in the question of “how can I get AI to actually do things for me and not just to help me to do things”.

Caveats and post-talk thoughts

There were a few things that came up for me around and after the talk. One of them was that I was talking about something in which I was not an expert and that was difficult. It’s a fairly new technology and while I do feel I have something relevant and hopefully valuable to say on it, I am by no means an expert in AI. I don’t even really consider myself to be a developer — I consider myself to be a data developer, which to me is an entirely different field and type of work to an application developer, which is again a different field to a developer that develops truly back end technology (e.g. a developer who would actually make an LLM in the first place).

Perspective

I have done this presentation from the perspective of a BI Developer who is familiar with the Microsoft BI stack — specifically Power BI and Fabric. That meant that I wanted to contextualise the additional functionality that MCPs give us from a Microsoft BI developer’s viewpoint. However, there is something unsaid during this whole presentation, which is that we are now effectively able to take the front end of Power BI out of the toolkit we’re using to create reports. I’m not saying this is something we should do, but creating HTML reports gives us much more flexibility in terms of what we can create and it’s not that difficult to see how we could set up our own “Power BI Front End Service” without a huge amount of effort. It also begs the question, what about the semantic model? We have options (e.g. DuckDB) for simply using CSV files that could be available to us or that we could ourselves create. Again, I’m not saying we should be doing this but it does give us something else to think about. These options allow us to build a semantic model on another technology completely and no longer rely on the Vertipaq engine for speed or DAX to define measures.

You may have noticed Tabular Editor creating the ability to convert Databricks models over to MS Semantic Models. It’s possible that a company could position themselves to be able to allow us to be much more technology / stack agnostic. For me this has always been an aim from higher ups in management that is in reality a fantasy because of how much work goes into creating a BI estate, but with the rate of change of these tools I don’t see this being out of the question at all. This is also where I see a company like Microsoft keeping its USP — they are integrated vertically across many enterprise companies which gives them the benefit of being able to integrate chat platforms, emails, identity with each other.

Importance of the semantic model

However, to me this will also mark a shift in how important centrally maintained and defined semantic models will become. I can’t stress this point strongly enough. In a world where we can all create reports so easily with prompts, the ability to create a sprawling mess will be more available than ever before. It’s bad enough with Excel but things could become even worse with the AI multiplier applied.

Reflections on SQL Bits

In general reflection on the event, it was great. I would encourage anyone who wants to speak at an event like this to do so. SQL Bits itself was so well set up and organised. The helpers setup they have is fantastic and there are always helpers around which I think is great to have. The general tone of the event is very friendly and there’s focus on softer content as well as technical content which is great.

I found myself being quite nervous on the first day. I think it’s easy to forget that speakers are just regular people who have put themselves forward for something. Receiving feedback is really daunting. For me at least. I had expected that everything wouldn’t be positive but it was still a bit disheartening receiving a 3 star review after putting in so many hours of work. Overall I’m really happy with the feedback and focusing on the one less positive review probably says more about my personality than anything else.

Skills

Another thing I wanted to cover in the talk but didn’t want to get into with time constraints was Skills. Skills are basically a set of instructions that tell our LLMs what we want them to do. They sit alongside MCPs in terms of infrastructure, where MCPs give the capability to do something (like connect to Power BI) and Skills tell it how to do it. In truth, Skills is more like the Data Agent in Power BI than MCPs were. When I was initially looking into MCPs I didn’t have any knowledge of Skills which is why they were never included in the proposal. I’ve now learned more about them and they really should have had a place in the talk.

Data Architecture

In an environment where Self Serve takes a bucket of steroids and people start creating reports in a way we’ve never seen before, we can’t really overstate the importance of the structure of our data being in a good place.

Video Demos

I just want to acknowledge that I find these difficult to do. Deciding what tone to take in a video and how much to explain and how to explain it actually contains a lot of small decisions. Hopefully these are fit for purpose and in general I want the tone to match my natural communication style.

Graph view