Mcp Superset について
mcp-superset は Apache Superset 向けの MCP サーバーで、ダッシュボード、チャート、データセット、SQL Lab、セキュリティ管理を対象とする 137 のツールを提供します。AI アシスタントから Superset インスタンスを管理するチーム向けで、確認フラグや DDL/DML のブロックによる安全対策を備えます。
主な機能
- 01Superset REST API を網羅する 137 のツール
- 02ダッシュボード、チャート、データセットの一括管理
- 03SQL Lab でのクエリ実行と CSV エクスポート
- 04ユーザー、ロール、グループ、行レベルセキュリティ(RLS)の管理
- 05破壊的操作の確認フラグと DDL/DML のブロック
活用シーン
- 01AI アシスタントによるダッシュボードとチャートの保守
- 02ユーザー、ロール、データ権限の監査
- 03Superset インスタンスのアセットのバックアップと復元
MCP 対応
MCP サーバーとして、Superset のダッシュボード、データベース、セキュリティ操作をツールとして MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx mcp-supersetSUPERSET_BASE_URLBase URL of your Apache Superset instanceSUPERSET_USERNAMESuperset username for authenticationSUPERSET_PASSWORDシークレットSuperset password for authenticationローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
133掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| get_all | boolean | いいえ | |
| page | integer | いいえ | |
| page_size | integer | いいえ | |
| q | any | いいえ |
詳細
mcp-superset
Apache Superset 向けの包括的な Model Context Protocol(MCP) サーバーです。AI アシスタント(Claude、GPT など)が、137 個のツールを通じて Superset インスタンスのダッシュボード、チャート、データセット、SQL Lab、ユーザー、ロール、RLS などをすべて操作できます。
その他のSuperset MCP サーバーとの比較
| 機能 | mcp-superset | superset-mcp | superset-mcp (Winding2020) | superset-mcp-server |
|---|---|---|---|---|
| ツールの合計数 | 137 | 60 | 31 | 4 |
| 言語 | Python | Python | TypeScript | TypeScript |
| ダッシュボードの CRUD | 15 個のツール | 5 | 8 | - |
| ダッシュボードのネイティブフィルター | 5 個のツール | - | - | - |
| チャートの CRUD | 11 個のツール | 5 | 7 | - |
| データベースのツール | 18 個のツール | 14 | 1 | 1 |
| データセットのツール | 11 個のツール | 3 | 7 | - |
| SQL Lab | 5 個のツール | 7 | 1 | 1 |
| セキュリティ(ユーザー/ロール) | 26 個のツール | 2 | - | - |
| 行レベルセキュリティ | 5 個のツール | - | - | - |
| グループ | 9 個のツール | - | - | - |
| 権限監査 | あり | - | - | - |
| ダッシュボードへのアクセス権の付与/取り消し | あり | - | - | - |
| datasource_access の自動同期 | あり | - | - | - |
| レポートと注釈 | 10 個のツール | - | - | - |
| タグ | 7 個のツール | 7 | - | - |
| アセットのエクスポート/インポート | あり | - | - | - |
| 安全性:確認フラグ | 14 種類 | - | - | - |
| 安全性:DDL/DML のブロック | あり | - | - | - |
| 安全性:システムロールの保護 | あり | - | - | - |
| トランスポート | HTTP、SSE、stdio | stdio | stdio | stdio |
| 認証方式 | JWT + 自動更新 + CSRF | ユーザー名/パスワード + トークンファイル | ユーザー名/パスワードまたはトークン | LDAP |
| Superset のバージョン | 6.0.1 | 4.1.1 | 未指定 | 未指定 |
| 引数指定可能な CLI | --host --port --transport | - | - | - |
| PyPI パッケージ | mcp-superset | superset-mcp | superset-mcp (npm) | - |
| uvx のサポート | あり | - | - | - |
| ライセンス | MIT | MIT | - | Apache 2.0 |
| GitHub のスター数 | 新規 | 170 | 21 | 5 |
主な差別化要素:
- 完全なセキュリティ管理(ユーザー、ロール、RLS、グループ、権限監査)に対応する唯一の MCP サーバーです
- 組み込みの安全性検証(確認フラグ、DDL/DML のブロック)を備える唯一のものです
- ダッシュボードのネイティブフィルター管理に対応する唯一のものです
- datasource_access の自動同期に対応する唯一のものです
- 複数のトランスポートオプション(HTTP、SSE、stdio)を備える唯一のものです
- 設定可能な CLI(
--host、--port、--transport、--env-file)を備える唯一のものです
機能
- 137 個の MCP ツールで Superset REST API 全体をカバーします
- ダッシュボード管理 — CRUD、コピー、公開/非公開、エクスポート/インポート、埋め込みモード、ネイティブフィルター
- チャート管理 — CRUD、コピー、データ取得、エクスポート/インポート、キャッシュのウォームアップ
- データベース管理 — CRUD、接続テスト、スキーマ/テーブルのイントロスペクション、SQL 検証
- データセット管理 — CRUD、複製、スキーマの更新、エクスポート/インポート
- SQL Lab — クエリ実行、整形、コスト見積もり、結果と CSV のエクスポート
- セキュリティ — ユーザー、ロール、権限、行レベルセキュリティ(RLS)、グループ
- アクセス制御の自動化 — ダッシュボードへのアクセス権の付与/取り消しと、データソース権限の自動同期
- 監査 — 包括的な権限マトリックス(ユーザー x ダッシュボード x データセット x RLS)
- タグ、レポート、注釈、保存済みクエリ — 完全な CRUD
- アセットのエクスポート/インポート — インスタンス全体のバックアップと復元
- 組み込みの安全性機能 — 破壊的な操作の確認フラグ、SQL Lab での DDL/DML のブロック
- JWT 認証とトークンの自動更新、CSRF 処理
- Streamable HTTP、SSE、stdio トランスポート
クイックスタート
インストール
# From PyPI
pip install mcp-superset
# With uv (recommended)
uv pip install mcp-superset
# Run without installing (uvx)
uvx mcp-superset
設定
現在のディレクトリに .env ファイルを作成するか、環境変数を設定します。
# Required
SUPERSET_BASE_URL=https://superset.example.com
SUPERSET_USERNAME=admin
SUPERSET_PASSWORD=your_password
# Optional
SUPERSET_AUTH_PROVIDER=db # db (default) or ldap
SUPERSET_MCP_HOST=127.0.0.1 # Server host (default: 127.0.0.1)
SUPERSET_MCP_PORT=8001 # Server port (default: 8001)
SUPERSET_MCP_TRANSPORT=streamable-http # streamable-http (default), sse, or stdio
セッション Cookie 認証(SSO/OAuth)
Superset が SSO(OAuth/OIDC/SAML)の背後にある場合、REST API 経由のパスワードログインは利用できません。代わりに、ブラウザーのセッション Cookieを指定します。
| 変数 | 説明 |
|---|---|
SUPERSET_SESSION_COOKIE | ブラウザーからコピーしたセッション Cookie の値です。設定すると、ユーザー名/パスワードの代わりにこのモードが使用されます。 |
SUPERSET_SESSION_COOKIE_NAME | Cookie 名です。デフォルトは session です。 |
ブラウザーの開発者ツールから Cookie をコピーします(Application → Cookies →
Superset のドメイン → session)。MCP サーバーはすべてのリクエストに Cookie を送信し、それを使って CSRF トークンを取得します。セッションはサーバー側で更新できないため、有効期限が切れたら新しい値を貼り付けてサーバーを再起動する必要があります。
このモードを使用する前に、次の 2 点を確認してください。
- Cookie 名は常に
sessionとは限りません。superset_config.pyでSESSION_COOKIE_NAMEを設定しているインスタンスでは、異なる名前(たとえばs)が使われます。開発者ツールに表示されている名前を使用し、SUPERSET_SESSION_COOKIE_NAMEを それに応じて設定してください。 - インスタンスが
/api/v1/でのセッション認証を受け入れる必要があります。 REST API が JWT のみを使用するように設定されている場合、有効なセッション Cookie を含むリクエストでも401 {"msg": "Missing Authorization Header"}が返されます。Cookie を更新しても解決せず、その環境では JWT モードのみが使用できます。
Cookie は認証情報として扱ってください。有効なセッションの間、Superset アカウントへのフルアクセスが許可されます。.env( gitignore 対象)に保存し、シェル履歴やコミットする設定ファイルには保存しないでください。
実行
# Using CLI (after pip install)
mcp-superset
# Run without installing
uvx mcp-superset
# Using Python module
python -m mcp_superset
# With uv from source
uv run mcp-superset
# With custom settings
mcp-superset --host 0.0.0.0 --port 9000 --transport sse
# With custom .env file
mcp-superset --env-file /path/to/.env
# Using stdio transport (for Claude Desktop, Cursor, etc.)
mcp-superset --transport stdio
CLI オプション
| オプション | デフォルト | 環境変数 | 説明 |
|---|---|---|---|
--host | 127.0.0.1 | SUPERSET_MCP_HOST | サーバーのバインドアドレス |
--port | 8001 | SUPERSET_MCP_PORT | サーバーのバインドポート |
--transport | streamable-http | SUPERSET_MCP_TRANSPORT | トランスポート:streamable-http、sse、stdio |
--env-file | 自動検出 | — | .env ファイルへのパス |
--version | — | — | バージョンを表示して終了 |
MCP クライアントへの接続
Claude Code
プロジェクトの .mcp.json に追加します。
{
"mcpServers": {
"superset": {
"type": "http",
"url": "http://localhost:8001/mcp"
}
}
}
次に、サーバーを起動します:mcp-superset または uvx mcp-superset。
Claude Desktop
claude_desktop_config.json に追加します。
{
"mcpServers": {
"superset": {
"command": "uvx",
"args": ["mcp-superset", "--transport", "stdio"],
"env": {
"SUPERSET_BASE_URL": "https://superset.example.com",
"SUPERSET_USERNAME": "admin",
"SUPERSET_PASSWORD": "your_password"
}
}
}
}
Cursor / Windsurf
{
"mcpServers": {
"superset": {
"command": "uvx",
"args": ["mcp-superset", "--transport", "stdio"],
"env": {
"SUPERSET_BASE_URL": "https://superset.example.com",
"SUPERSET_USERNAME": "admin",
"SUPERSET_PASSWORD": "your_password"
}
}
}
}
その他の MCP クライアント
MCP 互換のクライアントであれば、次の方法で接続できます。
- Streamable HTTP:
http://<host>:<port>/mcp - SSE:
http://<host>:<port>/sse - stdio:
mcp-superset --transport stdioにパイプで接続
利用可能なツール(137)
ダッシュボード(15 ツール)
| ツール | 説明 |
|---|---|
superset_dashboard_list | フィルタリングとページネーションを使ってダッシュボードを一覧表示 |
superset_dashboard_get | ID でダッシュボードの詳細を取得 |
superset_dashboard_create | 新しいダッシュボードを作成 |
superset_dashboard_update | ダッシュボードのプロパティを更新 |
superset_dashboard_delete | ダッシュボードを削除(確認が必要) |
superset_dashboard_copy | ダッシュボードを複製 |
superset_dashboard_publish | 下書きのダッシュボードを公開 |
superset_dashboard_unpublish | ダッシュボードの公開を解除 |
superset_dashboard_charts | ダッシュボード内のチャートを一覧表示 |
superset_dashboard_datasets | ダッシュボードで使用されているデータセットを一覧表示 |
superset_dashboard_export | ダッシュボードを ZIP としてエクスポート(base64) |
superset_dashboard_import | ZIP ファイルからダッシュボードをインポート |
superset_dashboard_embedded_get | 埋め込み設定を取得 |
superset_dashboard_embedded_set | 許可するドメインを指定して埋め込みモードを有効化 |
superset_dashboard_embedded_delete | 埋め込みモードを無効化 |
ダッシュボードフィルター(5 個のツール)
| ツール | 説明 |
|---|---|
superset_dashboard_filter_list | ダッシュボードのネイティブフィルターを一覧表示します |
superset_dashboard_filter_add | ネイティブフィルターを追加します(正しい ID 形式を自動生成します) |
superset_dashboard_filter_update | 既存のネイティブフィルターを更新します |
superset_dashboard_filter_delete | ネイティブフィルターを削除します(確認が必要です) |
superset_dashboard_filter_reset | すべてのフィルターを削除します(確認が必要です) |
チャート(11 個のツール)
| ツール | 説明 |
|---|---|
superset_chart_list | フィルタリングとページネーションを使用してチャートを一覧表示します |
superset_chart_get | ID でチャートの詳細を取得します |
superset_chart_create | 新しいチャートを作成します |
superset_chart_update | チャートのプロパティを更新します |
superset_chart_delete | チャートを削除します(確認が必要です) |
superset_chart_copy | チャートを複製します |
superset_chart_data | チャートのクエリを実行してデータを取得します |
superset_chart_get_data | 保存済みチャートからデータを取得します |
superset_chart_export | チャートを ZIP としてエクスポートします(base64) |
superset_chart_import | ZIP ファイルからチャートをインポートします |
superset_chart_cache_warmup | チャートのキャッシュをウォームアップします |
データベース(18 個のツール)
| ツール | 説明 |
|---|---|
superset_database_list | データベース接続を一覧表示します |
superset_database_get | データベースの詳細を取得します |
superset_database_create | 新しいデータベース接続を登録します |
superset_database_update | データベース設定を更新します |
superset_database_delete | データベースを削除します(確認が必要です) |
superset_database_test_connection | データベースへの接続をテストします |
superset_database_schemas | データベース内のスキーマを一覧表示します |
superset_database_tables | スキーマ内のテーブルを一覧表示します |
superset_database_catalogs | カタログを一覧表示します(複数のカタログを持つデータベースの場合) |
superset_database_connection_info | 接続文字列の情報を取得します |
superset_database_function_names | 使用可能な SQL 関数を一覧表示します |
superset_database_related_objects | このデータベースを使用しているチャート/データセットを検索します |
superset_database_validate_sql | SQL 構文を検証します |
superset_database_validate_parameters | 接続パラメーターを検証します |
superset_database_select_star | テーブルに対する SELECT * クエリを生成します |
superset_database_table_metadata | テーブルの列とインデックスのメタデータを取得します |
superset_database_export | データベース設定を ZIP としてエクスポートします |
superset_database_available_engines | サポート対象のデータベースエンジンを一覧表示します |
データセット(11 個のツール)
| ツール | 説明 |
|---|---|
superset_dataset_list | フィルタリングを使用してデータセットを一覧表示します |
superset_dataset_get | 列やメトリクスなど、データセットの詳細を取得します |
superset_dataset_create | テーブルまたは SQL クエリからデータセットを作成します |
superset_dataset_update | データセットのプロパティを更新します |
superset_dataset_delete | データセットを削除します(確認が必要です) |
superset_dataset_duplicate | データセットを複製します |
superset_dataset_refresh_schema | ソースから列を更新します |
superset_dataset_related_objects | このデータセットを使用しているチャートを検索します |
superset_dataset_export | データセットを ZIP としてエクスポートします |
superset_dataset_import | ZIP からデータセットをインポートします |
superset_dataset_get_or_create | 既存のデータセットを取得するか、新しいデータセットを作成します |
SQL Lab とクエリ(13 ツール)
| ツール | 説明 |
|---|---|
superset_sqllab_execute | SQL クエリを実行します(SELECT のみ) |
superset_sqllab_format_sql | SQL を整形します |
superset_sqllab_results | 完了したクエリの結果を取得します |
superset_sqllab_estimate_cost | クエリの実行コストを見積もります |
superset_sqllab_export_csv | クエリ結果を CSV としてエクスポートします |
superset_query_list | 実行済みクエリを一覧表示します |
superset_query_get | クエリの詳細と結果を取得します |
superset_query_stop | 実行中のクエリを停止します |
superset_saved_query_list | 保存済みクエリを一覧表示します |
superset_saved_query_create | 新しいクエリを保存します |
superset_saved_query_get | 保存済みクエリの詳細を取得します |
superset_saved_query_update | 保存済みクエリを更新します |
superset_saved_query_delete | 保存済みクエリを削除します(確認が必要です) |
セキュリティとアクセス制御(26 ツール)
| ツール | 説明 |
|---|---|
superset_get_current_user | 現在認証されているユーザーの情報を取得します |
superset_get_current_user_roles | 現在のユーザーのロールを取得します |
superset_user_list | ユーザーをフィルタリングして一覧表示します |
superset_user_get | ユーザーの詳細を取得します |
superset_user_create | 新しいユーザーを作成します |
superset_user_update | ユーザーのプロパティを更新します |
superset_user_delete | ユーザーを削除します(確認が必要です) |
superset_role_list | ロールを一覧表示します |
superset_role_get | ロールの詳細を取得します |
superset_role_create | 新しいロールを作成します |
superset_role_update | ロール名と説明を更新します |
superset_role_delete | ロールを削除します(確認が必要です。システムロールは削除できません) |
superset_permission_list | 利用可能なすべての権限を一覧表示します |
superset_role_permissions_get | ロールに割り当てられた権限を取得します |
superset_role_permission_add | ロールの権限を設定します(完全に置き換えます。確認が必要です) |
superset_role_copy_permissions | あるロールから別のロールにすべての権限をコピーします |
superset_dashboard_grant_role_access | ロールにダッシュボードとそのデータセットへのアクセス権を付与します |
superset_dashboard_revoke_role_access | ロールからダッシュボードのデータセットへのアクセス権を取り消します |
superset_bulk_user_role_add | 複数のユーザーにロールを追加します(ID または現在のロールで指定) |
superset_bulk_user_role_remove | 複数のユーザーからロールを削除します |
superset_bulk_user_role_replace | 条件に一致するすべてのユーザーについて、あるロールを別のロールに置き換えます |
superset_rls_list | 行レベルセキュリティルールを一覧表示します |
superset_rls_get | RLS ルールの詳細を取得します |
superset_rls_create | RLS ルールを作成します |
superset_rls_update | RLS ルールを更新します(ロールとテーブルの両方が必要です) |
superset_rls_delete | RLS ルールを削除します(確認が必要です) |
グループ(9 ツール)
| ツール | 説明 |
|---|---|
superset_group_list | グループを一覧表示します |
superset_group_get | メンバーとロールを含むグループの詳細を取得します |
superset_group_create | 新しいグループを作成します |
superset_group_update | グループ名を更新します |
superset_group_delete | グループを削除します |
superset_group_add_users | ユーザーをグループに追加します |
superset_group_remove_users | ユーザーをグループから削除します |
superset_group_add_roles | ロールをグループに追加します |
superset_group_remove_roles | ロールをグループから削除します |
タグ(7 ツール)
| ツール | 説明 |
|---|---|
superset_tag_list | タグを一覧表示します |
superset_tag_get | タグの詳細を取得します |
superset_tag_create | タグを作成します(オブジェクトへの関連付けは任意です) |
superset_tag_update | タグを更新します |
superset_tag_delete | タグを削除します(確認が必要です) |
superset_tag_get_objects | タグに関連付けられたオブジェクトを一覧表示します |
superset_tag_bulk_create | 複数のタグを一度に作成します |
システムとレポート(21 ツール)
| ツール | 説明 |
|---|---|
superset_report_list | スケジュール済みレポートの一覧を表示 |
superset_report_get | レポートの詳細を取得 |
superset_report_create | スケジュール済みレポートを作成 |
superset_report_update | レポートを更新 |
superset_report_delete | レポートを削除(確認が必要) |
superset_annotation_layer_list | アノテーションレイヤーの一覧を表示 |
superset_annotation_layer_get | アノテーションレイヤーの詳細を取得 |
superset_annotation_layer_create | アノテーションレイヤーを作成 |
superset_annotation_layer_update | アノテーションレイヤーを更新 |
superset_annotation_layer_delete | アノテーションレイヤーを削除(確認が必要) |
superset_annotation_list | レイヤー内のアノテーション一覧を表示 |
superset_annotation_get | アノテーションの詳細を取得 |
superset_annotation_create | アノテーションを作成 |
superset_annotation_update | アノテーションを更新 |
superset_annotation_delete | アノテーションを削除(確認が必要) |
superset_recent_activity | 最近のユーザーアクティビティを取得 |
superset_log_list | 監査ログを取得 |
superset_get_menu | Superset のメニュー構造を取得 |
superset_get_base_url | 設定済みの Superset ベース URL を取得 |
superset_assets_export | すべての Superset アセットを ZIP 形式でエクスポート |
superset_assets_import | ZIP ファイルからアセットをインポート |
監査(1 ツール)
| ツール | 説明 |
|---|---|
superset_permissions_audit | 包括的な権限マトリックスを生成 |
安全機能
このサーバーには、誤ったデータ損失や設定ミスを防ぐための広範な組み込み保護機能があります。
確認フラグ
破壊的な操作には、明示的な確認パラメーターが必要です。
| 操作 | 必須フラグ | 表示される内容 |
|---|---|---|
| ダッシュボードの削除 | confirm_delete=True | ダッシュボード名、スラッグ、チャート数 |
| チャートの削除 | confirm_delete=True | 関連付けられたダッシュボード |
| データセットの削除 | confirm_delete=True | 影響を受けるチャートとダッシュボード |
| データベースの削除 | confirm_delete=True | 影響を受けるデータセット、チャート |
| RLS ルールの削除 | confirm_delete=True | 条件、ロール、データセット |
| ロールの削除 | confirm_delete=True | システムロールは削除不可 |
| ユーザーの削除 | confirm_delete=True | サービスアカウントの削除は不可 |
| チャートパラメーターの更新 | confirm_params_replace=True | — |
| データセット列の更新 | confirm_columns_replace=True | — |
| データベース URI の更新 | confirm_uri_change=True | 影響を受けるチャート/ダッシュボード |
| ユーザーロールの更新 | confirm_roles_replace=True | 現在のロール |
| ロール権限の設定 | confirm_full_replace=True | — |
| ダッシュボードアクセスの付与 | confirm_grant=True | ドライランの結果 |
| ダッシュボードアクセスの取り消し | confirm_revoke=True | ドライランの結果 |
| ユーザーへのロールの一括追加 | confirm=True | ユーザー数、サンプル一覧 |
| ユーザーからのロールの一括削除 | confirm=True | ユーザー数、最後のロールの削除を防止 |
| ロールの一括置換 | confirm=True | 旧/新ロール名、ユーザー数 |
| ロール権限のコピー | confirm=True | コピー元/コピー先の権限数 |
自動保護機能
- DDL/DML のブロック — SQL Lab は
DROP、DELETE、UPDATE、INSERT、TRUNCATE、ALTER、CREATE、GRANT、REVOKEを拒否します(チェック前に SQL コメントは削除されます) - システムロールの保護 — Admin、Alpha、Gamma、Public ロールは削除できません
- サービスアカウントの保護 — MCP サービスユーザーは削除できません
- RLS の安全性 —
rls_updateでは、サイレントなデータ消去を防ぐため、rolesとtablesの両方が必要です - ネイティブフィルター ID —
NATIVE_FILTER-<uuid>形式で自動生成されます - チャートの検証 —
granularity_sqla(ダッシュボードの時間フィルターに必要)がないチャートは拒否されます - 自動同期 — ダッシュボードのロール変更時に、datasource_access 権限が自動的に同期されます
アーキテクチャ
superset-mcp/
├── pyproject.toml # Package configuration
├── .env.example # Environment variable template
├── LICENSE # MIT License
├── README.md # This file
├── README_RU.md # Russian documentation
├── CHANGELOG.md # Version history
└── src/mcp_superset/
├── __init__.py # Package init with __version__
├── __main__.py # CLI entry point with argparse
├── server.py # FastMCP server setup and configuration
├── auth.py # JWT authentication (login, refresh, CSRF)
├── client.py # HTTP client (auto-auth, retry, RISON pagination)
├── models.py # Pydantic models
└── tools/
├── __init__.py # register_all_tools()
├── helpers.py # Auto-sync datasource_access logic
├── dashboards.py # Dashboard + filter tools (20)
├── charts.py # Chart tools (11)
├── databases.py # Database tools (18)
├── datasets.py # Dataset tools (11)
├── queries.py # SQL Lab + saved query tools (13)
├── security.py # User, role, permission, RLS, bulk operations (26)
├── groups.py # Group management tools (9)
├── audit.py # Permissions audit tool (1)
├── tags.py # Tag tools (7)
└── system.py # Reports, annotations, logs, assets (21)
Superset との互換性
- テスト済み:Apache Superset 6.0.1
- 認証:JWT(推奨)— API Key(
sst_*)は Superset では実装されていません - 必要な Superset ユーザー:Admin ロール(API に完全にアクセスするため)
推奨する Superset の設定
superset_config.py に追加します:
from datetime import timedelta
# Increase JWT token lifetime (default is 15 min)
JWT_ACCESS_TOKEN_EXPIRES = timedelta(hours=1)
JWT_REFRESH_TOKEN_EXPIRES = timedelta(days=30)
# Max API page size
FAB_API_MAX_PAGE_SIZE = 100
開発
セットアップ
git clone https://github.com/bintocher/mcp-superset.git
cd superset-mcp
# Create virtual environment and install in editable mode
uv venv
uv pip install -e ".[dev]"
# Copy and configure .env
cp .env.example .env
# Edit .env with your Superset credentials
ローカルでの実行
# Run from source
uv run python -m mcp_superset
# Or with CLI
uv run mcp-superset --port 8001
テストの実行
uv run python test_all_tools.py
Superset API の既知の癖
これらは MCP サーバーが自動的に処理しますが、デバッグ時に役立つ情報です:
| 癖 | 詳細 |
|---|---|
| RISON ページネーション | Superset は page/page_size をクエリパラメーターとして無視します。q パラメーターで RISON を使用する必要があります |
| CSRF が必須 | すべての POST/PUT/DELETE に X-CSRFToken ヘッダーとセッション Cookie が必要です |
| Referer が必須 | Referer ヘッダーがないと SQL Lab は 403 を返します |
| Tag API が `{}`` を返す | Tag の作成では ID が返されません。リストをクエリする必要があります |
Tag の更新には name が必要 | 変更しない場合でも、このフィールドは必須です |
| Role の権限は置き換えられる | POST /security/roles/{id}/permissions は権限をすべて置き換えます |
| RLS の更新では置き換えられる | PUT /rowlevelsecurity/{id} は指定したフィールドをすべて置き換えます |
| Dataset の更新時のカラム | columns を指定した PUT /dataset/{id} はカラムをすべて置き換えます |
| Dashboard のコピー | json_metadata が必要です("{}" でも可) |
| ネイティブフィルター ID | NATIVE_FILTER-<uuid> 形式である必要があります |
filter_time には granularity_sqla が必要 | これがないチャートでは、時間フィルターが黙って無視されます |
| 数値の書式設定 | SMART_NUMBER は省略表記を使用します。正確に表示するには ,d または ,.2f を使用してください |
ライセンス
MIT — Stanislav Chernov(@bintocher)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。