### Example Prompt: Getting a View (Plain Text)
Source: https://github.com/tableau/tableau-mcp/blob/main/README.md
An example prompt to the MCP client for retrieving a specific view from Tableau. This prompt specifies the view name and the project it belongs to.
```text
Show me an image of the "Economy" view in the "Finances" project.
```
--------------------------------
### Download PowerShell Script
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/getting-started.md
This PowerShell command downloads the Manage-Server.ps1 script from a specified GitHub URL and saves it to a local file named 'Manage-Server.ps1'. This allows for inspection before execution.
```powershell
iwr -Uri "https://raw.githubusercontent.com/tableau/tableau-mcp/refs/heads/main/scripts/Manage-Server.ps1" -OutFile "Manage-Server.ps1"
```
--------------------------------
### Example Response: Getting a View (Image)
Source: https://github.com/tableau/tableau-mcp/blob/main/README.md
An example response from the MCP client when a prompt requests an image of a Tableau view. This response would typically embed or link to an image file.
```html
```
--------------------------------
### Download and Execute PowerShell Script
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/getting-started.md
This PowerShell command downloads the Manage-Server.ps1 script from a raw GitHub URL and executes it directly. This is a quick way to manage the Tableau MCP server on Windows without manual download.
```powershell
iex (iwr -Uri "https://raw.githubusercontent.com/tableau/tableau-mcp/refs/heads/main/scripts/Manage-Server.ps1").Content
```
--------------------------------
### Install Node.js Dependencies and Build
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/developers/building.md
Installs project dependencies using npm and builds the project. This is a fundamental step after cloning the repository or pulling the latest changes.
```bash
npm install
npm run build
```
--------------------------------
### Example Prompt: Querying Data (Plain Text)
Source: https://github.com/tableau/tableau-mcp/blob/main/README.md
An example prompt to the MCP client for querying data from a Tableau datasource. This prompt specifies the datasource and a condition for filtering the results.
```text
For the Superstore Datasource, what are the top 5 states with the most sales in 2025?
```
--------------------------------
### Example Response: Querying Data (Plain Text)
Source: https://github.com/tableau/tableau-mcp/blob/main/README.md
An example response from the MCP client after executing a data querying prompt. It provides a list of states and their sales figures, along with a summary.
```text
Based on the Superstore Datasource, here are the top 5 states with the most sales in 2025:
1. California - $146,388.34
2. New York - $93,922.99
3. Washington - $65,539.90
4. Texas - $43,421.76
5. Pennsylvania - $42,688.31
California leads by a significant margin with over $146,000 in sales, followed by New York with nearly $94,000. These two states alone account for a substantial portion of the total sales across the top 5 states.
```
--------------------------------
### Example Response: Content Exploration (Plain Text)
Source: https://github.com/tableau/tableau-mcp/blob/main/README.md
An example response from the MCP client after executing a content exploration prompt. It provides details about the most viewed workbook, including its owner, project, views, last modified date, and ID.
```text
The most viewed workbook within the last year is:
Global Connections
- Owner: John Doe
- Project: Marketing
- Views in last year: 523
- Last Modified: September 2, 2025
- Workbook ID: 111fb672-9401-4913-a167-17b3d89a3e4f
```
--------------------------------
### Example Prompt: Content Exploration (Plain Text)
Source: https://github.com/tableau/tableau-mcp/blob/main/README.md
An example prompt to the MCP client for exploring content within Tableau. This prompt asks to find the most viewed workbook within a specific time frame.
```text
Find me the most viewed workbook within the last year.
```
--------------------------------
### Get Workbook Information (JSON Example)
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/workbooks/get-workbook.md
This snippet shows the expected JSON output when successfully retrieving workbook information. It includes details like workbook ID, name, URL, project information, and a list of views with their respective statistics.
```json
{
"id": "222ea993-9391-4910-a167-56b3d19b4e3b",
"name": "Superstore",
"webpageUrl": "https://10ax.online.tableau.com/#/site/mcp-test/workbooks/1412200",
"contentUrl": "Superstore",
"project": {
"name": "Samples",
"id": "cbec32db-a4a2-4308-b5f0-4fc67322f359"
},
"showTabs": true,
"defaultViewId": "9460abfe-a6b2-49d1-b998-39e1ebcc55ce",
"tags": {},
"views": {
"view": [
{
"id": "9460abfe-a6b2-49d1-b998-39e1ebcc55ce",
"name": "Overview",
"createdAt": "2025-09-02T23:25:58Z",
"updatedAt": "2025-09-02T23:25:58Z",
"tags": {},
"usage": {
"totalViewCount": 165
}
}
]
}
}
```
--------------------------------
### List Datasources Example Result
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/data-qna/list-datasources.md
An example of the JSON structure returned when listing Tableau data sources. It includes fields such as id, name, description, and project information.
```json
[
{
"id": "2d935df8-fe7e-4fd8-bb14-35eb4ba31d45",
"name": "Superstore Datasource",
"description": "*Overview*: Superstore Datasource contains data about your profit and sales\n\n*What is a Row of Data?* Each row of data corresponds to a unique order.",
"project": {
"name": "Samples",
"id": "cbec32db-a4a2-4308-b5f0-4fc67322f359"
}
}
]
```
--------------------------------
### JavaScript Example for Datasource Credentials
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/configuration/mcp-config/env-vars.md
An example illustrating the expected JavaScript object structure for the DATASOURCE_CREDENTIALS environment variable. This variable is used to provide usernames and passwords for data sources that require them. The structure maps data source LU Ids to arrays of connection objects, each containing a connection LUID, username (u), and password (p).
```javascript
const datasourceCredentials = {
"ds-luid1": [
{ luid: "ds1-connection-luid1", u: "username1", p: "password1" },
{ luid: "ds1-connection-luid2", u: "username2", p: "password2" }
],
"ds-luid2": [
{ luid: "ds2-connection-luid1", u: "username3", p: "password3" }
]
};
```
--------------------------------
### List Metric Subscriptions (JSON Example)
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/pulse/list-pulse-metric-subscriptions.md
An example of the JSON output when retrieving a list of published Pulse Metric Subscriptions. This format shows the subscription ID and the associated metric ID.
```json
[
{
"id": "47ec9252-0ac2-4b30-9a4f-af28554cc893",
"metric_id": "fd6c4aa0-f6d3-469e-b75b-d597435ae199"
}
]
```
--------------------------------
### Example JSON Response Structure
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/pulse/generate-pulse-insight-brief.md
This JSON structure represents an AI-generated response for metric analysis, including markdown summaries, generation IDs, source insights with visualization specifications, suggested follow-up questions, and context.
```json
{
"data": {
"markup": "- **Forecast for November 22, 2025**: The forecasted value for Sales is $150K, with a confidence range of $145K to $155K.\n\n- **Month-to-Date Comparison**: Sales for November 2025 month-to-date is $150K, which is a 5.0% increase compared to October 2025 month-to-date ($142.9K).\n\nOverall, the metric shows a positive trend with a slight increase month-to-date and a stable forecast.",
"generation_id": "abc123...",
"source_insights": [
{
"type": "forecast",
"markup": "The forecast for Sales for November 22, 2025 is $150K with a confidence range of $145K to $155K.",
"viz": {
/* Vega-Lite visualization spec */
},
"facts": {
/* Insight facts and data */
}
},
{
"type": "popc",
"markup": "Sales was $150K (November 2025 month to date), up 5.0% ($7.1K) compared to the prior period.",
"viz": {
/* Vega-Lite visualization spec */
},
"facts": {
/* Insight facts and data */
}
}
],
"follow_up_questions": [
{ "content": "What factors contributed to the increase in Sales?" },
{ "content": "How does the forecast compare to historical trends?" }
],
"group_context": [
/* Full metric context */
],
"not_enough_information": false
}
}
```
--------------------------------
### List Metric Definitions (JSON Example)
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/pulse/list-all-pulse-metric-definitions.md
This JSON object represents an example of a metric definition retrieved from the Tableau Pulse API. It includes metadata, specification details, extension options, and representation settings.
```json
[
{
"metadata": {
"name": "Tableau MCP",
"description": "",
"id": "9ad098f4-49cf-4e8a-bec0-0ca803091dd0",
"schema_version": "1.0.0",
"metric_version": 1,
"definition_version": 0
},
"specification": {
"datasource": {
"id": "2d935df8-fe7e-4fd8-bb14-35eb4ba31d45"
},
"basic_specification": {
"measure": {
"field": "Profit",
"aggregation": "AGGREGATION_SUM"
},
"time_dimension": {
"field": "Order Date"
},
"filters": []
},
"is_running_total": true
},
"extension_options": {
"allowed_dimensions": ["City"],
"allowed_granularities": [
"GRANULARITY_BY_DAY",
"GRANULARITY_BY_WEEK",
"GRANULARITY_BY_MONTH",
"GRANULARITY_BY_QUARTER",
"GRANULARITY_BY_YEAR"
],
"offset_from_today": 0
},
"metrics": [],
"total_metrics": 1,
"representation_options": {
"type": "NUMBER_FORMAT_TYPE_NUMBER",
"number_units": {
"singular_noun": "",
"plural_noun": ""
},
"sentiment_type": "SENTIMENT_TYPE_NONE",
"row_level_id_field": {
"identifier_col": "City"
},
"row_level_entity_names": {
"entity_name_singular": "",
"entity_name_plural": ""
},
"row_level_name_field": {
"name_col": ""
},
"currency_code": "CURRENCY_CODE_UNSPECIFIED"
},
"insights_options": {
"settings": [
{
"type": "INSIGHT_TYPE_RISKY_MONOPOLY",
"disabled": false
},
{
"type": "INSIGHT_TYPE_TOP_DRIVERS",
"disabled": false
},
{
"type": "INSIGHT_TYPE_CURRENT_TREND",
"disabled": false
},
{
"type": "INSIGHT_TYPE_BOTTOM_CONTRIBUTORS",
"disabled": false
},
{
"type": "INSIGHT_TYPE_TOP_DETRACTORS",
"disabled": false
},
{
"type": "INSIGHT_TYPE_NEW_TREND",
"disabled": false
},
{
"type": "INSIGHT_TYPE_UNUSUAL_CHANGE",
"disabled": false
},
{
"type": "INSIGHT_TYPE_RECORD_LEVEL_OUTLIERS",
"disabled": false
},
{
"type": "INSIGHT_TYPE_CORRELATED_METRIC",
"disabled": false
}
]
},
"comparisons": {
"comparisons": [
{
"compare_config": {
"comparison": "TIME_COMPARISON_PREVIOUS_PERIOD"
},
"index": 0
},
{
"compare_config": {
"comparison": "TIME_COMPARISON_YEAR_AGO_PERIOD"
},
"index": 1
}
]
},
"datasource_goals": []
}
]
```
--------------------------------
### Generate RSA Private Key using OpenSSL
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/configuration/mcp-config/oauth.md
A command-line example using OpenSSL to generate an RSA private key. This is a common method for creating the necessary cryptographic key for OAuth JWE encryption and decryption.
```bash
openssl genrsa -out private.pem
```
--------------------------------
### Example UAT Private Key
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/configuration/mcp-config/authentication/uat.md
Illustrates the format of an RSA private key for signing UAT JWTs. This key is essential for authenticating with Tableau Cloud when using the UAT method.
```text
-----BEGIN RSA PRIVATE KEY-----
MIIE...HZ3Q==
-----END RSA PRIVATE KEY-----
```
--------------------------------
### Configure MCP Client (JSON)
Source: https://context7.com/tableau/tableau-mcp/llms.txt
Configures MCP clients to connect to a Tableau MCP server. This JSON configuration specifies the server details, including the command to start the server, arguments, and environment variables for authentication and tool inclusion.
```json
{
"mcpServers": {
"tableau": {
"command": "npx",
"args": ["-y", "@tableau/mcp-server@latest"],
"env": {
"SERVER": "https://my-tableau-server.com",
"SITE_NAME": "my_site",
"AUTH": "pat",
"PAT_NAME": "my_pat_name",
"PAT_VALUE": "pat_secret_value",
"INCLUDE_TOOLS": "query-datasource,list-datasources,search-content,get-view-image"
}
}
}
}
```
--------------------------------
### List Metrics by IDs (JSON Example)
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/pulse/list-pulse-metrics-from-metric-ids.md
This snippet demonstrates the expected JSON output when retrieving a list of published Pulse metrics using their IDs. The output includes metric details such as ID, specification, definition ID, and versioning information.
```json
[
{
"id": "fd6c4aa0-f6d3-469e-b75b-d597435ae199",
"specification": {
"filters": [],
"measurement_period": {
"granularity": "GRANULARITY_BY_MONTH",
"range": "RANGE_CURRENT_PARTIAL"
},
"comparison": {
"comparison": "TIME_COMPARISON_PREVIOUS_PERIOD"
}
},
"definition_id": "9ad098f4-49cf-4e8a-bec0-0ca803091dd0",
"is_default": true,
"schema_version": "1.0.0",
"metric_version": 2,
"is_followed": true
}
]
```
--------------------------------
### Example VizQL Query Structure
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/data-qna/query-datasource.md
Defines the structure of a VizQL query for Tableau data sources. It specifies fields to retrieve, aggregation functions, aliasing, sorting, and filtering criteria, including top N filters.
```json
{
"fields": [
{
"fieldCaption": "Customer Name"
},
{
"fieldCaption": "Sales",
"function": "SUM",
"fieldAlias": "Total Revenue",
"sortDirection": "DESC",
"sortPriority": 1
}
],
"filters": [
{
"field": {
"fieldCaption": "Customer Name"
},
"filterType": "TOP",
"howMany": 5,
"direction": "TOP",
"fieldToMeasure": {
"fieldCaption": "Sales",
"function": "SUM"
}
}
]
}
```
--------------------------------
### Example JWT Additional Payload Configuration
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/configuration/mcp-config/authentication/direct-trust.md
This JSON snippet demonstrates how to configure additional user attributes to be included in the JWT payload. It shows the inclusion of a static 'region' and a dynamic 'username' that can be populated with the OAuth username.
```json
{
"username": "{OAUTH_USERNAME}",
"region": "West"
}
```
--------------------------------
### Apply Apache License to Work
Source: https://github.com/tableau/tableau-mcp/blob/main/LICENSE.txt
This section provides instructions and a boilerplate notice for applying the Apache License, Version 2.0, to your own projects. It requires replacing bracketed information with specific details and enclosing the notice in appropriate comment syntax for the file format.
```text
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
--------------------------------
### Get Workbook Information
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/workbooks/get-workbook.md
Retrieves detailed information about a specific Tableau workbook, including its views and usage statistics. This endpoint aggregates data from the Query Workbook and Query Views for Workbook APIs.
```APIDOC
## GET /tableau/tableau-mcp/workbooks/{workbookId}
### Description
Retrieves information on a workbook, including information about the views contained in the workbook and their usage statistics.
### Method
GET
### Endpoint
`/tableau/tableau-mcp/workbooks/{workbookId}`
### Parameters
#### Path Parameters
- **workbookId** (string) - Required - The ID of the workbook.
### Request Example
```json
{
"workbookId": "222ea993-9391-4910-a167-56b3d19b4e3b"
}
```
### Response
#### Success Response (200)
- **id** (string) - The unique identifier of the workbook.
- **name** (string) - The name of the workbook.
- **webpageUrl** (string) - The URL to access the workbook in Tableau.
- **contentUrl** (string) - The content URL of the workbook.
- **project** (object) - Information about the project the workbook belongs to.
- **name** (string) - The name of the project.
- **id** (string) - The ID of the project.
- **showTabs** (boolean) - Indicates if tabs are shown for the workbook.
- **defaultViewId** (string) - The ID of the default view for the workbook.
- **tags** (object) - Tags associated with the workbook.
- **views** (object) - Information about the views within the workbook.
- **view** (array) - An array of view objects.
- **id** (string) - The unique identifier of the view.
- **name** (string) - The name of the view.
- **createdAt** (string) - The creation timestamp of the view.
- **updatedAt** (string) - The last updated timestamp of the view.
- **tags** (object) - Tags associated with the view.
- **usage** (object) - Usage statistics for the view.
- **totalViewCount** (integer) - The total number of times the view has been accessed.
#### Response Example
```json
{
"id": "222ea993-9391-4910-a167-56b3d19b4e3b",
"name": "Superstore",
"webpageUrl": "https://10ax.online.tableau.com/#/site/mcp-test/workbooks/1412200",
"contentUrl": "Superstore",
"project": {
"name": "Samples",
"id": "cbec32db-a4a2-4308-b5f0-4fc67322f359"
},
"showTabs": true,
"defaultViewId": "9460abfe-a6b2-49d1-b998-39e1ebcc55ce",
"tags": {},
"views": {
"view": [
{
"id": "9460abfe-a6b2-49d1-b998-39e1ebcc55ce",
"name": "Overview",
"createdAt": "2025-09-02T23:25:58Z",
"updatedAt": "2025-09-02T23:25:58Z",
"tags": {},
"usage": {
"totalViewCount": 165
}
}
]
}
}
```
```
--------------------------------
### Configure Tableau MCP Server with Docker
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/developers/building.md
Configures an AI tool (MCP client) to connect to a Tableau MCP server running as a Docker container. It specifies the command to run Docker, including arguments for interactive mode, automatic removal, environment file usage, and the image name.
```json
{
"mcpServers": {
"tableau": {
"command": "docker",
"args": ["run", "-i", "--rm", "--env-file", "env.list", "tableau-mcp"]
}
}
}
```
--------------------------------
### Configure Tableau MCP Server (Bash)
Source: https://context7.com/tableau/tableau-mcp/llms.txt
Configures the Tableau MCP server using environment variables. Supports basic Personal Access Token (PAT) authentication with stdio transport, and HTTP transport with OAuth. Allows for tool scoping and restricting access to specific projects and datasources.
```bash
# Basic configuration with Personal Access Token (stdio transport)
export SERVER="https://tableau-server.company.com"
export SITE_NAME="marketing_site"
export AUTH="pat"
export PAT_NAME="my_token_name"
export PAT_VALUE="token_secret_value"
# Start server
npx @tableau/mcp-server@latest
# HTTP transport with OAuth
export TRANSPORT="http"
export HTTP_PORT="3927"
export AUTH="oauth"
export CONNECTED_APP_CLIENT_ID="client_id"
export CONNECTED_APP_SECRET_ID="secret_id"
export CONNECTED_APP_SECRET_VALUE="secret_value"
export OAUTH_ISSUER="https://auth.company.com"
export OAUTH_REDIRECT_URI="https://mcp-server.company.com/oauth/callback"
# Tool scoping - only enable specific tools
export INCLUDE_TOOLS="query-datasource,list-datasources,get-view-image"
# Bounded context - restrict access to specific projects
export ALLOWED_PROJECT_IDS="project-123,project-456"
export ALLOWED_DATASOURCE_IDS="ds-abc,ds-def"
```
--------------------------------
### Initial Question for Tableau MCP (JSON)
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/pulse/generate-pulse-insight-brief.md
This JSON structure represents an initial user question to the Tableau MCP, specifying the language, locale, and details about the 'Sales' metric. It includes information on aggregation, time dimension, filters, and desired insights like top drivers and forecasts.
```json
{
"language": "LANGUAGE_EN_US",
"locale": "LOCALE_EN_US",
"messages": [
{
"action_type": "ACTION_TYPE_SUMMARIZE",
"content": "What are the key insights for Sales?",
"role": "ROLE_USER",
"metric_group_context": [
{
"metadata": {
"name": "Sales",
"metric_id": "CF32DDCC-362B-4869-9487-37DA4D152552",
"definition_id": "BBC908D8-29ED-48AB-A78E-ACF8A424C8C3"
},
"metric": {
"definition": {
"datasource": {
"id": "A6FC3C9F-4F40-4906-8DB0-AC70C5FB5A11"
},
"basic_specification": {
"measure": {
"field": "Sales",
"aggregation": "AGGREGATION_SUM"
},
"time_dimension": {
"field": "Order Date"
},
"filters": []
},
"is_running_total": false
},
"metric_specification": {
"filters": [],
"measurement_period": {
"granularity": "GRANULARITY_BY_MONTH",
"range": "RANGE_CURRENT_PARTIAL"
},
"comparison": {
"comparison": "TIME_COMPARISON_PREVIOUS_PERIOD"
}
},
"extension_options": {
"allowed_dimensions": ["Region", "Category"],
"allowed_granularities": ["GRANULARITY_BY_DAY", "GRANULARITY_BY_MONTH"],
"offset_from_today": 0
},
"representation_options": {
"type": "NUMBER_FORMAT_TYPE_NUMBER",
"number_units": {
"singular_noun": "dollar",
"plural_noun": "dollars"
},
"sentiment_type": "SENTIMENT_TYPE_NONE",
"row_level_id_field": {
"identifier_col": "Order ID"
},
"row_level_entity_names": {
"entity_name_singular": "Order",
"entity_name_plural": "Orders"
},
"row_level_name_field": {
"name_col": "Order Name"
},
"currency_code": "CURRENCY_CODE_USD"
},
"insights_options": {
"settings": [ { "type": "INSIGHT_TYPE_TOP_DRIVERS", "disabled": false }, { "type": "INSIGHT_TYPE_METRIC_FORECAST", "disabled": false } ]
}
}
}
],
"metric_group_context_resolved": true
}
]
}
```
--------------------------------
### GET /tableau/tableau-mcp/datasources/{datasourceLuid}/metadata
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/data-qna/get-datasource-metadata.md
Fetches field metadata for the specified datasource identified by its LUID.
```APIDOC
## GET /tableau/tableau-mcp/datasources/{datasourceLuid}/metadata
### Description
Fetches field metadata for the specified datasource.
### Method
GET
### Endpoint
/tableau/tableau-mcp/datasources/{datasourceLuid}/metadata
### Parameters
#### Path Parameters
- **datasourceLuid** (string) - Required - The LUID of the data source, potentially retrieved by the List Data Sources tool.
### Request Example
(No request body for GET request)
### Response
#### Success Response (200)
(Response structure not explicitly defined in the provided text, but would typically include datasource details and field metadata)
#### Response Example
```json
{
"message": "Metadata for datasource retrieved successfully"
}
```
```
--------------------------------
### Build Tableau MCP Docker Image
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/developers/building.md
Builds the Docker image for Tableau MCP from source. This command compiles the project and packages it into a Docker image, enabling deployment and execution within a containerized environment.
```bash
npm run build:docker
docker images
```
--------------------------------
### GET /tableau/tableau-mcp/views
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/views/list-views.md
Retrieves a list of views from Tableau. Supports filtering, pagination, and result limiting.
```APIDOC
## GET /tableau/tableau-mcp/views
### Description
Retrieves a list of views from Tableau. This endpoint allows for filtering, specifying the page size for API calls, and setting a maximum limit for the number of returned views.
### Method
GET
### Endpoint
/tableau/tableau-mcp/views
### Query Parameters
- **filter** (string) - Optional - A filter expression for selecting views. See Tableau REST API Views filter fields for syntax.
- **pageSize** (integer) - Optional - The number of views to retrieve per API call. Defaults to a system value, but can be increased for larger datasets.
- **limit** (integer) - Optional - The maximum number of views to return in total. If not specified, the system default or `MAX_RESULT_LIMIT` will apply.
### Request Example
```json
{
"filter": "name:eq:Overview",
"pageSize": 1000,
"limit": 2000
}
```
### Response
#### Success Response (200)
- **id** (string) - The unique identifier of the view.
- **name** (string) - The name of the view.
- **createdAt** (string) - The timestamp when the view was created.
- **updatedAt** (string) - The timestamp when the view was last updated.
- **workbook** (object) - Information about the workbook containing the view.
- **id** (string) - The ID of the workbook.
- **owner** (object) - Information about the owner of the view.
- **id** (string) - The ID of the owner.
- **project** (object) - Information about the project the view belongs to.
- **id** (string) - The ID of the project.
- **tags** (object) - Tags associated with the view.
- **usage** (object) - Usage statistics for the view.
- **totalViewCount** (integer) - The total number of times the view has been accessed.
#### Response Example
```json
[
{
"id": "9460abfe-a6b2-49d1-b998-39e1ebcc55ce",
"name": "Overview",
"createdAt": "2025-09-02T23:25:58Z",
"updatedAt": "2025-09-02T23:25:58Z",
"workbook": {
"id": "222ea993-9391-4910-a167-56b3d19b4e3b"
},
"owner": {
"id": "d2a1e1df-af8e-4f43-a4cc-34858b7f8b69"
},
"project": {
"id": "cbec32db-a4a2-4308-b5f0-4fc67322f359"
},
"tags": {},
"usage": {
"totalViewCount": 0
}
}
]
```
```
--------------------------------
### Configure Tableau MCP Server with Node.js
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/developers/building.md
Configures an AI tool (MCP client) to connect to a Tableau MCP server running via Node.js. It specifies the command to run, arguments including the path to the index script, and environment variables for server connection details.
```json
{
"mcpServers": {
"tableau": {
"command": "node",
"args": ["full/path/to/build/index.js"],
"env": {
"SERVER": "https://my-tableau-server.com",
"SITE_NAME": "my_site",
"PAT_NAME": "my_pat",
"PAT_VALUE": "pat_value"
}
}
}
}
```
--------------------------------
### GET /pulse/metrics
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/pulse/list-pulse-metrics-from-metric-definition-id.md
Retrieves a list of published Pulse metrics from a Pulse metric definition ID.
```APIDOC
## GET /pulse/metrics
### Description
Retrieves a list of published Pulse metrics from a Pulse metric definition ID.
### Method
GET
### Endpoint
`/pulse/metrics`
### Parameters
#### Query Parameters
- **pulseMetricDefinitionID** (string) - Required - The ID of the Pulse metric definition to list metrics for.
### Request Example
```json
{
"pulseMetricDefinitionID": "9ad098f4-49cf-4e8a-bec0-0ca803091dd0"
}
```
### Response
#### Success Response (200)
- **id** (string) - The ID of the metric.
- **specification** (object) - The specification of the metric.
- **filters** (array) - Filters applied to the metric.
- **measurement_period** (object) - The measurement period for the metric.
- **granularity** (string) - The granularity of the measurement period (e.g., GRANULARITY_BY_MONTH).
- **range** (string) - The range of the measurement period (e.g., RANGE_CURRENT_PARTIAL).
- **comparison** (object) - The comparison for the metric.
- **comparison** (string) - The type of comparison (e.g., TIME_COMPARISON_PREVIOUS_PERIOD).
- **definition_id** (string) - The ID of the Pulse metric definition.
- **is_default** (boolean) - Whether this metric is the default.
- **schema_version** (string) - The schema version of the metric.
- **metric_version** (integer) - The version of the metric.
- **is_followed** (boolean) - Whether the metric is followed.
#### Response Example
```json
[
{
"id": "fd6c4aa0-f6d3-469e-b75b-d597435ae199",
"specification": {
"filters": [],
"measurement_period": {
"granularity": "GRANULARITY_BY_MONTH",
"range": "RANGE_CURRENT_PARTIAL"
},
"comparison": {
"comparison": "TIME_COMPARISON_PREVIOUS_PERIOD"
}
},
"definition_id": "9ad098f4-49cf-4e8a-bec0-0ca803091dd0",
"is_default": true,
"schema_version": "1.0.0",
"metric_version": 2,
"is_followed": true
}
]
```
```
--------------------------------
### Get View Image API
Source: https://context7.com/tableau/tableau-mcp/llms.txt
Retrieves a rendered PNG image of a specific view from a Tableau workbook with customizable dimensions.
```APIDOC
## POST /get-view-image
### Description
Retrieves a rendered PNG image of a specific view from a Tableau workbook with customizable dimensions.
### Method
POST
### Endpoint
/get-view-image
### Parameters
#### Request Body
- **viewId** (string) - Required - The unique identifier for the Tableau view.
- **width** (integer) - Optional - The desired width of the image in pixels.
- **height** (integer) - Optional - The desired height of the image in pixels.
### Request Example
```json
{
"viewId": "view-abc-123",
"width": 1200,
"height": 800
}
```
### Response
#### Success Response (200)
- Returns PNG image data (base64 encoded).
#### Response Example
```
[Base64 encoded PNG image data]
```
```
--------------------------------
### Get View Image
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/views/get-view-image.md
Retrieves an image of the specified view in a Tableau workbook. This API calls underlying Tableau REST API endpoints to fetch the view image.
```APIDOC
## GET /tableau/tableau-mcp/views/image
### Description
Retrieves an image of the specified view in a Tableau workbook. This endpoint allows you to fetch a visual representation of a Tableau view.
### Method
GET
### Endpoint
/tableau/tableau-mcp/views/image
### Parameters
#### Query Parameters
- **viewId** (string) - Required - The ID of the view for which to retrieve the image.
- **width** (integer) - Optional - The desired width of the rendered image in pixels. This, along with `height`, determines the resolution.
- **height** (integer) - Optional - The desired height of the rendered image in pixels. This, along with `width`, determines the resolution.
### Request Example
```json
{
"viewId": "9460abfe-a6b2-49d1-b998-39e1ebcc55ce",
"width": 1600,
"height": 1200
}
```
### Response
#### Success Response (200)
The response will be an image file representing the Tableau view. The specific content type will depend on the Tableau server's configuration (e.g., PNG, JPG).
#### Response Example
(Binary image data)
```
--------------------------------
### Deploy to Heroku Button
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/extras/deploy-heroku.md
This is a direct link to initiate the Heroku deployment process for a Tableau MCP instance. Clicking this button will redirect the user to Heroku's deployment page, pre-configured with the Tableau MCP template.
```HTML
```
--------------------------------
### Get Datasource Metadata API
Source: https://context7.com/tableau/tableau-mcp/llms.txt
Retrieves detailed metadata for a specific Tableau datasource, including its columns, data types, descriptions, and table relationships.
```APIDOC
## Get Datasource Metadata
### Description
Retrieves comprehensive metadata about a datasource including columns, data types, descriptions, and table relationships.
### Method
GET
### Endpoint
/tableau/tableau-mcp/get-datasource-metadata
### Parameters
#### Query Parameters
- **datasourceLuid** (string) - Required - The unique identifier (LUID) of the datasource.
### Request Example
```json
{
"datasourceLuid": "datasource-xyz-789"
}
```
### Response
#### Success Response (200)
- **datasource** (object) - An object containing the datasource's metadata.
- **id** (string) - The unique identifier of the datasource.
- **name** (string) - The name of the datasource.
- **columns** (array) - An array of column objects within the datasource.
- **name** (string) - The name of the column.
- **dataType** (string) - The data type of the column.
- **description** (string) - A description of the column.
- **aggregation** (string) - The default aggregation for the column.
- **tables** (array) - An array of table objects included in the datasource.
- **name** (string) - The name of the table.
- **schema** (string) - The schema the table belongs to.
#### Response Example
```json
{
"datasource": {
"id": "datasource-xyz-789",
"name": "Superstore",
"columns": [
{
"name": "Sales",
"dataType": "REAL",
"description": "Total sales amount",
"aggregation": "SUM"
},
{
"name": "Category",
"dataType": "STRING",
"description": "Product category",
"aggregation": "ATTR"
},
{
"name": "Order Date",
"dataType": "DATE",
"description": "Date of order",
"aggregation": "ATTR"
}
],
"tables": [
{
"name": "Orders",
"schema": "public"
}
]
}
}
```
```
--------------------------------
### Follow-up Question with Conversation History (JSON)
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/pulse/generate-pulse-insight-brief.md
This JSON structure demonstrates a follow-up question within a conversation. It includes the history of previous messages, showing an initial user question, an assistant's response, and a subsequent user question seeking contributing factors to a previously mentioned increase.
```json
{
"language": "LANGUAGE_EN_US",
"locale": "LOCALE_EN_US",
"messages": [
{
"action_type": "ACTION_TYPE_SUMMARIZE",
"content": "What are the key insights for Sales?",
"role": "ROLE_USER",
"metric_group_context": [
/* ... */
],
"metric_group_context_resolved": true
},
{
"action_type": "ACTION_TYPE_SUMMARIZE",
"content": "Sales increased 5% with growth in Region A and B...",
"role": "ROLE_ASSISTANT",
"metric_group_context": [
/* ... */
],
"metric_group_context_resolved": true
},
{
"action_type": "ACTION_TYPE_ANSWER",
"content": "What factors contributed to the increase?",
"role": "ROLE_USER",
"metric_group_context": [
/* ... */
],
"metric_group_context_resolved": true
}
]
}
```
--------------------------------
### JSON Example: Filtering Tableau Content by Owner and Specific Dates
Source: https://github.com/tableau/tableau-mcp/blob/main/docs/docs/tools/content-exploration/search-content.md
Illustrates filtering search results by a list of owner IDs and an array of specific modification dates.
```json
{
"ownerIds": [12345, 67890],
"modifiedTime": [
"2025-02-01T20:01:03Z",
"2024-11-15T14:23:07Z",
"2024-12-08T09:45:33Z",
"2025-01-22T16:12:58Z",
"2025-03-07T11:37:21Z",
"2025-04-18T20:55:14Z"
]
}
```