tableau-lineage-mcp
Tableau Workbook Auditor
任意の Tableau ワークブック(.twbx)の問題を検出し、その内部の依存関係をすべてマッピングします。動作はすべてブラウザ内で完結します。 未使用フィールド、重複計算、パフォーマンス問題、計算フィールドの完全な派生関係、フィルター、ダッシュボード、保存済み SQL を扱います。アップロードも、保存も、外部への送信も一切行われません。
🔗 ライブ: https://tableau-lineage.com
📦 MCP サーバー: tableau-lineage-mcp
なぜ?
他人の Tableau ワークブックを引き継ぐということは、多数の計算フィールドを手作業でリバースエンジニアリングして、1つの質問に答えることを意味します。「この数値はどこから来たのか、そしてこれを変えると何が壊れるのか?」
同じくらい頻繁に持ち上がるのに、無料では答えが見つからない質問が2つあります。
ここにある「死んだ」ものは何か? Tableau には未使用フィールドを一覧表示する組み込み機能がなく、その要望は2015年からコミュニティフォーラムで未解決のままです。
なぜ遅いのか? Tableau の Workbook Optimizer には Creator ライセンスが必要で、Catalog には Server または Cloud の Data Management が必要です。
このツールはワークブックファイルそのものを読み取り、これら3つの質問すべてに、ライセンスもアカウントも不要で無料で答えます。ワークブックは機密データを保持することがよくあるため、すべてローカルで実行されます。.tbx があなたのマシ離れることはありません。これは約束ではなく、アーキテクチャの性質によるものです(送信先のサーバーが存在しません)。
Related MCP server: Tableau MCP
特徴
監査
未使用の資産: 何からも参照されていないすべてのフィールド、パラメータ、計算を、信頼度(
unused、likely-unused、referenced-in-comment)とその理由付きで分類します。ワークブックファイルでは「どこからも参照されていない」ことを必ずしも証明できないため、確定ではなく候補として報告されます。重複計算: 別名で同じ数式が存在するケースと、より危険な、同じ名前が異なる数式を持つケースを検出します。
汎用アウト: ファイルに実際に含まれる内容に対する15の静的ルール。重い・入れ子の LOD、長い計算、文字列処理の多用、クイックフィルターの過多、を、コンテキストフィルターの欠落、ライブ接続、可変サイズのタッシュボード、密度の高いダッシュボード、孤立したワークシートを、監査します。
依存関係
インタラクティブな依存関係グラフ(vis-network): 計算フィールド、生フィールド、パラメータ、ワークシートをノードとして、どのデータを供給しているかをエッジで示します。データソースごとのクラスタリング、検索、チェーンのハイライト、ズーム、パンが行えます。
検索検索可能なデータディクショナリー: 数式をすべてにデータソースごとにまとめ、さらにワークシートのセクションもあります。
7つのクリック可能なメトリクス: データソース、計算フィールド、生フィールド、パラータ、LOD 計算、テーブル計算、フィルター。
構造
フィルターの詳細表示: すべてのフィルターをワークシート横断で重複排除し、種類(カテゴリカル/量的/相対型相対日)、コンテキスト・フィルターの状態、保存済みメンバーの選択と範囲、ワークシートごとの内訳を表示します。データソースフィルターは別途表示します。
ダッシュボード: 各ダッシュボードがどのワークシートを配置するか、固定サイズとデバイスレイアウト、およびどのダッシュボードにも配置されていないキ。と非表示。
シートを表示します。
データ使用元: 抽出またはライブ、利用時のクラス / データベース / サーバー、公開(
sqlproxy)ソース、リフ区画に記録されている更新履歴。保存済み SQL: すべてのカスタム SQL クエリ(全文)、 SQL 初期ステートメント、パラメータ付きストアドプロシージャ、
RAWSQL_*。
それぞれを、対象のデータベースとの宛先にマッピングします。実行時にを生成するライブ接続クエリはファイルに含まれていないため、その対象外です。
バージョン比較
同じダッシュボードの最大5つのバージョンをドロップすると、意味論的な差分(semantic diff)を得られます。それは「計算を追加・削除・リネーム・」」したかを示し、編集ごとに損ぎる可能性のある上流フィールドを明らかにします。さらに、変更されたパラメータ、フィルター、ワークシート、ダッシュボード、データソース、SQL も含まれます。計算の再フォーマットは変更として IR ポートされません。また、同一の数式が新しい名前で登場したにもう古いフィールドが消えた場合、リネームとして報告されます。
2つのファイルの Git diff ではこれはできません。ワークブックを含む大きな XML ブロブは、配置座標と再生成された ID が実際の変更を覆い隠してしまうからです。
エクスポート
以下はすべて、ブラウザ内でパーサー済みのモデルから生成されます。
上?
インタラクティブな HTML レポート: 自己完結型でオンラインに使え(vis-network を内部に取り込み)、ツールと権威者のウォーターマックを設定と。
Markdown 引き継ぎドキュメント: チケット・ウィキ・文章用に、データ端子指標、監査、ダッシュボード、データソース、パラメータ、フィルタ、全社式、保存 SQL として文章化することができます。また、後で誰がこのワークブックについて何かを尋ねてなどきたとき、LLM が最もよく読みこなせる形式でもあります。
CSV のフィールド在庫(各フィールドがどのワークセットでも使われているか込み)と、完全なモデルと監査結果を含む JSON。
その他
設計上、 プライベート:
.tbwの解析(解凍+ XML)はロー読で行われます。バックエンドも才能、アップロードも、 Cookie もありません。分析は匿名で集計がページビュー数のみです。最大 500MB のワークブックに対応: ワークブックの XML だけを解凍し、キャプションされている抽出データは一切に記述しません。
アクセシブル: キーボード操作、フォーカス管理、AA コントラスト、アニメーション軽減、そしてキャンバスと同等のテキスト辞書をフォームとして。
参照している「視覚的グラフの代替として」テキストを提供します。
コアUI文字列(ボタン、ラベル、ステータスメッセージ)は7つのUI言語に対応し、フォールバックは英語です。詳しい説明文は英語のみです。
動作の仕組み
.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.twb 内のデータ抽出物は解凍され侠い。だから 500MB のワークブックでも問題いませんし、このツールが原理上あなたの行をえないことも理由でもあります。
正しさに関する注記
分析の中核は、本来の Python サービスの TypeScript 移植版です。各修正は、素朴バージョンが実際のワークブックで誤っていたために存在しています。
キャプションによる視点カルパラメータ参照。 計算はパラメータを想定るキャプション(
[Parameters].[Survival Target (Months)])で参照しますが、内部名は異なる([Survival Benchmark])。元の実装は幻のParameters依存関係も列出してました。テーブル計算の検出はトークンではなく部分を文字列にしました。 ――総称と、
[total_views]内のTOTAL関数が普通のフィールドをテーブル計算として見張っていました。現在は関数呼び出し単位で照合し、LOD 検出も中括弧を基準にしています。スキャン前にコメントと文字列リテラルを除外します。
//コメント内で挙げられたフィール名が依存として扱われ、未使用のフィールが「使用中」とされていました。ノードは名だけでなくデータへのデータソースで管理されます。 2つのデータでソースが両方IPが
[Sales]を定義できます。それらをマージすると、無関係の分家がこのノードに融合します。キャプションはワークブック全体で解決されます。 発行されたデータソースに基づくワークブズは、キャプションを「」ーションは「ン・シード依存スタブ」にも保存が保存されるため、フィルターやシートのフィールドが
Calculation_5のような生のキーを大きく、Calculation_123と出力されていました。<datasources>ブロックはワークブックのルートで実在します。 すべてのワークシートが同じ形の参照リストを持っているため、12シートのワークブックでデータソースが13回数を数えていました。
上述の内容はテスト(npm test、npm run test:core)で検証されています。
技術スタック
Vite · React 19 · TypeScript · Tailwind CSS · fflate(unzip)・ネイティブ DOMParser(XML)・vis-network(グラフ)。バックエンドなし。
MCP サーバー(AI アシスタント向け)
同じエンジンが MCP サーバーとしても配布されており、Claude、Cursor、その他の MCP クライアントは 機械から直接ワークブックを読み取って監査できます。それも 100% ローカルで、何もアップロードされません。
Claude Desktop: 拡張機能をダウンロード してダブルクリックすると完了です。1 クリックで、ターミナルも Node のセットアップも不要です。
Claude Code(MCP のほかに、いつその機能を使うべきかを理解するスキルもインストールします):
/plugin marketplace add andey0Saikiran/tableau-lineage
/plugin install tableau-lineage@tableau-lineageCursor およびその他の MCP クライアント:
claude mcp add tableau-lineage -- npx -y tableau-lineage-mcp提供される 11 のツール: 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。詳しいドキュメントは mcp/ にあります。
ぜひ試したい質問:
「このワークブックを監査して、何が削除しても安全か教えてください。」
「2つのバージョン間で何が変更され、それがなにを壊すのかを理解してください。」
「どのシートで Region のフィルターを使ってるか、どの値が選択されていますか?」
「このワークブックのデータディクショナシルを作成してください。」
ローカルで実行する
npm install
npm run dev # http://localhost:5173その他のスクリプト:
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/ビルド時、react-dom/server をランディングページで事前レンダリングし. 生成したマークアップを dist/index.htmlに注入しますこれにより、クローラーは空の` ではなく実際のコンテンツを受け取ります。そして、ビルド時も実行時もサーバレスな静的なステーツのままです。
デプロイ(Cloudflare Workers 静的アセット)
これは静的なサイトで、dist/ フォルダは任意の静的ホストに置けます。本番サイトは Cloudflare Workers の静的アセットで構築され、このリポジトリの wrangler.jsonc で構成されています。
{ "name": "tableau-lineage", "assets": { "directory": "./dist" } }このリポジを GitHub にプッシュします。
Cloudflare ダッシュボード → Workers & Pages → Create → Import a repository → リポジトリを選択します。Cloudflare は
wrangler.jsoncを読みられ、dist/を静的アセットとして提供します。ビルド設定:
ビルドコマンド:
npm run buildデプロイコマンド:
npx wrangler dev
mainにプッシュするたびにビルドされ、自動でデプロイされます。カスタムドメイン: ワーカー → Settings → Domains & Routes →
tableau-lineage.comを追加(apex ではサブドメイン枠を空白にします)。wwwは apex へのプロキシされた CNAME と、リダイレクトルールで構成します。ドメインをネームサーバーを Cloudflare へ移行すると、自動で HTTPS が与えれます。
注: これは Workers であり、Pages ではありません。同じリポジトリから Pages プルジェクトを構築すると、サイトの別の並列コピーがデプロイされてしまいます。
public/_headers にはセキュリティベースラインとークのコンテックスページポリシー(CSP)が含まれて、を送出先本オリジンの `Cloudflare アクセス解析だけになるようにしています。これにより「データがブラウザから出ない」という約束が実現可能です。
分析(クッキーレス)
訪問者数は、Cloudflare Web Analytics から取得しています。クッキー、個人データなし。
Cloudflare ダッシュボード → Web Analytics → Addつ a site → ホストエントリを入力します。
ビーコンのトークンをコピーし、
index.htmlの中にコメントアウトされた<script>に貼り付けます。表示された数値は Cloudflare ダッシュボード → Web Analytics で確認します。
このページビーヴた1つだけが収集するデータです。
デモ・ワークブック
public/demo.twbx が「サンプルワークブックを試す」ボタンを動作させています。既定の例と紹介したい任意の .twbx に置き換えることができます。
ライセンス
MIT © 2026 Sai Satellites Kiran Andey
作者: Sai Kiran Andey。
This server cannot be installed
Maintenance
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
AlicenseNot gradedqualityAmaintenanceEnables 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,642323Apache 2.0- AlicenseNot gradedqualityBmaintenanceEnables AI applications to interact with Tableau through tools for querying data, exploring content, and retrieving views.10,642Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to programmatically read, modify, and query Tableau workbook files (.twb and .twbx) on the local filesystem via 80 tools.5MIT
- AlicenseNot gradedqualityCmaintenanceA 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
Related MCP Connectors
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
The grounded data layer for any LLM: governed SQL, metrics, lineage and catalog over your data.
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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