
Tableau Graphql Mcp
io.github.tdries由 GitHub 帳號 tdries 發布v0.2.0更新於 Oct 24, 2026
Ask any Tableau lineage question, in any MCP client, through the Tableau Metadata API.
概覽
把 Tableau 站台的 Metadata API 包裝成唯讀 MCP 工具,讓助理用自然語言回答血緣與影響範圍問題。
- 可以做什麼
- 執行任意唯讀的 Metadata API GraphQL 查詢,觸及節點上限時標示結果不完整
- 即時檢視 schema,並取用內建查詢範本與範例
- 查出指定欄位、欄位或資料表被哪些活頁簿與資料來源使用
- 追蹤欄位、欄位或資料表的多跳影響範圍,含受影響的工作表、儀表板、活頁簿及需通知的負責人
- 依名稱子字串搜尋活頁簿、資料來源與資料表,並附掃描涵蓋數
- 檢視所連伺服器、站台、版本、端點與驗證狀態
- 適用情境
- 適合在修改 Tableau 欄位、欄位或資料表前確認會影響哪些內容、某個活頁簿依賴哪些資料來源,以及該通知誰;答案來自即時中繼資料而非固定報表。
- 執行需求
- 透過 uvx 以 stdio 在本機執行(Python 套件,需安裝 uv)。需設定 TABLEAU_SERVER、TABLEAU_PAT_NAME 與 TABLEAU_PAT_SECRET,非預設站台另需 TABLEAU_SITE_CONTENT_URL;SSO 租戶可改用 TABLEAU_AUTH_TOKEN 或 TABLEAU_COOKIE。需能以 HTTPS 連線 Tableau 主機;Tableau Server 上需由管理員啟用 Metadata API。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Tableau Graphql Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
tableau-graphql-mcp
Ask any Tableau lineage question, in any MCP client, through the Tableau Metadata API.
[CI] [CodeQL] [OpenSSF Best Practices] [OpenSSF Scorecard] [Ruff] [PyPI] [Python versions] [MCP compatible] [MIT License] [Server + Cloud] [Minimal dependencies]
[Asking lineage questions in Claude]
tableau-graphql-mcp turns your Tableau site's Metadata API into a set of MCP tools, so an AI assistant (Claude, Cursor, Cline, and others) can answer lineage questions in plain language:
- "If I drop the column
SALES, which workbooks break?" - "What tables does the Sales Overview workbook depend on?"
- "Which calculated fields reference
Profit, and on which dashboards?" - "Who should I notify before changing the
DIM_CUSTOMERtable?"
It ships seven curated tools: a universal GraphQL passthrough, live schema introspection, an embedded library of correct query templates, a robust where_used resolver, a multi-hop impact_analysis, a substring content search, and a connection probe. Together they let the model answer any lineage question, not just a fixed menu.
Why it's different
- Any question, done right.
graphql_queryruns any read-only GraphQL;introspect_schemaand a built-in cheat-sheet plus 28 worked examples keep the model's queries correct. - True impact analysis (multi-hop).
impact_analysisfollows the whole dependency chain (a calc built on a calc built on a column is included) and returns the full blast radius plus the de-duplicated owners to notify, not just direct references. - Works everywhere. Tableau Server and Cloud. The REST API version and the GraphQL endpoint (
/api/metadata/graphql, with a/relationship-service-war/graphqlfallback) are auto-detected. - Robust lineage without Catalog.
where_usedresolves workbooks via core lineage (referencedByFields -> sheets -> workbook), so it works even when the Data Management add-on'sdownstreamWorkbooksis empty. - No silent truncation.
graphql_queryflagspartial_resultswhen a query hits the node limit, andsearch_contentreportsscanned/totalcoverage, so a truncated answer is never mistaken for a complete one. - Tiny and safe. Read-only, stdio-only (no inbound port), secrets from env only, and no dependencies beyond the MCP SDK (stdlib
urllibfor HTTP).
Quickstart
You need uv (curl -LsSf https://astral.sh/uv/install.sh | sh) and a Tableau Personal Access Token.
Claude Code, one line:
That's all. uvx fetches the package from PyPI and runs it in an isolated environment; nothing to clone or install (and no git required). Then ask Claude a lineage question.
Configuration
All configuration is via environment variables (set them in your client's env block, never on the command line).
¹ Provide a PAT (TABLEAU_PAT_NAME + TABLEAU_PAT_SECRET) or an advanced TABLEAU_AUTH_TOKEN / TABLEAU_COOKIE.
Claude Desktop
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
Fully quit and reopen Claude Desktop, then check the tools menu.
Cursor · Cline · Windsurf
Every client uses the same mcpServers schema shown above. Add the same block to:
- Cursor:
~/.cursor/mcp.json(global) or.cursor/mcp.json(project). - Cline: the MCP Servers panel, then Configure, into
cline_mcp_settings.json. - Windsurf:
~/.codeium/windsurf/mcp_config.json.
On Windows, if uvx isn't found by the GUI app, use its absolute path (e.g. %USERPROFILE%\.local\bin\uvx.exe).
Tools
All tools are read-only. The Metadata API has no mutations.
Example prompts
Once connected, try:
- "Use server_info to confirm what you're connected to."
- "Search for anything with 'revenue' in the name."
- "Which workbooks use the columns SALES, PROFIT and DISCOUNT? Group by owner."
- "Show me the field-to-source-column map for the 'Sales Overview' workbook."
- "List every calculated field in that workbook with its formula."
- "Which published datasources feed workbooks in the Analytics project, and which are uncertified?"
- "Run impact_analysis on the 'Profit Ratio' field: every dependent sheet, dashboard, workbook, and owner to notify."
- "What is the blast radius of dropping the DIM_CUSTOMER table: workbooks, sheets, and owners to notify?"
Architecture
The server speaks MCP over stdio to the client and HTTPS to Tableau: it signs in with your PAT to get an X-Tableau-Auth token (auto-refreshed on expiry), auto-detects the REST API version and the GraphQL endpoint, then forwards queries to the Metadata API. Nothing is stored; every answer is live.
Security
- Read-only, enforced. Only GraphQL queries: no writes, no shell.
graphql_queryrejectsmutation/subscriptionoperations, and the Metadata API is query-only regardless. - Declared read-only. Every tool carries the MCP
readOnlyHintannotation, so clients can verify it without reading the code. - Local and stdio-only. No inbound network port is opened.
- Secrets from env only. Never passed as tool arguments, never logged, never returned in output.
- Credentials go only to your Tableau host. HTTPS is required, certificates are verified, and redirects are refused.
- Least privilege. The PAT inherits your Tableau permissions; the API only returns content you can see.
- Verifiable releases. Every GitHub release carries Sigstore signatures and a CycloneDX SBOM, and PyPI uploads use Trusted Publishing.
- Pin a version in production:
uvx tableau-graphql-mcp==0.2.0.
See SECURITY.md for the threat model, data handling, disclosure policy and how to verify a release.
Troubleshooting
Inspect the server directly with the MCP Inspector:
Development
The same gates run in CI (Linux/macOS/Windows, Python 3.10 to 3.13): ruff check,
ruff format --check, mypy --strict, and pytest with a coverage floor. The package
ships a PEP 561 py.typed marker, so importing it gives your type checker full types.
CodeQL scans every push, and a weekly fuzzing job (fuzz/) attacks the read-only guard.
Contributions welcome: see CONTRIBUTING.md and the Code of Conduct.
Roadmap
Shipped: published on PyPI and listed on the official MCP registry. Next:
- Optional Data Management path: richer
downstreamWorkbookswhen Catalog is present - More curated query templates in
lineage_examples - Optional response caching for repeated introspection within a session
Ideas and votes welcome in Discussions.
License
來源:README.md,提交 992a1e6
工具
0版本歷史
2- v0.2.0最新Oct 14, 2026
- v0.1.2Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分