MCP Superset

数据与存储

by bintocher

面向 Apache Superset 的 MCP 服务器,提供 135+ 工具,覆盖 dashboard、chart、dataset、SQL Lab 与安全管理。

什么是 MCP Superset

面向 Apache Superset 的 MCP 服务器,提供 135+ 工具,覆盖 dashboard、chart、dataset、SQL Lab 与安全管理。

README

mcp-superset

<!-- mcp-name: io.github.bintocher/mcp-superset -->

PyPI version PyPI downloads Python 3.12+ License: MIT CI CodeQL

Superset 6.0.1 MCP Typed Ruff uv Tools: 128+ GitHub stars

A comprehensive Model Context Protocol (MCP) server for Apache Superset. Gives AI assistants (Claude, GPT, etc.) full control over your Superset instance — dashboards, charts, datasets, SQL Lab, users, roles, RLS, and more — through 128+ tools.

Comparison with Other Superset MCP Servers

Featuremcp-supersetsuperset-mcpsuperset-mcp (Winding2020)superset-mcp-server
Total tools128+~60~314
LanguagePythonPythonTypeScriptTypeScript
Dashboard CRUD15 tools58-
Dashboard native filters5 tools---
Chart CRUD11 tools57-
Database tools18 tools1411
Dataset tools11 tools37-
SQL Lab5 tools711
Security (users/roles)22 tools2--
Row Level Security5 tools---
Groups9 tools---
Permissions audityes---
Dashboard access grant/revokeyes---
Auto datasource_access syncyes---
Reports & annotations10 tools---
Tags7 tools7--
Asset export/importyes---
Safety: confirmation flags14 types---
Safety: DDL/DML blockingyes---
Safety: system role protectionyes---
TransportHTTP, SSE, stdiostdiostdiostdio
Auth methodJWT + auto-refresh + CSRFUsername/password + token fileUsername/password or tokenLDAP
Superset versions6.0.14.1.1not specifiednot specified
CLI with args--host --port --transport---
PyPI packagemcp-supersetsuperset-mcpsuperset-mcp (npm)-
uvx supportyes---
LicenseMITMIT-Apache 2.0
GitHub starsnew170215

Key differentiators:

  • Only MCP server with full security management (users, roles, RLS, groups, permissions audit)
  • Only one with built-in safety validations (confirmation flags, DDL/DML blocking)
  • Only one with dashboard native filter management
  • Only one with automatic datasource_access synchronization
  • Only one with multiple transport options (HTTP, SSE, stdio)
  • Only one with configurable CLI (--host, --port, --transport, --env-file)

Features

  • 128+ MCP tools covering the complete Superset REST API
  • Dashboard management — CRUD, copy, publish/unpublish, export/import, embedded mode, native filters
  • Chart management — CRUD, copy, data retrieval, export/import, cache warmup
  • Database management — CRUD, connection testing, schema/table introspection, SQL validation
  • Dataset management — CRUD, duplicate, schema refresh, export/import
  • SQL Lab — query execution, formatting, cost estimation, results & CSV export
  • Security — users, roles, permissions, Row Level Security (RLS), groups
  • Access control automation — grant/revoke dashboard access with automatic datasource permission sync
  • Audit — comprehensive permissions matrix (user x dashboards x datasets x RLS)
  • Tags, reports, annotations, saved queries — full CRUD
  • Asset export/import — full instance backup and restore
  • Built-in safety — confirmation flags for destructive operations, DDL/DML blocking in SQL Lab
  • JWT authentication with automatic token refresh and CSRF handling
  • Streamable HTTP, SSE, and stdio transports

Quick Start

Installation

bash
# From PyPI
pip install mcp-superset

# With uv (recommended)
uv pip install mcp-superset

# Run without installing (uvx)
uvx mcp-superset

Configuration

Create a .env file in the current directory, or set environment variables:

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

Running

bash
# 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 Options

OptionDefaultEnv VariableDescription
--host127.0.0.1SUPERSET_MCP_HOSTServer bind address
--port8001SUPERSET_MCP_PORTServer bind port
--transportstreamable-httpSUPERSET_MCP_TRANSPORTTransport: streamable-http, sse, stdio
--env-fileauto-detectPath to .env file
--versionShow version and exit

Connecting to MCP Clients

Claude Code

Add to your project's .mcp.json:

json
{
  "mcpServers": {
    "superset": {
      "type": "http",
      "url": "http://localhost:8001/mcp"
    }
  }
}

Then start the server: mcp-superset or uvx mcp-superset.

Claude Desktop

