Skip to main content
Glama
andey0Saikiran

tableau-lineage-mcp

Tableau Workbook Auditor

Finden Sie heraus, was mit einer beliebigen Tableau-Arbeitsmappe (.twbx) nicht stimmt, und bilden Sie jede darin enthaltene Abhängigkeit ab – vollständig in Ihrem Browser. Unbenutzte Felder, doppelte Berechnungen, Leistungsprobleme, die vollständige Lineage berechneter Felder, Filter, Dashboards und gespeicherte SQL-Abfragen. Es wird nichts hochgeladen, gespeichert oder übertragen.

🔗 Live: https://tableau-lineage.com 📦 MCP-Server: tableau-lineage-mcp


Warum

Die Tableau-Arbeitsmappe einer anderen Person zu übernehmen bedeutet, dutzende berechnete Felder von Hand nachzuvollziehen, um eine Frage zu beantworten: Woher kommt diese Zahl, und was bricht, wenn ich sie ändere?

Zwei weitere Fragen tauchen fast genauso häufig auf und haben keine kostenlose Antwort:

  • Was ist hier unbenutzt? Tableau hat keine eingebaute Möglichkeit, ungenutzte Felder aufzulisten; die Anfrage ist seit 2015 im Community-Forum offen.

  • Warum ist es langsam? Tableaus Workbook Optimizer benötigt eine Creator-Lizenz, und Catalog benötigt Data Management auf Server oder Cloud.

Dieses Tool liest die Arbeitsmappendatei selbst und beantwortet alle drei Fragen – kostenlos, ohne Lizenz und ohne Konto. Da Arbeitsmappen oft vertrauliche Daten enthalten, läuft alles lokal: Die .twbx verlässt Ihren Rechner nie – das ist eine Eigenschaft der Architektur und kein Versprechen (es gibt keinen Server, an den sie gesendet werden könnte).

Related MCP server: Tableau MCP

Funktionen

Audit

  • Toter Ballast: Jedes Feld, jeder Parameter und jede Berechnung, das von nichts verwendet wird, mit einer Bewertung nach Konfidenz (unused, likely-unused, referenced-in-comment) und ausgeführtem Grund. Diese werden eher als Kandidaten denn als Gewissheiten gemeldet, denn eine Arbeitsmappendatei kann nicht beweisen, dass ein Feld nirgendwo unbenutzt.

  • Doppelte Berechnungen: identische Formeln unter verschiedenen Namen, und der gefährlichere Fall desselben Namens, dessen Name e Allen Reize mit sich herumträgt einen altersverschiedene Formeln.

  • Performance-Lint: 15 statische Regeln über das, was die Datei tatsächlich enthält. Schwere und verschachtelte LODs, lange Berechnungen, string-lastige Arbeit, zu viele Schnellfilter, fehlende Kontextfilter, Live-Verbindungen, nicht fixierte Dashboard-Größen, zu dicht bestückte Dashboards, verwaiste Arbeitsblätter.

Lineage

  • Interaktiver Abhängigkeitsgraph (vis-network): berechnete Felder, Rohfelder, Parameter und Arbeitsblätter als Knoten; Kanten zeigen, was was speist. Nach Datenquelle clustern, suchen, Ketten hervorheben, zoomen und schwenken.

  • Durchsuchbares Datenwörterbuch: jede Formel, gruppiert nach Datenquelle, plus einen Abschnitt für Arbeitsblätter.

  • Sieben anklickbare Kennzahlen: Datenquellen, berechnete Felder, Rohfelder, Parameter, LOD-Berechnungen, Tabellenberechnungen, Filter.

Struktur

  • Filter, entschlüsselt: jeder Filter über Arbeitsblätter hinweg dedupliziert, mit seiner Art (kategorisch / quantitativ / relatives Datum), Kontextfilter-Betüse, gespeicherten Mitgliedsauswahl und Bereichen sowie einer Aufschlüsselung pro Arbeitssoffice. Datenquellen-Filter werden als separater Punk ausgewiesen.

  • Dashboards: welche Arbeitsblätter welches Dashboard platzieren, dessen feste Größe und Gerätelayouts plus Blätter, die auf keinem Dashboard liegen, und Blätter, die ausgeblendet sind.

  • Datenprovenanz: Extrakt oder Live-Verbindung, Verbindungsklasse inklusive Datenbank/Server, veröffentlichte (sqlproxy) Quellen und der Aktualisierungsverlauf, wo ihn die Arbeitsmappuchen achthundert.

  • Gespeichertes SQL: jede Custom-SQL-Abfrage (Volltext), jede Initial-SQL-Anweisung, Verweis auf eine gespeicherte Physical-Query mit Parametern und RASQL_*-Berechnung, jeweils zugeordnet zur adressierten Verbindung. Laufzeitgenerierte Live-Verbindungsabfragen sind in Arbeitsmappendateien nicht gespeichert und daher explizit nicht erhalten.

