biztory-tableau-knowledge-mcp について
biztory-tableau-knowledge-mcpは、Tableau Cloud KnowledgeのグラフをAIアシスタントに公開します。Tableauのメタデータや業務情報を調べるチーム向けで、グラフ操作に加え、Apache Ossieのセマンティックモデルをインポート、エクスポートできます。
主な機能
- 01セマンティック検索とノード参照
- 02リネージと影響分析
- 03グラフの健全性とコンテキスト管理
- 04グラフとデータソースの管理
- 05Apache Ossieモデルの入出力
- 06Business Preferencesファイルの検証
活用シーン
- 01業務上の意味からフィールドを検索
- 02変更前にダッシュボードの依存関係を追跡
- 03グラフノードに業務情報を追加
- 04データソースのセマンティックモデルを移行
MCP 対応
Tableau Knowledgeグラフの検索、更新、管理に使う23個のMCPツールと、Apache Ossieモデルの検証・変換機能を提供します。MCPクライアントからグラフの検索、リネージ分析、コンテキスト追加、データソース管理を実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx biztory-tableau-knowledge-mcpTABLEAU_SERVERhttps://<pod>.online.tableau.com (Tableau Knowledge is a Tableau Cloud feature)TABLEAU_SITE_CONTENT_URLSite content-url slug (the part after /#/site/)TABLEAU_PAT_NAMEPersonal Access Token nameTABLEAU_PAT_SECRETシークレットPersonal Access Token secret (the whole string)TABLEAU_KNOWLEDGE_GRAPH_IDDefault graph id; empty = the site's primary graphTABLEAU_LOG_LEVELDEBUG, INFO (default), WARNING or ERROR; DEBUG logs each HTTP call (method + URL) to stderrローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
17掲載時のツール一覧 · 1 週間前に更新
このツールにパラメーターはありません。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
biztory-tableau-knowledge-mcp
Tableau のナレッジグラフを、あらゆる AI アシスタントで活用できます。
意味で検索し、リネージと影響をたどり、ビジネスコンテキストを追加できます。
biztory-tableau-knowledge-mcp は、サイトの Tableau Knowledge Graph API を17個の MCP ツールに変換します。これにより、AI アシスタント(Claude、Cursor、VS Code、Cline など)が自然な言葉でグラフを操作できます。
- 「売上を意味するフィールドはどれで、それらの由来は何ですか?」
- 「Superstore データソースが変更された場合、影響を受けるワークブックやダッシュボードはどれですか?」
- 「Profit に関連付けられているビジネスコンテキストは何ですか?『Profit は返品を差し引いた後の金額で、通貨は EUR です』を追加してください。」
- 「グラフの健全性はどの程度ですか?影響の大きい修正を5つ教えてください。」
- 「Superstore を Apache Ossie にエクスポートして、Snowflake に移行できるようにしてください。」
- 「P&L ダッシュボードの Business Preferences を記述してください。」 9 つの読み取りツール(セマンティック検索、ノード検索、エッジ、リネージュ、影響分析、ソース、セマンティックコンテキスト、グラフの健全性、接続プローブ)と、グラフを人や AI にとって有用にするビジネス上の記述であるセマンティックコンテキストだけを扱う3 つの書き込みツールを提供します。さらに、Snowflake、dbt、Power BI、Databricks、Tableau Next などが相互変換に使用するオープン標準、Apache Ossie(旧 Open Semantic Interchange、OSI)を介してセマンティックレイヤーを移行する 4 つのツールがあります。また、エージェントが実際に参照するフィールドと照らし合わせて、Business Preferences ファイルを行ごとに検証するツールもあります。
他とは異なる点
- ID ではなく意味で検索できます。 すべての読み取りツールには、ノード ID または説明(「純売上フィールド」など)を指定できます。説明はグラフ独自のセマンティック検索で解決され、選択されたノード、マッチスコア、次点候補が回答に示されるため、誤った推測があれば隠れずに分かります。
- ペイロードではなく、回答を返します。
impact_analysisは下流のすべての情報をタイプ別にグループ化して件数を集計し、lineageはノード数とエッジ数を追加します。graph_healthは候補を上位のものに絞りながら、合計数をすべて保持します。 - エラーから、モデルが次にすべきことが分かります。 Tableau のエラーコードは具体的な手順に変換されます(
site_not_entitled→ 管理者が Knowledge を有効にする必要があります。no_active_graph→graph_idを渡します。埋め込みモデルがない場合 → 正確な ID を使います)。サポート用のtrace_idも保持されます。レート制限が発生した場合は、Retry-Afterに従って再試行します。 - 信頼できる書き込み。 書き込み可能なのはセマンティックコンテキストだけです。書き込みツールには正確な ID が必要です(あいまい一致によって書き込み先が決まることはありません)。送信前に検証を行い、クライアントが事前に確認できるよう、適切な MCP アノテーションを付与します。また、
delete_semantic_contextは削除した内容を返します。 - セマンティックレイヤーを移行できます。
export_to_ossieは公開済みデータソースを検証済みの Ossie モデルに変換します。正確に変換できる Tableau の計算式は移植可能な SQL に変換し、それ以外はすべて損失レポートに記録します。import_from_ossieは、任意の Ossie モデルから説明、同義語、定義を Tableau Knowledge に取り込みます。取り込み前にレビュー可能なプランを提示します。 - 軽量かつ堅牢です。 Stdio のみ(受信ポートなし)、シークレットは環境変数からのみ取得、HTTPS を強制、リダイレクトを拒否、ID をエンコードして別のエンドポイントに届かないようにし、パーサーをファジングで検証しています。実行時の依存関係は 2 つだけです。MCP SDK と PyYAML(HTTP には標準ライブラリの
urllibを使用)。
要件
Tableau Knowledge は Tableau Cloud の機能です(2026 年 9 月以降、Tableau+ ライセンスが必要)。Tableau Server では利用できません。ユーザーは誰でも、コンテンツ権限でフィルタリングされたグラフを読み取れます。セマンティックコンテキストの書き込みには Creator ロールが必要です。
クイックスタート
uv(curl -LsSf https://astral.sh/uv/install.sh | sh)と Tableau の個人用アクセストークンが必要です。
Claude Code、1 行で設定:
claude mcp add tableau-knowledge \
-e TABLEAU_SERVER=https://10ax.online.tableau.com \
-e TABLEAU_SITE_CONTENT_URL=YourSite \
-e TABLEAU_PAT_NAME=my-token \
-e TABLEAU_PAT_SECRET=the-full-secret \
-- uvx biztory-tableau-knowledge-mcp
これで完了です。uvx が PyPI からパッケージを取得し、分離された環境で実行するため、クローンもインストールも不要です。続けて、次のように尋ねてください。「server_info を使って、自分のサイトにあるグラフを教えてください。」
設定
すべての設定は環境変数で行います(クライアントの env ブロックに設定し、コマンドラインには設定しないでください)。
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
TABLEAU_SERVER | はい | n/a | https://<pod>.online.tableau.com。ブラウザーで使用できる URL であればどれでも構いません。パスは削除されます。 |
TABLEAU_SITE_CONTENT_URL | はい | "" | サイトのスラッグ(/#/site/ の後の部分)。 |
TABLEAU_PAT_NAME | はい¹ | n/a | パーソナルアクセストークンの名前。 |
TABLEAU_PAT_SECRET | はい¹ | n/a | PAT のシークレット:文字列全体を使用してください。: で分割しないでください。 |
TABLEAU_KNOWLEDGE_GRAPH_ID | いいえ | プライマリーグラフ | すべてのツールで使用するデフォルトのグラフです。server_info にはサイトのグラフが一覧表示されます。各ツールでは graph_id も指定できます。 |
TABLEAU_TIMEOUT | いいえ | 60 | リクエストごとのタイムアウト(秒)。 |
TABLEAU_API_VERSION | いいえ | 自動 | サインインに使用する REST バージョンです。指定しない場合は serverinfo から読み取ります(Knowledge API 自体は常に v1 です)。 |
TABLEAU_ALLOW_HTTP | いいえ | オフ | 信頼できるネットワーク上のプレーンな http:// サーバーを許可するには、1 に設定します。それ以外の場合は HTTPS(またはループバック)のみが許可されます。 |
TABLEAU_LOG_LEVEL | いいえ | INFO | DEBUG にすると、各 HTTP 呼び出し(メソッド+URL)が stderr に記録されます。ヘッダー、ボディ、シークレットは記録されません。 |
TABLEAU_AUTH_TOKEN | いいえ | n/a | 詳細設定:PAT の代わりに、事前に取得した X-Tableau-Auth セッショントークンを使用します。 |
¹ PAT(TABLEAU_PAT_NAME + TABLEAU_PAT_SECRET)または TABLEAU_AUTH_TOKEN を指定してください。
Claude Desktop
claude_desktop_config.json を編集します(macOS:~/Library/Application Support/Claude/、Windows:%APPDATA%\Claude\)。
{
"mcpServers": {
"tableau-knowledge": {
"command": "uvx",
"args": ["biztory-tableau-knowledge-mcp"],
"env": {
"TABLEAU_SERVER": "https://10ax.online.tableau.com",
"TABLEAU_SITE_CONTENT_URL": "YourSite",
"TABLEAU_PAT_NAME": "my-token",
"TABLEAU_PAT_SECRET": "the-full-secret"
}
}
}
}
Claude Desktop を完全に終了して再起動し、ツールメニューを確認してください。
Cursor · VS Code · Cline · Windsurf
上の Add to Cursor/Add to VS Code ボタンを使用して env の値を入力するか、Claude Desktop と同じブロックを以下に追加します。
- Cursor:
~/.cursor/mcp.json(グローバル)または.cursor/mcp.json(プロジェクト)。 - VS Code:
.vscode/mcp.json(最上位のキーはmcpServersではなくserversです)。 - Cline:MCP Servers パネルで Configure を選択し、
cline_mcp_settings.jsonに設定します。 - Windsurf:
~/.codeium/windsurf/mcp_config.json。
Windows で GUI アプリから uvx が見つからない場合は、絶対パスを使用してください(例:%USERPROFILE%\.local\bin\uvx.exe)。
node 引数には、ノード ID または平易な言葉による説明を指定できます。グラフを対象とするすべてのツールでは、省略可能な graph_id も指定できます。
| ツール | 機能 | 主な引数 |
|---|---|---|
server_info | サイト、バージョン、認証、Knowledge が有効かどうか、すべてのグラフ(ID、名前、ステータス、プライマリ)を表示します。最初に呼び出すのに適しています。 | なし |
search_nodes | グラフ内を意味検索します(「revenue」で「Net Sales」が見つかります)。スコア順に表示します。 | query, node_type, scope_id, limit, threshold |
get_node | 1 つのノードのプロパティ、関連付けられた意味的な記述、子ノードを表示します。 | node, include_children |
list_edges | 1 つのノードに接続するエッジを、方向ともう一方の端のノードとともに表示します。 | node, edge_type, direction |
lineage | 系譜/依存関係エッジをたどり、上流と下流の近傍(10 ステップ)を件数とともに表示します。 | node |
impact_analysis | あるノードに推移的に依存するすべての要素を、種類別にグループ化して件数とともに表示します。 | node |
list_sources | グラフの構築元となった公開済みデータソースとワークブックを表示します。 | node_type |
search_semantic_contexts | グラフ上のビジネス上の記述を検索します。すべて、グラフ全体のみ、または 1 つのノードに関連付けられたものを検索できます。 | node, is_global |
graph_health | 健全性スコア、カバレッジ指標、優先順位付きの改善提案を表示します。 | pds_id, severity, suggestion_type, limit |
create_semantic_context | (書き込み)記述を 1 つのノード(正確な ID を指定)またはグラフ全体に追加します。 | statements, target_node_id / is_global, name |
update_semantic_context | (書き込み)記述の置き換え、名前変更、再関連付け、またはグラフ全体への適用を行います。 | ctx_id, statements, name, attach_to / make_global |
delete_semantic_context | (書き込み)ユーザーが管理するコンテキストを削除し、削除された内容を返します。 | ctx_id |
export_to_ossie | 公開済みデータソースを Apache Ossie モデル(YAML)として出力し、検証結果と損失レポートも返します。 | datasource, include_hidden, default_aggregation_metrics |
validate_ossie | 任意の Ossie モデル(YAML/JSON)を、公式スキーマと仕様の規則に照らして検証します。ローカルのみで実行されます。 | document, model_name |
import_from_ossie | (書き込み)Ossie モデルがデータソースに追加する意味的コンテキストを計画し、適用します。 | document, target_datasource_id, apply |
ossie_guide | Ossie のリファレンスです。オブジェクトモデル、式、Tableau とのマッピング、コンバーター、移行手順が含まれます。ローカルのみで実行されます。 | topic |
check_business_preferences | Business Preferences ファイルの形式、制限、表現、およびファイル内で指定されている各フィールドとダッシュボードのキャプションとの照合を行います。テキストがない場合は、ルールブックを返します。 | text, target, product |
書き込みツールには readOnlyHint: false が付記されています(更新、削除、インポートには destructiveHint: true も付記されています)。そのため、クライアントは各ツールの実行前に確認を求めることができます。Tableau が管理する(SEMANTIC_CONTEXT_EXTERNAL)コンテキストは読み取り専用です。
Apache Ossie でセマンティックレイヤーを移行する
Apache Ossie(インキュベーション中。旧称 Open Semantic Interchange)は、セマンティックモデル向けのベンダー中立な YAML 標準です。従来の Tableau 用コンバーターは存在しませんでした。このサーバーはナレッジグラフを基盤として構築されたコンバーターで、ビジネスコンテキストも引き継ぎます。
Tableau → Ossie(export_to_ossie):
| Tableau Knowledge | Ossie |
|---|---|
| 公開データソース | モデル(name、description、ai_context) |
| 論理テーブル | データセット |
| 列フィールド | フィールド(sql = ソース列、dimension、datatype) |
| 行レベルの計算 | フィールド。正確な場合は、Tableau の数式を TABLEAU 方言で記述し、移植可能な sql も併記 |
| 集計計算 | メトリック(データセットのスコープ内。複数のテーブルにまたがる場合は、修飾名を付けてモデルのスコープ内) |
{FIXED [d]: SUM([x])} | SUM(x) OVER (PARTITION BY d) |
| メジャーのデフォルト集計 | メトリック(total_sales = SUM(sales)) |
| 説明とセマンティックコンテキスト | description と ai_context |
| ID、キャプション、ロール、元の数式 | ベンダー TABLEAU の custom_extensions(正確な往復変換のため) |
エクスポートでは出力を検証し、losses リストを返します。Knowledge には物理テーブルのパスや結合キーがないため、source と relationships を補う必要があります。INCLUDE/EXCLUDE LOD、テーブル計算、パラメーター、一部の関数は Tableau 専用のまま残り、それぞれレポートに記載されます。
Ossie → Tableau Knowledge(import_from_ossie):Knowledge API はセマンティックコンテキストを書き込めるため、Ossie モデルはその形で取り込まれます。説明、ai_context の指示、同義語(「別名…」)、質問例、メトリック定義は、対応するノードに書き込まれます。各ノードには ossie:<model> コンテキストが 1 つずつ作成されます。対応付けには、まず以前のエクスポートで使用した ID を使い、次に名前を使います。API 経由ではグラフ全体のコンテキストしか受け付けないサイトでは、同じ記述が 1 つのグローバルな ossie:<model> コンテキストになり、それぞれに説明対象が前置されます(Superstore / Sales: またの名を revenue。)。scope を指定すると node または global を強制できます。最初の呼び出しでは、計画(作成/更新/変更なし、および対応付けできなかった項目)が返され、apply=true にするまで何も書き込まれません。Tableau にすでに存在する記述はスキップされるため、編集していないエクスポートを再インポートしても、何も書き込まれません。
スラッシュコマンド。 サーバーには、各ワークフローを案内する MCP プロンプトが付属しています。データソースを Ossie にエクスポート、Ossie モデルを Tableau Knowledge にインポート、ビジネス設定を書き込む の 3 つです。Claude Code では、/mcp__tableau-knowledge__export_datasource_to_ossie と /mcp__tableau-knowledge__import_ossie_into_tableau_knowledge として表示されます(サーバー名には選択した名前が使われます)。
他のプラットフォームへの展開。 Snowflake、dbt、Power BI、Databricks、Tableau Next、Cube、ThoughtSpot、Omni、Sigma などに対応するコンバーターがあります。まだ PyPI には公開されていないため、ossie_guide(トピック converters)で、レビュー済みのコミットに固定された正確なコマンドを確認できます。公開後、サーバーはそれらをツールとしてラップします。
効果的なビジネス設定の作成
ビジネス設定ファイルは、Tableau のエージェントが回答前に読み込む # rule 行のリストです。Tableau Cloud ではダッシュボードごとに 1 ファイル(50 ルール、8,000 文字)、Tableau Next ではセマンティックモデルごとに 1 ファイル(30,000 文字)を使用します。エージェントが回答を 計画する 方法を形作るため、各行はエージェントが実行できる内容でなければなりません。check_business_preferences には、Business Preferences in Tableau Cloud: What We Learned(Celia Fryar、XeoMatrix、2026 年 9 月)で得られた、実地検証済みの教訓が組み込まれています。
- Tableau が黙って無視する書式の誤り:
#の前にスペースがある、#の後にスペースがない。 - 余裕を持たせた上限:見出し、空行、重複、矛盾は避けます。
- エージェントを誤解させる表現:「この値のみを使用」と書かれていないしきい値、クエリに漏れ込む書式ルール、会話調の行、過剰に解釈される可能性のある不在の記述、曖昧な並べ替えや平均値などです。また、欠けている場合は、基本となる 2 つのルール(クエリを数値のまま保つ、正直に失敗する)も提案します。
- ライブで確認するフィールド名:ダッシュボードを指定すると、すべての
[Field]がエージェントに表示されるキャプションであることを確認し、「もしかして」の候補を提示します。ワークブックの問題(重複したAccount ID (Account)、汎用的なAmount、ヘルパーフィールド)にもフラグを立てます。
write_business_preferences プロンプトは、プロセス全体を実行します。実際のキャプションを収集し、用語、しきい値、ポリシーについて質問したうえで、問題がなくなるまで草案の作成と確認を繰り返し、アップロード後に公開する手順とテストのアドバイスを含む v1 を返します。ルールブック全体を表示するには、テキストを指定せずに check_business_preferences を呼び出してください。
説明がノードになる仕組み
# illustrative
"the net sales field"
│ 1. exact lookup: GET /nodes/{id} → found? use it, no guessing
│ 2. not an id: semantic search (top 4) → best match + runners-up
▼
{ "id": "field:…:Net Sales", …,
"resolution": { "match": {"name": "Net Sales", "type": "FIELD", "score": 0.82},
"alternatives": [ … ],
"note": "Not an exact id: resolved by semantic search …" } }
モデルにはスコアと代替候補が表示されるため、あなたに確認するか、代替候補の ID を指定して再試行できます。書き込みツールではこの手順全体を省略し、正確な ID が必要です。
プロンプトの例
- 「server_info を使ってください。このサイトにはどのグラフがあり、プライマリはどれですか?」
- 「収益を意味するフィールドを見つけて、最適な候補のリネージを表示してください。」
- 「Superstore データソースで impact_analysis を実行してください。これに依存するワークブックとダッシュボードはどれですか?」
- 「Profit フィールドには、どのようなセマンティックコンテキストが付与されていますか?」
- 「グラフの健全性スコアと、重要度の高い 5 件の提案を、対象ノードとともに表示してください。」
- 「Profit フィールドに次のステートメントを追加してください:『Profit は返品後に計算され、EUR で報告されます。』」
アーキテクチャ
サーバーはクライアントとは stdio 経由で、Tableau とは HTTPS 経由で MCP を介して通信します。PAT でサインインして X-Tableau-Auth セッションを取得し(期限切れ時に更新)、その後 /api/v1/knowledge を呼び出します。データは保存されず、回答はすべてライブデータに基づきます。
API について知っておくべきこと
- 検索は意味に基づきます。 スコアは相対値です。上位スコアが 0.4~0.5 程度でも正しいノードである可能性があるため、代替候補も確認してください。
- リネージは包含関係ではなく依存関係をたどります。 単一フィールドのリネージは、多くの場合そのフィールドだけです。
list_edgesを使うと、そのフィールドを HAS しているテーブルを確認できます。 - コンテキスト検索では、まだテキストによる絞り込みはできません。
search_semantic_contextsではノードまたはis_globalで絞り込みます。ステートメントを意味で検索するにはsearch_nodesを使ってください。 - 不明な ID に対する動作はエンドポイントによって異なります。 API のリネージは不明な ID に対して空のグラフを返しますが、このサーバーは先にノードを解決するため、常に明確なエラーが返されます。
- 削除は冪等です。 不明な ID を削除しても、何も起きずに成功します。
- サイトによっては、グラフ全体に適用されるコンテキストのみを受け付けます。 ノードに関連付けられたコンテキストの作成は、
node_semantic_context_disabled(「ノードスコープのコンテキストは Tableau によって管理され、取り込みを通じて反映されます」)で失敗することがあります。BiztoryPulse はこの動作をします。is_global=trueを使い、ステートメント内でフィールド名を指定してください。import_from_ossieは自動的にこの方法にフォールバックします。 - API にはレート制限があります。 大規模なグラフをノードごとにクロールすると HTTP 429 が発生します。サーバーはバックオフして再試行しますが、多数の
get_node呼び出しよりもlineageとimpact_analysisを優先してください。
セキュリティ
- 書き込みはセマンティックコンテキストに限定されます。 正確な ID を指定し、送信前に検証され、クライアントが確認を求められるよう注釈が付けられています。Viewer または Explorer の PAT を使用すると、実質的にサーバーは読み取り専用になります。
- ローカル環境および stdio のみです。 外部から接続可能なネットワークポートは開きません。
- シークレットは環境変数からのみ取得します。 ツール引数には含めず、ログにも記録せず、返却もしません。
- 認証情報の送信先は Tableau ホストのみです。 HTTPS を必須とし、証明書を検証し、リダイレクトは拒否します。
- ID を介したインジェクションは発生しません。 Node ID と context ID はそれぞれ 1 つのパスセグメントとしてエンコードされます。
graph_idは送信前に Tableau のパターンに照らして検査されます。信頼できない入力を扱う両方のパーサーは CI でファジングされています。 - YAML は安全に解析されます。 Ossie ドキュメントは
yaml.safe_load(タグやコードなし)で処理され、サイズ上限は 5 MB です。validate_ossieとossie_guideは Tableau に接続しません。 - 検証可能なリリースです。 すべての GitHub リリースに Sigstore 署名と CycloneDX SBOM が付属し、PyPI へのアップロードには Trusted Publishing を使用します。
- 本番環境ではバージョンを固定してください:
uvx biztory-tableau-knowledge-mcp==0.3.0。
脅威モデル、データの取り扱い、脆弱性の開示ポリシー、リリースの検証方法については、SECURITY.md を参照してください。
トラブルシューティング
| 症状 | 対処方法 |
|---|---|
| サーバーが表示されない | クライアントを完全に終了して再起動し、設定ファイルのパスと JSON の有効性を確認してください。 |
spawn uvx ENOENT | uv をインストールするか、uvx の絶対パスを使用してください。 |
サインインに失敗する(401、401001) | PAT が無効か、有効期限が切れています(15 日間未使用の場合)。新しい PAT を作成し、TABLEAU_SITE_CONTENT_URL を確認してください。 |
site_not_entitled | サイトに Tableau Knowledge がありません。Tableau Cloud Manager の管理者が有効にする必要があります。 |
no_active_graph | サイトにプライマリグラフがありません。server_info の graph_id を渡してください。 |
| "Semantic search is unavailable" | グラフにエンベッダーがありません。正確な ID を使用してください(list_sources → get_node)。 |
書き込み時に tableau_forbidden が発生する | セマンティックコンテキストの書き込みには Creator ロールが必要です。 |
| 再試行後に HTTP 429 が発生する | Tableau のレート制限に達しています。1 分待ってから、呼び出しの数を減らし、より広い範囲を指定してください。 |
MCP Inspector でサーバーを直接検査できます:
npx @modelcontextprotocol/inspector uvx biztory-tableau-knowledge-mcp
開発
git clone https://github.com/biztory/biztory-tableau-knowledge-mcp && cd biztory-tableau-knowledge-mcp
uv sync --all-extras
uv run biztory-tableau-knowledge-mcp # run from source (needs the env vars above)
uv run pytest --cov=biztory_tableau_knowledge_mcp # tests + coverage (offline; no Tableau needed)
uv run ruff check . && uv run ruff format --check . && uv run mypy
ツールのテストは、インプロセスの Knowledge API のフェイク(tests/conftest.py)に対して実際のクライアントを通じて実行されるため、URL の組み立て、ID のエンコード、エラーのマッピングがすべて検証されます。ライブテストはオプトイン方式です。TABLEAU_LIVE=1 で読み取り専用テストを実行し、TABLEAU_LIVE_WRITE=1 を指定すると、自ら作成した一時的なコンテキスト 1 件を作成、更新、削除する一連のテストも追加されます。
同じチェックを CI でも実行します(Linux/macOS/Windows、Python 3.10 から 3.13):ruff check、ruff format --check、mypy --strict、およびカバレッジ下限を設定した pytest です。CodeQL はすべての push をスキャンし、OpenSSF Scorecard は毎週実行され、ファジングジョブ(fuzz/)は信頼できない入力を扱うパーサーを検証します。このパッケージには PEP 561 の py.typed マーカーが含まれています。
コントリビューションを歓迎します:CONTRIBUTING.md と Code of Conduct をご覧ください。
ロードマップ
- Apache Ossie(旧 OSI)へのエクスポートと Apache Ossie からのインポート
- Ossie コンバーター(Snowflake、dbt、Power BI、Databricks)が PyPI で公開されたら、ツールとしてラップする
- Knowledge API で公開されたら、Tableau の結合キーから Ossie のリレーションシップを作成する
- この README にデモ動画を追加する
-
server_infoと解決済みノードのセッションごとの任意のキャッシュ
アイデアや投票を Discussions で歓迎します。
ライセンス
MIT © Biztory。関連プロジェクト:tableau-graphql-mcp(Tableau Metadata API を利用したリネージュ管理)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。