Add to claude_desktop_config.json:

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

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"
      }
    }
  }
}

Other MCP Clients

Any MCP-compatible client can connect via:

  • Streamable HTTP: http://<host>:<port>/mcp
  • SSE: http://<host>:<port>/sse
  • stdio: pipe to mcp-superset --transport stdio

Available Tools (128+)

Dashboards (15 tools)

ToolDescription
superset_dashboard_listList dashboards with filtering and pagination
superset_dashboard_getGet dashboard details by ID
superset_dashboard_createCreate a new dashboard
superset_dashboard_updateUpdate dashboard properties
superset_dashboard_deleteDelete a dashboard (requires confirmation)
superset_dashboard_copyDuplicate a dashboard
superset_dashboard_publishPublish a draft dashboard
superset_dashboard_unpublishUnpublish a dashboard
superset_dashboard_chartsList charts in a dashboard
superset_dashboard_datasetsList datasets used by a dashboard
superset_dashboard_exportExport dashboard as ZIP (base64)
superset_dashboard_importImport dashboard from ZIP file
superset_dashboard_embedded_getGet embedded configuration
superset_dashboard_embedded_setEnable embedded mode with allowed domains
superset_dashboard_embedded_deleteDisable embedded mode

Dashboard Filters (5 tools)

ToolDescription
superset_dashboard_filter_listList native filters on a dashboard
superset_dashboard_filter_addAdd a native filter (auto-generates correct ID format)
superset_dashboard_filter_updateUpdate an existing native filter
superset_dashboard_filter_deleteRemove a native filter (requires confirmation)
superset_dashboard_filter_resetRemove all filters (requires confirmation)

Charts (11 tools)

ToolDescription
superset_chart_listList charts with filtering and pagination
superset_chart_getGet chart details by ID
superset_chart_createCreate a new chart
superset_chart_updateUpdate chart properties
superset_chart_deleteDelete a chart (requires confirmation)
superset_chart_copyDuplicate a chart
superset_chart_dataExecute chart query and get data
superset_chart_get_dataGet data from a saved chart
superset_chart_exportExport chart as ZIP (base64)
superset_chart_importImport chart from ZIP file
superset_chart_cache_warmupWarm up chart cache

Databases (18 tools)

ToolDescription
superset_database_listList database connections
superset_database_getGet database details
superset_database_createRegister a new database connection
superset_database_updateUpdate database settings
superset_database_deleteRemove a database (requires confirmation)
superset_database_test_connectionTest database connectivity
superset_database_schemasList schemas in a database
superset_database_tablesList tables in a schema
superset_database_catalogsList catalogs (for multi-catalog databases)
superset_database_connection_infoGet connection string info
superset_database_function_namesList available SQL functions
superset_database_related_objectsFind charts/datasets using this database
superset_database_validate_sqlValidate SQL syntax
superset_database_validate_parametersValidate connection parameters
superset_database_select_starGenerate SELECT * query for a table
superset_database_table_metadataGet table column and index metadata
superset_database_exportExport database config as ZIP
superset_database_available_enginesList supported database engines

Datasets (11 tools)

ToolDescription
superset_dataset_listList datasets with filtering
superset_dataset_getGet dataset details including columns and metrics
superset_dataset_createCreate a dataset from a table or SQL query
superset_dataset_updateUpdate dataset properties
superset_dataset_deleteDelete a dataset (requires confirmation)
superset_dataset_duplicateDuplicate a dataset
superset_dataset_refresh_schemaRefresh columns from source
superset_dataset_related_objectsFind charts using this dataset
superset_dataset_exportExport dataset as ZIP
superset_dataset_importImport dataset from ZIP
superset_dataset_get_or_createGet existing or create new dataset

SQL Lab & Queries (13 tools)

ToolDescription
superset_sqllab_executeExecute a SQL query (SELECT only)
superset_sqllab_format_sqlFormat/beautify SQL
superset_sqllab_resultsFetch results of a completed query
superset_sqllab_estimate_costEstimate query execution cost
superset_sqllab_export_csvExport query results as CSV
superset_query_listList executed queries
superset_query_getGet query details and results
superset_query_stopStop a running query
superset_saved_query_listList saved queries
superset_saved_query_createSave a new query
superset_saved_query_getGet saved query details
superset_saved_query_updateUpdate a saved query
superset_saved_query_deleteDelete a saved query (requires confirmation)

Security & Access Control (22 tools)