Versionen vergleichen

Legen Siehin das bis zu fünf Versionen desselben Dashboards ab und erhalten Sie einen semantischer Diff: welche Berechnungen hinzugefügt, entfernt, umbenannt oder bearbeitet wurden; bei jeder Änderung sehen Sie die nachgelagerten Felder, die sie bricht können – außer geänderte Parameter, Flashcards, Arbeitsblätter, Dashboards, Datenquellen und SQL. Eine bloße Umformatierung einer Berechnung wird nicht als Änderung gemeldet; verschwindet ein Feld, während eine identische Formel unter neuem Namen wieder auftaucht, wird das als Umbenennung angezeigt.

Ein Git-Diff zwischen zwei .ttwbx-Dateien kann das nicht leisten: Die Arbeitsmappe ist ein einziges, dhiel erwähntes XML-Data-Module, in dem Layoutkoordinaten und neu erzeugte IDs die eigentlichen wenigen Änderungen machen.

export

Alle Exporte werden im Browser ausgenommen, auf Basis desselben geparsten Modells:

  • Interaktiver HTML-Bericht: self-contained und offline-fähig (vis-network direkt eingebettet), Security-mit dem Tool und dem Autor.

  • Markdown-Übergabe-Dokument: die Arbeitsmappe als zusammenhängender Text (Kennzahlen, Audit, Dashboards, Datenquellen, Parameter, Filter, jede Formel, gespeichertes SQL) für ein Ticket, ein Wiki oder eine README-Datei. Zugleich das Format, die ein LLM am besten versteht, wenn später jemand eine Frage zur Arbeitsmappe stellt.

  • CSV als Datenfeld-Inventar (einschließlich der Nutzung in welchen Arbeitsblättern) und JSON des vollständigen Modells inklusive Audit.

Alles andere

  • Durch Architektur privat: Das Auspacken und Analysieren (unzip + XML) der Arbeitsmappe wird im Client ausgeführt. Kein Backend, keine Uploads, keine Cookies. Ziel-Statistik ist eine anonyme, aggregierte Aufruf-Zähler ohne Tracking.

  • Arbeitsmappen bis 500 MB: Nur das XML der Arbeitsmappe wird dekomprimiert; der verpackte Datenextrakt wird nie angefasst.

  • Barrierefreiheit: Tastaturnavigation, Fokusmanagement, AA-Kontrast, Bereitschaft gegenüber reduced-motion und ein Text-Wörterbuch als gleichwertige Alternative zum Graphen auf der Leinwand.

  • Sieben UI-Sprachen für die Kernintenstrings (Schaltflächen, Labels, Statusmeldungen), mit Englisch als Ausweichsprache. Längere Erklärtexte sind nur in Englisch erhalten.

Wie funktioniert es

.twbx (a ZIP)
  └─ fflate unzips ONLY the .twb entry  ──►  DOMParser reads the XML once
        ├─ extractor.ts        lineage model: calcs, dependencies, params, stats
        ├─ filterExtractor.ts  filters + per-worksheet usage
        ├─ sqlExtractor.ts     Custom SQL, Initial SQL, stored procs, RAWSQL
        ├─ dashboardExtractor  dashboards, hidden/orphan sheets, provenance
        ├─ audit.ts            dead weight, duplicates, performance lint
        └─ diff.ts             semantic diff between two parsed workbooks
              ├─ in-app: a sandboxed <iframe srcdoc> report
              └─ exports: HTML / Markdown / CSV / JSON, all from the same model

Der verpackte Datenextrakt innerhalb einer .twbx-Datei wird (nur) nie dekomprimiert. Deshalb ist eine 500-MB-Arbeitsmappe unproblematisch, und deshalb kann das Tool Ihre Datenzeilen nicht einmal prinzipiell sehen.

Anmerkungen zur Korrektheit

