Skip to main content
Glama
tdries

tableau-graphql-mcp

by tdries

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TABLEAU_COOKIENoAdvanced: a browser session cookie (SSO fallback).
TABLEAU_SERVERNohttps://tableau.company.com (Server) or https://<pod>.online.tableau.com (Cloud).
TABLEAU_TIMEOUTNoPer-request timeout (seconds).60
TABLEAU_PAT_NAMENoPersonal Access Token name.
TABLEAU_AUTH_TOKENNoAdvanced: a pre-obtained X-Tableau-Auth token (SSO tenants where PATs are disabled).
TABLEAU_PAT_SECRETNoPAT secret: the whole string, do not split on :.
TABLEAU_API_VERSIONNoREST API version; else read from /api/serverinfo.
TABLEAU_METADATA_PATHNoOverride the GraphQL path; else auto-detected.
TABLEAU_SITE_CONTENT_URLNoSite slug (the part after /#/site/). Empty = Default site (Server only); Cloud always has one.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
graphql_queryA

Run ANY read-only GraphQL query against the Tableau Metadata API. This is the general-purpose tool; use it for any lineage question. Returns {"data": ..., "errors": ...}.

The Metadata API is a GraphQL graph of Tableau content (workbooks, sheets, dashboards,
datasources, fields) and, with the Data Management add-on, physical assets (databases,
tables, columns) and their upstream/downstream lineage.

How to write a correct query:
- Filters are EXACT and case-sensitive: `filter: {name: "X"}` or `filter: {nameWithin: ["X","Y"]}`
  (nameWithin is the only multi/OR match; there is NO substring or regex).
- Every list field has a `<name>Connection` variant with `first`/`offset`/`after` + `pageInfo`
  (page size max 1000). Keep one query under ~20,000 nodes; narrow filters and page.
- Fields is an interface; branch with `__typename` and inline fragments
  (`... on ColumnField { columns { name } }`, `... on CalculatedField { formula }`).
- Reach a field's owning workbook via `datasource { ... on EmbeddedDatasource { workbook { name } } }`.
- `downstream*` fields (downstreamWorkbooks/Owners, external tables/columns) need Data Management
  (Tableau Catalog) and are often empty otherwise; then resolve via core lineage
  (referencedByFields -> sheets -> workbook), or just call the `where_used` tool.

Entry points include: workbooks, sheets, dashboards, publishedDatasources, embeddedDatasources,
fields, columnFields, calculatedFields, columns, databaseTables, customSQLTables, databases,
flows, tableauUsers, dataQualityWarnings. Call `lineage_examples` for ready-made query templates
and a schema cheat-sheet, or `introspect_schema` to inspect any type's exact fields.

Read-only: mutation and subscription operations are rejected. If a query exceeds the
~20,000-node limit, the response is flagged with `partial_results: true` and a `warning`
(it does NOT auto-page an arbitrary query) so you never mistake a truncated result for a
complete one.
introspect_schemaA

Introspect the live Metadata API GraphQL schema (introspection is enabled).

With no argument: returns every Query entry point (with its args) and the full list of
type names. With `type_name` (e.g. "Column", "Workbook", "DatabaseTable", "CalculatedField"):
returns that type's fields, their result types, and args, so you can write a correct query
against exactly what this server exposes.
lineage_examplesA

Return a schema cheat-sheet and a library of curated lineage questions with their correct GraphQL queries (+ example variables). Read this before composing a graphql_query.

Categories: impact, provenance, calc, datasource, search, inventory, governance, ownership.
Pass one to filter; omit to get them all. Each example has: question, graphql, variables, notes.
where_usedA

Find which workbooks (and published datasources) USE the given names, the common 'where is this used / impact analysis' question, resolved robustly.

`names` are EXACT, case-sensitive names of any of: a Snowflake/DB column, a Tableau
field or alias, or a database table. Pass several to check them in one call. Results
group by workbook, showing how each matched (column / field / whole table, with schema
and source table) and which worksheets use it.

This uses CORE lineage (referencedByFields -> field.sheets -> workbook, and
field.datasource -> workbook), so it works even without the Data Management add-on where
`downstreamWorkbooks` is empty. For other shapes of question, use `graphql_query`.
impact_analysisA

Full transitive (MULTI-HOP) downstream impact of a column, field, or table. Returns every field that directly OR indirectly depends on it, and all affected sheets, dashboards, workbooks, plus the de-duplicated set of OWNERS to notify before a change.

This is the "what breaks if I change/drop this?" tool. Unlike `where_used` (one core-lineage
hop), it follows the whole dependency chain — a calc built on a calc built on the column is
included. `name` is exact and case-sensitive. Workbooks are derived from downstream
sheets/dashboards (the flat downstreamWorkbooks edge is unreliable). If it returns nothing on a
site without Data Management, the transitive lineage may not be indexed there — use `where_used`
for the direct references.
search_contentA

Find content whose NAME contains term (case-insensitive SUBSTRING). Use this when you only know part of a name, since every other tool and the Metadata API filter are exact-match.

Searches workbooks, published datasources, and database tables by default. Pass `types` to
choose from: "workbook", "datasource", "table", "field", "column". Returns matches grouped by
type. It pages through content client-side, so on a very large site it scans the first ~1200
of each type and says so in `note`; once you know the exact name, prefer `graphql_query` or `where_used`.
server_infoA

Report the connected Tableau environment: server URL, site, product & REST API version, which Metadata API endpoint is in use, the auth method, and whether external-asset (Data Management / Catalog) lineage appears available. Good first call to confirm the connection and understand what lineage depth to expect.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tdries/tableau-graphQL-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server