ToolDescription
superset_get_current_userGet current authenticated user info
superset_get_current_user_rolesGet roles of current user
superset_user_listList users with filtering
superset_user_getGet user details
superset_user_createCreate a new user
superset_user_updateUpdate user properties
superset_user_deleteDelete a user (requires confirmation)
superset_role_listList roles
superset_role_getGet role details
superset_role_createCreate a new role
superset_role_updateUpdate role name/description
superset_role_deleteDelete a role (requires confirmation, blocks system roles)
superset_permission_listList all available permissions
superset_role_permissions_getGet permissions assigned to a role
superset_role_permission_addSet role permissions (full replacement, requires confirmation)
superset_dashboard_grant_role_accessGrant a role access to dashboard and its datasets
superset_dashboard_revoke_role_accessRevoke a role's access to dashboard datasets
superset_rls_listList Row Level Security rules
superset_rls_getGet RLS rule details
superset_rls_createCreate an RLS rule
superset_rls_updateUpdate an RLS rule (requires both roles and tables)
superset_rls_deleteDelete an RLS rule (requires confirmation)

Groups (9 tools)

ToolDescription
superset_group_listList groups
superset_group_getGet group details with members and roles
superset_group_createCreate a new group
superset_group_updateUpdate group name
superset_group_deleteDelete a group
superset_group_add_usersAdd users to a group
superset_group_remove_usersRemove users from a group
superset_group_add_rolesAdd roles to a group
superset_group_remove_rolesRemove roles from a group

Tags (7 tools)

ToolDescription
superset_tag_listList tags
superset_tag_getGet tag details
superset_tag_createCreate a tag (optionally bind to objects)
superset_tag_updateUpdate a tag
superset_tag_deleteDelete a tag (requires confirmation)
superset_tag_get_objectsList objects associated with a tag
superset_tag_bulk_createCreate multiple tags at once

System & Reports (21 tools)

ToolDescription
superset_report_listList scheduled reports
superset_report_getGet report details
superset_report_createCreate a scheduled report
superset_report_updateUpdate a report
superset_report_deleteDelete a report (requires confirmation)
superset_annotation_layer_listList annotation layers
superset_annotation_layer_getGet annotation layer details
superset_annotation_layer_createCreate an annotation layer
superset_annotation_layer_updateUpdate an annotation layer
superset_annotation_layer_deleteDelete an annotation layer (requires confirmation)
superset_annotation_listList annotations in a layer
superset_annotation_getGet annotation details
superset_annotation_createCreate an annotation
superset_annotation_updateUpdate an annotation
superset_annotation_deleteDelete an annotation (requires confirmation)
superset_recent_activityGet recent user activity
superset_log_listGet audit logs
superset_get_menuGet Superset menu structure
superset_get_base_urlGet configured Superset base URL
superset_assets_exportExport all Superset assets as ZIP
superset_assets_importImport assets from ZIP file

Audit (1 tool)

ToolDescription
superset_permissions_auditGenerate comprehensive permissions matrix

Safety Features

The server includes extensive built-in protections to prevent accidental data loss or misconfiguration.

Confirmation Flags

Destructive operations require explicit confirmation parameters:

OperationRequired FlagWhat It Shows
Delete dashboardconfirm_delete=TrueDashboard name, slug, chart count
Delete chartconfirm_delete=TrueLinked dashboards
Delete datasetconfirm_delete=TrueAffected charts and dashboards
Delete databaseconfirm_delete=TrueAffected datasets, charts
Delete RLS ruleconfirm_delete=TrueClause, roles, datasets
Delete roleconfirm_delete=TrueBlocks system roles
Delete userconfirm_delete=TrueBlocks service account deletion
Update chart paramsconfirm_params_replace=True
Update dataset columnsconfirm_columns_replace=True
Update database URIconfirm_uri_change=TrueAffected charts/dashboards
Update user rolesconfirm_roles_replace=TrueCurrent roles
Set role permissionsconfirm_full_replace=True
Grant dashboard accessconfirm_grant=TrueDry-run results
Revoke dashboard accessconfirm_revoke=TrueDry-run results

Automatic Protections

  • DDL/DML blocking — SQL Lab rejects DROP, DELETE, UPDATE, INSERT, TRUNCATE, ALTER, CREATE, GRANT, REVOKE (SQL comments are stripped before checking)
  • System role protection — cannot delete Admin, Alpha, Gamma, Public roles
  • Service account protection — cannot delete the MCP service user
  • RLS safetyrls_update requires both roles and tables to prevent silent data wipe
  • Native filter IDs — automatically generated in NATIVE_FILTER-<uuid> format
  • Chart validation — rejects charts without granularity_sqla (required for dashboard time filters)
  • Auto-sync — datasource_access permissions are automatically synchronized when dashboard roles change