Das Analyse-Kernprogramm ist ein TypeScript-Port des ursprünglichen Python-Dienstes, mit Verbesserungen, die grundsätzlich jeweils deshalb existieren, weil die naive Bootstrap-Versionet auf einer realen Arbeitsmappe falsche Ergebnisse geliefert hat:

  1. Parameternamen über die Beschriftung. Formeln referenzieren Parameter über ihre Caption (Beispiel [Parameters].[Survival Target (Months)]), während der interne Name abweicht (z. B. [Survival Benchmark]). Das Original erzeugte dadurch eine gehen Gesuchte Parameters-Abhängigkeit.

  2. Tabellenberechnungen anhand des Tokens, nicht eines Joker-Snippets. TOTAL in [total_views] führte vorher dazu, dass gewöhnliche Felder fälschlich als Tabellenberechnung erkannt wurden. Jetzt werden nur ganze Funktionsaufrufe berücksichtigt; die LOD-Detection an geschweifte Klammern verankert.

  3. Kommentare und String-Literale werden vor der Einflussanalyse entfernt. Ein Feldname, der in einem Kommentar mit // vorkommt, wird nicht als Abhängigkeit betrachtet – und diese Annahme hat falsche ungenutzte Felder zuvor als benutzt erscheinen lassen.

  4. Knoten werden per Datenquelle geschlüsselt, nicht nur per Name. Zwei Datenquellen können beide [dbo].[Sales] nennen; wenn man sie zusammenführt, verschmelzen unabhängige Äste in einen Knoten.

  5. Beschriftungsauflösung ist dokumentenweit. Bei auf veröffentlichten Datenquellen erstellten Arbeitsmappen bleiben Captions nur in den Analyse-Tabellen der Arbeitsblätter erhalten, sodass Filter und Arbeitsblattfeldern teilweise nur rohe Schlüssel wie Calculation_5431234567890123 auftauchen.

  6. Ein <datasources>-Block ist nur auf der Stammschutz-Node echt. Jedes Arbeitsblatt trägt eine Referenzliste der gleichen Form; dadurch wurde ein einzelne Datenquelle in einer Zwölf-Blatt-Arbeitsmappe 13 Mal gezählt.

Alle Fälle sind durch Tests abgedeckt (npm test, npm run test:core).

Technik-Stack

Vite · React 19 · TypeScript · Tailwind CSS · fflate (unzip) · native DOM entsprechendeParser (XML) · vis-network (Graph). Kein Backend.

MCP Server (für KI-Begleiter)

Die System-Engine wird auch als MCP-Server ausgeliefert, sodass Claude, Cursor und andere MCP-Clients Arbeitsmappen direkt auf der Festplatte lesen und prüfen können. Immer noch 100 % lokal.

Claude Desktop: Laden die Ergänzung herunter und Doppel-Klick der Datei. Nur ein Klick, kein Terminal und keine Node.js-Maintenance.

Claude Code (installier das MCP plus noch ein Skill, das erkennt, wann man ihn nutzen sollte):

/plugin marketplace add andey0Saikiran/tableau-lineage
/plugin install tableau-lineage@tableau-lineage

Cursor und andere MCP-Clients:

claude mcp add tableau-lineage -- npx -y tableau-lineage-mcp

Elf Werkzeuge: analyze_workbook, audit_workbook, diff_workbooks, list_calculated_fields, get_field, trace_dependencies, list_parameters, get_lineage_graph, list_sql_queries, list_filters, list_worksheets. Die vollständige Dokumentation befindet sich in mcp/.

Dann fragen Sie sie:

  • „Prüfen Sie diese Arbeitsmappe und sagen Sie mir, was bedenkenlos gelöscht werden kann.“

  • „Was hat sich zwischen diesen beiden Versionen geändert, und was würden dadurch?“

  • „Welche Blätter enthalten den Filter Region, und welche Werte sind jeweils ausgewählt?“

  • „Erstellen Sie ein Datenlexikon für diese Arbeitsmappe.“

Heimat starten

npm install
npm run dev          # http://localhost:5173

Wichtige Skripte:

npm run build        # typecheck + production build + pre-render to dist/
npm run preview      # serve the production build
npm run typecheck    # tsc --noEmit
npm test             # Vitest: extractors, audit, diff, exports
npm run test:core    # extractor parity + regression tests (Node)
npm run prerender    # re-run the static pre-render over an existing dist/

Der Build-Vorgang rendert die Einstiegsseite mit react-dom/server und bettet das Markup in dist/index.html ein, sodass Crawler echte Inhalte statt einer leeren Markierung <div id="root"> erhalten. Die Site bleibt vollständig statisch: kein Server ist beim Build oder beim Betrieb aktiv.

Bereitstellung (Cloudflare Workers static assets)

Das ist eine statische Site; der Ordner dist/ kann auf jedem statischen Host abgelegt werden. Die Live-Site läuft auf Cloudflare Workers static assets, konfiguriert über wrangler.jsonc in diesem Repository:

{ "name": "tableau-lineage", "assets": { "directory": "./dist" } }
  1. Scheiben Sie dieses Repository auf GitHub.

  2. Cloudflare Dashboard → Workers & Pages → Create → Import from a component → Repository wählen. Cloudflare wertet wrangler.jsonc aus und überträgt dist/ als static assets handed.

  3. Build-Einstellungen:

    • Build-Kommando: `npm

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI applications to integrate with Tableau through tools, resources, and prompts for querying data, exploring content, and retrieving visualizations from Tableau workbooks and datasources.
    10,642
    323
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI applications to interact with Tableau through tools for querying data, exploring content, and retrieving views.
    10,642
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local MCP server that allows LLMs to inspect and safely edit Tableau Desktop workbooks (.twb) via XML, including creating native calculated fields using Tableau formula syntax.
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/andey0Saikiran/tableau-lineage'

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