This blog post is Human-Centered Content: Written by humans for humans.
What is MCP?
To set the stage, we’ll begin with a quick overview of MCP: What it is, why it matters and how it can be used with Tableau. At its core, the Model Context Protocol (MCP) is a standard that gives large language models (LLMs) a universal way to access external tools and data sources. Whether it’s retrieving data from a third-party database, calling an external API or running a complex analytics workflow, MCP makes these tools directly accessible to the LLM. By building tools and servers based on the MCP standard, service providers ensure that any compatible LLM can use them, allowing seamless integration across different AI systems.
In short, MCP acts as a common language for LLMs, exposing tools and data in a way that any compatible LLM can understand and use.
Earlier this year, Tableau introduced its own Tableau MCP server, making it possible for AI models to utilize Tableau-specific tools tied to a Tableau Cloud or Tableau Server site. In practice, this means you can chat with an LLM and ask it questions about your own Tableau environment and data directly.
While you can’t use this method to develop or publish new Tableau content, it is already quite powerful for surfacing insights about your Tableau environment. This post walks you through the setup process for Tableau MCP and discusses a few example use cases on how it can be utilized.
Demo Prerequisites
What you will need to get started:
- Access to Tableau Cloud or Tableau Server with a Personal Access Token (PAT)
- Note: If using Tableau Server, Metadata API access will need to be enabled for certain tools to work.
- Additionally, tools related to Tableau Pulse require that Pulse is enabled on your Tableau Cloud site (applies only to Tableau Cloud).
- Container engine, such as Docker or Podman
- This is optional. Tableau MCP doesn’t need to run in a container, but for simplicity and ease of use, we’ll set it up in a container using Podman. The commands translate to Docker as well.
- AI tool that can interact with MCP servers
- We will be using Claude Code, but you can also use other tools such as Claude Desktop, VS Code or Cursor.
- Important: Make sure using Tableau MCP and AI tools aligns with your organization’s policies on AI and data usage.
Architecture

The main components in the MCP architecture are the MCP Server, MCP Host and MCP Client. As a user, we interact with the MCP Host (Claude in this example) by chatting with an LLM. When needed, Claude can then invoke its built-in MCP Client to facilitate connections to the MCP Server, which is the container-hosted Tableau MCP server. The MCP Server, in turn, connects to our Tableau Server to fetch the relevant data. For example, let’s say we want to retrieve a View from Tableau Server. If that’s the case, then the high-level sequence of steps would be:
- We ask Claude a question about our Tableau environment.
- Claude identifies that our question is about Tableau and recognizes that it has access to Tableau-related tools via MCP.
- Claude initiates a tool call for one of the specific Tableau MCP tools, such as retrieving Tableau Views.
- Claude leverages its built-in MCP Client to connect the Tableau MCP server.
- The Tableau MCP Server performs the requested action by reaching out to our Tableau Server or Tableau Cloud site.
- Tableau MCP Server returns the Tableau View data back to Claude’s MCP Client.
- Claude receives the MCP Server’s response and incorporates it into its own output, giving us a reply to our initial question about the View.
Setting up Tableau MCP
1. MCP Server steps:
In this walkthrough, we’ll cover how to run Tableau MCP locally in a container using the streamable-http transport method which enables remote access by multiple clients. You can also run it with stdio transport and/or outside of a container if you prefer. Keep in mind that production environments require proper hardening, including deploying the MCP server with secure transport layers, end-to-end encryption, robust authentication and strict access controls to safeguard data and prevent unauthorized access. The commands below use Podman, but the commands translate directly to Docker as well.
We’ll start by cloning the code from Tableau’s tableau-mcp GitHub repository and then build a Tableau MCP container image via the following commands:
git clone https://github.com/tableau/tableau-mcp.git cd tableau-mcp podman build -t tableau-mcp .
This creates our Tableau MCP container image. To confirm the image has been created successfully, we can list our existing images:
podman images list
With the container image ready, the next step is to launch a container from it. This will run the Tableau MCP server which the LLM can connect to. To start the container, run the following command:
podman run -d --name tableau-mcp --env-file <path_to_env_file>/env.list -p 127.0.0.1:3927:3927 tableau-mcp
Let’s break down what the command above is doing:
- podman run -d –name tableau-mcp starts a container named “tableau-mcp” running in detached mode
- –env-file <path_to_env_file>/env.list passes in the env.list file which contains environment variables Tableau MCP requires to facilitate the connection to Tableau Server. More details on the env.list file are included below.
- -p 127.0.0.1:3927:3927 specifies that the container is to run locally and exposes the Tableau MCP service to our host machine at port 3927 – this is where our MCP server will be reachable at
In order for Tableau MCP to connect to our Tableau Cloud Server site, we need to specify an env.list file when running the container. Tableau includes a template for the env.list in the tableau-mcp GitHub repository (as env.example.list), which contains the environment variables below:
TRANSPORT=http <Can also be stdio> SERVER=<Tableau Cloud/Server URL> SITE_NAME=<Tableau site name> PAT_NAME=<PAT name> PAT_VALUE=<PAT value> DATASOURCE_CREDENTIALS=<Optional - JSON with data source credentials where required > DEFAULT_LOG_LEVEL=debug INCLUDE_TOOLS=<Optional - List of MCP tools to include> EXCLUDE_TOOLS=<Optional - List of MCP tools to exclude> MAX_RESULT_LIMIT=<Optional - Limit on number of returned items> DISABLE_QUERY_DATASOURCE_FILTER_VALIDATION=<Optional - Disable MATCH and SET validation>
After the podman run command, we can see our container has started and our MCP server should be listening on port 3927.
podman logs tableau-mcp