Architecture

code
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 tools (22)
        ├── 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 Compatibility

  • Tested with: Apache Superset 6.0.1
  • Authentication: JWT (recommended) — API Key (sst_*) is not implemented in Superset
  • Required Superset user: Admin role (for full API access)

Recommended Superset Configuration

Add to your superset_config.py:

python
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

Development

Setup

bash
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

Running Locally

bash
# Run from source
uv run python -m mcp_superset

# Or with CLI
uv run mcp-superset --port 8001

Running Tests

bash
uv run python test_all_tools.py

Known Superset API Quirks

These are handled automatically by the MCP server, but useful to know when debugging:

QuirkDetails
RISON paginationSuperset ignores page/page_size as query params; must use RISON in q parameter
CSRF requiredAll POST/PUT/DELETE need X-CSRFToken header + session cookie
Referer requiredSQL Lab returns 403 without Referer header
Tag API returns {}Tag creation doesn't return the ID; must query list
Tag update needs nameField is mandatory even if unchanged
Role permissions replacePOST /security/roles/{id}/permissions replaces ALL permissions
RLS update replacesPUT /rowlevelsecurity/{id} replaces ALL provided fields
Dataset update columnsPUT /dataset/{id} with columns replaces ALL columns
Dashboard copyRequires json_metadata (can be "{}")
Native filter IDsMust be NATIVE_FILTER-<uuid> format
filter_time needs granularity_sqlaCharts without it silently ignore time filters
Number formattingSMART_NUMBER abbreviates; use ,d or ,.2f for exact

License

MIT — Stanislav Chernov (@bintocher)

常见问题

MCP Superset 是什么?

面向 Apache Superset 的 MCP 服务器,提供 135+ 工具,覆盖 dashboard、chart、dataset、SQL Lab 与安全管理。

相关 Skills

迁移架构师

by alirezarezvani

Universal
热门

为数据库、API 与基础设施迁移制定分阶段零停机方案,提前校验兼容性与风险,生成回滚策略、验证关卡和时间线,适合复杂系统平滑切换。

做数据库与存储迁移时,用它统一梳理表结构和数据搬迁流程,架构视角更完整,复杂迁移也更稳。

数据与存储
未扫描9.0k

数据库建模

by alirezarezvani

Universal
热门

把需求梳理成关系型数据库表结构,自动生成迁移脚本、TypeScript/Python 类型、种子数据、RLS 策略和索引方案,适合多租户、审计追踪、软删除等后端建模与 Schema 评审场景。

把数据库结构设计、ER图梳理和SQL建模放到一处,复杂业务也能快速统一数据模式,少走不少返工弯路。

数据与存储
未扫描9.0k

资深数据工程师

by alirezarezvani

Universal
热门

聚焦生产级数据工程,覆盖 ETL/ELT、批处理与流式管道、数据建模、Airflow/dbt/Spark 优化和数据质量治理,适合设计数据架构、搭建现代数据栈与排查性能问题。

复杂数据管道、ETL/ELT 和治理难题交给它,凭 Spark、Airflow、dbt 等现代数据栈经验,能更稳地搭起可扩展的数据基础设施。

数据与存储
未扫描9.0k

相关 MCP Server

by Anthropic

热门

PostgreSQL 是让 Claude 直接查询和管理你的数据库的 MCP 服务器。

这个服务器解决了开发者需要手动编写 SQL 查询的痛点,特别适合数据分析师或后端开发者快速探索数据库结构。不过,由于是参考实现,生产环境使用前务必评估安全风险,别指望它能处理复杂事务。

数据与存储
82.9k

SQLite 数据库

编辑精选

by Anthropic

热门

SQLite 是让 AI 直接查询本地数据库进行数据分析的 MCP 服务器。

这个服务器解决了 AI 无法直接访问 SQLite 数据库的问题,适合需要快速分析本地数据集的开发者。不过,作为参考实现,它可能缺乏生产级的安全特性,建议在受控环境中使用。

数据与存储
82.9k

by Firecrawl

热门

Firecrawl 是让 AI 直接抓取网页并提取结构化数据的 MCP 服务器。

它解决了手动写爬虫的麻烦,让 Claude 能直接访问动态网页内容。最适合需要实时数据的研究者或开发者,比如监控竞品价格或抓取新闻。但要注意,它依赖第三方 API,可能涉及隐私和成本问题。

数据与存储
5.9k

评论