bintocher/mcp-superset

šŸ“Š Data Platforms
0 Views
0 Installs

šŸ ā˜ļø šŸ  šŸŽ 🪟 🐧 - Full-featured Apache Superset MCP server with 135+ tools for dashboards, charts, datasets, SQL Lab, security (users, roles, RLS, groups), permissions audit, and 30+ built-in safety validations. Supports HTTP, SSE, and stdio transports.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "bintocher-mcp-superset": {
      "command": "npx",
      "args": [
        "-y",
        "bintocher-mcp-superset"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

mcp-superset

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

Superset 6.0.1 MCP Typed Ruff uv Tools: 137 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 137 tools.

Comparison with Other Superset MCP Servers

Featuremcp-supersetsuperset-mcpsuperset-mcp (Winding2020)superset-mcp-server
Total tools13760314
LanguagePythonPythonTypeScriptTypeScript
Dashboard CRUD15 tools58-
Dashboard native filters5 tools---
Chart CRUD11 tools57-
Database tools18 tools1411
Dataset tools11 tools37-
SQL Lab5 tools711
Security (users/roles)26 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

  • 137 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

# 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:

# 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

Session-cookie authentication (SSO/OAuth)

When Superset is behind SSO (OAuth/OIDC/SAML), password login via the REST API is unavailable. Instead, supply a browser session cookie:

VariableDescription
SUPERSET_SESSION_COOKIESession cookie value copied from your browser. When set, this mode is used instead of username/password.
SUPERSET_SESSION_COOKIE_NAMECookie name. Defaults to session.

Copy the cookie from your browser's dev tools (Application → Cookies → your Superset domain → session). The MCP server sends it on every request and fetches CSRF tokens with it. The session cannot be renewed server-side, so when it expires you must paste a fresh value and restart the server.

Two things worth checking before you use this mode:

  • The cookie name is not always session. Instances that set SESSION_COOKIE_NAME in superset_config.py use a different name (s, for example). Use the name shown in dev tools and set SUPERSET_SESSION_COOKIE_NAME accordingly.
  • The instance must accept session authentication on /api/v1/. Where the REST API is configured for JWT only, requests carrying a valid session cookie still return 401 {"msg": "Missing Authorization Header"} - refreshing the cookie will not help, and JWT mode is the only option there.

Treat the cookie as a credential: it grants full access to your Superset account for the lifetime of the session. Keep it in .env (which is gitignored), not in shell history or committed config.

Running

# 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-detect—Path to .env file
--version——Show version and exit

Connecting to MCP Clients

Claude Code

Add to your project's .mcp.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:

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

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 (137)

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 (26 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_role_copy_permissionsCopy all permissions from one role to another
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_bulk_user_role_addAdd a role to multiple users (by IDs or by current role)
superset_bulk_user_role_removeRemove a role from multiple users
superset_bulk_user_role_replaceReplace one role with another for all matching users
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
Bulk add role to usersconfirm=TrueUser count, sample list
Bulk remove role from usersconfirm=TrueUser count, prevents last role removal
Bulk replace roleconfirm=TrueOld/new role names, user count
Copy role permissionsconfirm=TrueSource/target permission counts

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 safety — rls_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

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 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:

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

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

# Run from source
uv run python -m mcp_superset

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

Running Tests

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)

Related MCP Servers

1luvc0d3/metabase-mcp

šŸ“‡ šŸ  - MCP server connecting Claude to Metabase with 28 tools for natural language data analysis, dashboard management, SQL queries, and automated insights. Features SQL guardrails, rate limiting, and audit logging.

šŸ“Š Data Platforms0 views
aegis-dq/aegis-dq

šŸ šŸ  šŸŽ 🪟 🐧 - Agentic data quality framework that runs structured rules against warehouses (DuckDB, BigQuery, Athena, Databricks, Postgres), diagnoses failures with LLM root cause analysis, and proposes SQL remediations. Every LLM decision is audit-logged with cost and latency.

šŸ“Š Data Platforms0 views
alanpcf/brasil-data-mcp

šŸ“‡ šŸ  šŸŽ 🪟 🐧 - Brazilian public data for AI agents — companies (CNPJ), addresses (CEP), banks (BACEN), national holidays — via BrasilAPI. No auth, no API key. Install: npx -y brasil-data-mcp.

šŸ“Š Data Platforms0 views
Alessandro114/scala-mcp-server

šŸ“‡ ā˜ļø šŸŽ 🪟 🐧 - Search and enrich data from 250M+ companies across 50+ countries. Company lookup by name, VAT, or ID, NACE sector search, and financial data from official EU business registries. Free tier: 50 lookups/month. Install: npx scala-mcp-server.

šŸ“Š Data Platforms0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

Last checked: 7/28/2026, 6:47:13 PM

Unclaimed listing (imported or pending owner verification). Claim it →
ā˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.