2. Client-side steps:
With the MCP server up and running, the next step is to connect to it from an AI tool. This example uses Claude Code, though any Tableau MCP-compatible AI application will work.
Let’s start Claude Code and check its current MCP settings using the /mcp command:

As expected, no MCP servers are listed yet. To link Claude Code with Tableau MCP, we need to add the Tableau MCP configuration details to Claude’s settings. From the container logs output (podman logs tableau-mcp), we see that Tableau MCP server is running locally at http://localhost:3927/tableau-mcp. Let’s run the following to register the MCP server with Claude:
# Add the MCP server config to Claude Code claude mcp add --transport http tableau http://localhost:3927/tableau-mcp # List Claude's MCP servers to confirm the addition claude mcp list # Start Claude and check the available MCP Servers and their tools claude /mcp

With this addition, Claude should be able to see Tableau MCP and the exposed tools. Once we start Claude, we can run the /mcp command again and can inspect the tools available to Claude:

Note on the client-side Claude configuration: If using Claude Desktop instead of Claude Code, one would modify the claude_desktop_config.json file with the MCP server details. This configuration file can be accessed through Claude Desktop’s Developer settings or, alternatively, added as a Claude Desktop extension.
Using the MCP Server
Now that we’ve got everything set up, we will explore a few basic examples. In particular, our focus is on retrieving basic metadata/admin insights about the environment and querying data and dashboard content.
1: Using MCP to get metadata about Tableau content
To start, we can use MCP to retrieve basic metadata about Tableau content. This operation provides a clear view of available dashboards, workbooks and data sources, which although simple, can be extended for more sophisticated workflows. To do this, we’ll have Claude list our Tableau workbooks, serving as a proof of concept that Claude can indeed retrieve data from our Tableau site. When we query our workbooks, Claude leverages the List Workbooks tool to fetch and present the results:

Next, we ask a question that requires more than one tool call — We might be curious about which dashboards receive the most views, asking Claude to output the most popular dashboards. To answer this question, Claude makes use of multiple tools and displays a list of Views for each Workbook, along with the number of total views to indicate popularity. When we enter a prompt, Claude interprets the request, determines which MCP tools to invoke and executes the necessary operations. Unless prompted to use specific tools, Claude will assess which ones are needed to fully answer the user’s prompt, as shown in the chat below:

Switching gears, let’s say we are interested in our Published Data Source and seek a breakdown of our Tableau environment’s data connections. MCP can provide an inventory with information such as data connection types (e.g., Snowflake, Excel, SQL Server), number of workbooks connected to each published data source or ownership. One can highlight which databases are most used, how they are connected and where dependencies lie. The output indicates which tool was used, providing more transparency on what requests are made to the MCP Server. In this case, Claude invokes the “Search Content” to pull the data about our Published Data Sources:

2. Analyzing Tableau Dashboards via MCP
So far our prompt examples have dealt with metadata and administrative insights — in other words, data about what types of objects exist in our environment. But, beyond this, Tableau MCP also exposes tools to analyze and query our actual data. For example, we can ask what our dashboards are showing to help surface new insights or summarize findings.
Say we have a Workbook about travel preferences, including data on destinations, travel mode and trip ratings. Tableau MCP has tools to get View data or even to retrieve View images — basically, Claude can “look” at the dashboard images and summarize stand-out points based on the image data. Below is an example of a chat output where Claude leverages this “Get View Image“ MCP tool to tell us about the top travel destinations and travel modes in the Travel Dashboards Workbook:

Depending on the AI tool you’re using, you can leverage these findings to create new content and documents as well, such as having the LLM pipe these findings into a new visualization that showcases the main points:

Looking Ahead
The travel dashboard is a very basic example, but with just a set of prompts, we’ve extracted key trends from the Tableau views and created a visual high-level overview of the results. It’s worth noting that Tableau MCP isn’t adding brand-new features. The tools it provides map to actions you could already perform in Tableau — only now, they are also accessible through an LLM, so you can ask personalized questions about your Tableau environment without leaving the AI chat. As it stands, Tableau MCP can be a useful tool for summarizing, exploring and generating new ideas.
The functionality is still fairly limited — currently, you can mainly retrieve Workbooks and Data Sources among a few others — but the potential for AI to interact directly with Tableau content and workflows is substantial, and we expect these capabilities to grow over time.
We’ll be watching closely as new features are added; if you’d like to explore how AI and LLMs can work with your Tableau environment, reach out! We’d love to chat.
