📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

I Built an AI Chatbot That Generates Tableau Dashboards (Claude + MCP)

Data & Beyond10:53

Transcription

Every BI tool in 2026 has its own AI button. Every single one. Vendors are racing to put AI powered on absolutely everything. At this rate, if your toaster doesn't run on large language models, is it even a serious appliance?

Tableau is no exception. They've got Pulse, Tableau Agent, and these are solid features. But there is a catch. All of them are cloud exclusive. If you are running Tableau server on premises, you are left out. No AI features.

So I decided to build one for my case. An AI assistant which sits directly in your Tableau dashboard, queries your data source in real time and gives you answers. But it also does something else. Something I haven't seen anyone pull off yet. But I will save it for the later in this video. So stay tuned. And yes, it works both on cloud and server.

Well, let me walk you through the architecture. This will help you understand how everything connects. At the center of this system is the MCP server. MCP stands for model context protocol, an open standard from anthropic that lets AI models interact with external tools. Tableau has released an official MCP server that provides three core capabilities: listing data sources, retrieving field metadata, and most critically executing data queries.

Here's the flow from what user sees. User sees the Tableau extension with the AI chatbot. Tableau extension is the front end written in React. This extension communicates with a Python back end running on fast API. When a user types a question, the back end forwards it to Claude Antropics LLM. Cloud analyzes the question, determines it needs real data, and invokes the Tableau MCP server. The MCP server authenticates using a personal access token and runs the actual query against the Tableau data source via the VSQL data server API. Data flows uh back through the chain. Cloud formulates a response and the extension renders it.

Here's what makes this universal. The MCPU server authenticates via PAT and communicates through standard Tableau APIs, REST API and VSQL data service API. These APIs are identical on cloud and server. This is the main feature for me in that case. So this entire setup works the same way regardless of whether you are on Tableau cloud or Tableau server. In my example here today, I will show you trial Tableau cloud. But basically I developed it uh especially for my Tableau server on premises for on-prem environments. This is uh to my knowledge the only approach available right now for bringing AI capabilities into Tableau dashboard. The back end and MCP server are deployed as web services at render.com in my case but you could just easily host them internally behind your firewalls.

So let me share my screen and you will see how it works. Here's the Tableau cloud. I'm on the standard supertore dashboard. Uh the one bundled with every Tableau installation built on the sample supertore data source. Of course you know it. So here on the right side you can see my extension hidden by the button AI assistant. It's embedded directly in the dashboard as a Tableau extension object uh actually dashboard extension uh through full data access. It picks up the data source information from the dashboard. It knows uh which data sources are available and passes that context to the AI. Week aside, if you're interested how Tableau extensions work under the hood, my video dedicated on this topic is coming soon. So subscribe so you don't miss it.

So let me start with the straightforward questions. Let's type uh top five states by total revenue. And we're going to wait for response to arrive. And there it is. California, New York, Texas with actual sales figures pulled from the data source. This is real. You can check that out. Every number you see came from a real query through the MCP against the Tableau data source. and the AI automatically chose a horizontal bar chart to present the result. That's nice.

So, let me type um let me ask something different. Monthly sales trend for the last year, let's say, and let's wait for the response a bit. Well, a line chart. This time, the model infers which visualization type fits the nature of the question. And once again, real data queried in real time from the data source. What you are seeing here is NLQ or NLP, natural language querying or natural language processing. A user asks a question in plain language and the aid retrieves the answer from the data. No worksheets to build, no fields to drag, just ask. Worth noting which you may already know working with other LLMs in other interfaces. The AI responds in whatever language you ask in.

Now this kind of chat boting dashboard is already one of the most requested use cases in enterprise BI. Remember the thing I teased at the beginning? So let me show you the second mode. This is where it gets really exciting. I'll open the dashboard in web edit. I select the layout container that holds all the original sheets. Pull out the show hide button and that's a standard tableau dashboard feature. Click height. The entire sheets container collapses and the extension stretches to fill the full screen. But right now it's just the chat. To unlock the canvas, I open the extension settings. There's a gear icon and enable full mode. And now the layout splits. On the left, we see a canvas, an open workspace. On the right, the chat. Even in regular ask mode, this is already powerful. I can ask questions just like before, but now every chart the AI generates has an add to canvas button. One click and the widget lands on the canvas. I can drag it, resize it, rearrange it, uh build up a custom view piece by piece and save it. The layout persists for uh anyone who opens the dashboard.

Next, the AI can also do this automatically. Uh there is a build dashboard mode and that's where the assistant constructs an entire dashboard from a single prompt. This is a real self-service. So let's switch to a dashboard mode. I'll type uh let's say sales performance dashboard. The AI first plans the structure KPIs charts table uh then executes each part sequentially quering real data for every widget. Of course, it takes time. For now, and in my example, probably I can do it better. But now it takes time. So, let's get it back when it's ready.

So, here we go. Dashboard is ready. Well, uh to be honest, we can see it's not perfect. Obviously, it's not the perfect dashboard because uh we even don't see uh a table what we always love to see in our dashboards, of course. Uh but uh without joking I'm speaking about a bidget of uh trend line. I'd like to see some trend line. Uh however, we've got all these KPI cards uh at the top. We got a bar chart. We even have got a key insights and recommendations uh what is really lovely. Uh but we still are able to use additionally ask button uh to add any widget which is not available here but you would like to see it on your dashboard. So everything is interactive. Drag resize delete um type snaps it to a grid if you wish to uh to to use such button. Well, uh let's be honest, it's not a perfect dashboard. We can always speak about shapes, about colors, about KPIs, uh what is necessary or not, but still you are capable to edit it and this is the main feature I think. Uh you can adjust the prompts to steer the output or switch to ask mode and add any missing charts by hand.

So um what also is necessary to mention is every generation is different. Unfortunately sometimes you get a great trend chart. Sometimes the AI skips into entirely. Uh the chart types vary the layout shifts. Uh that's the nature of generative AI. It's non uh deterministic. But what I also believe in users sometimes really don't need all these polished dashboards. Sometimes they really just need very easy visual playground to explore the data without creating any jura tasks.

Now why does this matter? Well, I think there are still some reasons why for some organizations cloud is still not an option and you have to use your Tableau server onrem version. While you're on Tableau server, you are out of all these AI features. But this architecture is platform agnostic. The MCP server authenticates via path tokens and uses standard REST and VDS APIs identical for server and cloud. And since it goes through standard APIs, role level security, governant policies, extract schedules, it all carries through. The AI respects whatever permissions the pat user has. This is a proof of concept, not production ready, but I'm quite sure it shows what is possible today. Thanks for watching. Subscribe and leave your comments.