list-datasourcesLABSCO SUMMARY
Ask questions of governed Tableau data instead of exporting it.
The semantics are the point: query-datasource runs through VizQL against a published data source, so an answer inherits the joins, calculations and field definitions your team curated rather than the model's guess at them. The administrative half is built with the right amount of suspicion — off unless a flag says otherwise, restricted to site admins, and every mutation split into a preview that returns a token and an apply that spends it. The prompts follow the same shape, with an inform step before an apply step.
What it is
Tableau's own MCP server for Tableau Cloud and Server. It lets an agent browse what is published on a site, query a data source through the VizQL Data Service so answers inherit the curated model, read Pulse metrics, and — for administrators — act on users, refresh tasks and stale content.
What you get
- Ask questions of curated data — query-datasource runs against a published data source, with get-datasource-metadata and list-datasources describing what is there first
- Find things — search-content across everything published, plus list-projects, list-workbooks and get-workbook
- Get data and pictures out of views — list-views, get-view-data, get-view-image, and list-custom-views with get-custom-view-data and get-custom-view-image
- Tableau Prep flows — list-flows, get-flow, list-flow-runs and list-flow-tasks
- Pulse, seven tools deep — list-all-pulse-metric-definitions, list-pulse-metric-definitions-from-definition-ids, list-pulse-metrics-from-metric-definition-id, list-pulse-metrics-from-metric-ids, list-pulse-metric-subscriptions, and insight bundles covering period-over-period change and top and bottom contributors
- Administration, behind a flag — list-users and update-user, list-jobs, list-extract-refresh-tasks and update-cloud-extract-refresh-task, query-admin-insights (which also produces the stale-content report) and delete-content
- Mutations are two-phase: update-user previews the change and hands back a single-use confirmation token, and only a second call carrying that token applies it
- Six prompts that chain the tools into a job — stale-content-cleanup, job-optimization, extract-optimization and user-license-reclamation, each with an inform step before any apply step
Requirements
A Tableau Cloud or Server site. The managed service at https://mcp.tableau.com is the recommended path for Cloud: it uses OAuth 2.1, so each person signs in as themselves and their existing permissions apply without further configuration. Running it yourself needs Node.js 22.7.5 or later and four environment variables — SERVER, SITE_NAME, PAT_NAME and PAT_VALUE — carrying the site URL and a personal access token. The administrative tools are not registered unless ADMIN_TOOLS_ENABLED is set, and they additionally require the caller to be a site administrator. Individual tools request narrow Tableau API scopes rather than blanket access.
Setup effort
One command plus credentials — npx -y @tableau/mcp-server@latest, then supply credentials
USE CASES
Answering a data question without building a viz
Query the published data source directly, after reading its fields and calculations so the query uses the team's definitions.
Finding out whether the report you need already exists
Search the site's published content, then pull the view's data or an image of it.
Explaining why a metric moved
Read the Pulse metric and its insight bundle for the period-over-period change and the top and bottom contributors.
Reclaiming licences from people who stopped using Tableau
List users with their last login, then downgrade the inactive ones — previewing each change before it applies.
Cleaning up content nobody opens
Pull the stale content report and work through it, with the dry-run step first.
Working out why extracts are late
Look at the background jobs and the refresh task schedules behind them.
34 tools
Listed in project docs. Your client may show a different list.
list-workbookslist-projectslist-viewslist-custom-viewslist-flowsget-datasource-metadataget-workbookdownload-workbookget-flowlist-flow-runslist-flow-tasksdelete-contentget-view-dataget-view-imageget-custom-view-dataget-custom-view-imagequery-datasourcelist-all-pulse-metric-definitionslist-pulse-metric-definitions-from-definition-idslist-pulse-metrics-from-metric-definition-idlist-pulse-metrics-from-metric-idslist-pulse-metric-subscriptionsgenerate-pulse-metric-value-insight-bundlegenerate-pulse-insight-briefsearch-contentlist-extract-refresh-tasksupdate-cloud-extract-refresh-tasklist-usersupdate-userquery-admin-insightslist-jobsreset-consentrevoke-access-tokenBEFORE YOU INSTALL
What to know first
Tools you get
34 tools named in the project's documentation.
Requires
- npx on PATH
- PAT_NAME in your environment
- PAT_VALUE in your environment
INSTALLATION
Connect your client
Server setup
npx
npx -y @tableau/mcp-server@latestHosted endpoint
Any MCP client — remote
https://mcp.tableau.comAdd this hosted endpoint to your MCP client using the credentials listed under Requirements.
MCP Clients
Any MCP client — npx
{
"mcpServers": {
"tableau": {
"command": "npx",
"args": [
"-y",
"@tableau/mcp-server@latest"
],
"env": {
"SERVER": "https://my-tableau-server.com",
"SITE_NAME": "my_site",
"PAT_NAME": "my_pat",
"PAT_VALUE": "<YOUR_PAT_VALUE>"
}
}
}
}Any MCP client — Node.js
git clone https://github.com/tableau/tableau-mcp
cd tableau-mcp
npm install
npm run build{
"mcpServers": {
"tableau": {
"command": "node",
"args": [
"<YOUR_PATH_TO_BUILD>/index.js"
],
"env": {
"SERVER": "https://my-tableau-server.com",
"SITE_NAME": "my_site",
"PAT_NAME": "my_pat",
"PAT_VALUE": "<YOUR_PAT_VALUE>"
}
}
}
}<YOUR_PATH_TO_BUILD>/index.js is the absolute path to build/index.js in your checkout.
Any MCP client — Docker
git clone https://github.com/tableau/tableau-mcp
cd tableau-mcp
npm install
npm run build:dockerCreate env.list from the repository's env.example.list and set SERVER, SITE_NAME, PAT_NAME and PAT_VALUE
{
"mcpServers": {
"tableau": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"env.list",
"tableau-mcp"
]
}
}
}tableau-mcp is the image name npm run build:docker builds locally (docker build -t tableau-mcp .); it is not pulled from a registry. env.list is the Docker env file the repository ships as env.example.list. Rebuild the image after pulling repo changes.