mcp-superset
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SUPERSET_BASE_URL | Yes | Base URL of the Superset instance (e.g., https://superset.example.com) | |
| SUPERSET_MCP_HOST | No | Server bind address | 127.0.0.1 |
| SUPERSET_MCP_PORT | No | Server bind port | 8001 |
| SUPERSET_PASSWORD | Yes | Password for Superset authentication | |
| SUPERSET_USERNAME | Yes | Username for Superset authentication | |
| SUPERSET_AUTH_PROVIDER | No | Authentication provider: db (default) or ldap | db |
| SUPERSET_MCP_TRANSPORT | No | Transport: streamable-http (default), sse, or stdio | streamable-http |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| superset_dashboard_listA | List Superset dashboards with pagination. IMPORTANT: always call this tool before dashboard_get to find out the current dashboard IDs. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for search. Examples: - By title: (filters:!((col:dashboard_title,opr:ct,value:search))) - By owner: (filters:!((col:owners,opr:rel_m_m,value:1))) - Published only: (filters:!((col:published,opr:eq,value:!t))) get_all: Fetch ALL records with automatic pagination (ignores page/page_size). |
| superset_dashboard_getA | Get detailed information about a dashboard by ID. IMPORTANT: if the ID is unknown, first call superset_dashboard_list to find the desired dashboard. A non-existent ID will return 404. Args: dashboard_id: Dashboard ID (integer from dashboard_list result). |
| superset_dashboard_createA | Create a new dashboard. IMPORTANT: when roles are specified, datasource_access is automatically synced for the given roles — each role will get access to all dashboard datasets. Args: dashboard_title: Dashboard title (displayed in the UI). slug: URL slug for a pretty link (e.g. "my-dashboard"). Must be unique. published: Publish immediately (default False — draft). json_metadata: JSON string with dashboard metadata. Contains filter settings, color palette, refresh interval. Use "{}" for empty metadata. css: Custom CSS for dashboard styling. position_json: JSON string with widget positioning on the dashboard. Defines the layout of charts, headers, dividers in the grid. roles: List of role IDs that can access the dashboard. Users without one of these roles will NOT see the dashboard. Empty list = accessible to all. |
| superset_dashboard_updateA | Update an existing dashboard. Pass only the fields to change. IMPORTANT: after the update, datasource_access is automatically synced — each role from dashboard.roles will get access to all dashboard datasets. Args: dashboard_id: ID of the dashboard to update. dashboard_title: New title. slug: New URL slug (must be unique). published: Change publication status (true — published, false — draft). json_metadata: Dashboard JSON metadata (string or object, fully replaced). css: New custom CSS for the dashboard. Injected as a tag on the dashboard page. Does NOT affect Explore view (chart editor) — only the dashboard. |
| superset_dashboard_publishA | Publish a dashboard (make it visible to users with appropriate permissions). Args: dashboard_id: Dashboard ID. |
| superset_dashboard_unpublishA | Unpublish a dashboard (convert to draft). The dashboard will remain accessible to owners and admins but will be hidden from the general list. Args: dashboard_id: Dashboard ID. |
| superset_dashboard_deleteA | Delete a dashboard by ID. Charts and datasets are NOT deleted — only the dashboard itself. CRITICAL: the dashboard will be permanently deleted. Args: dashboard_id: ID of the dashboard to delete. confirm_delete: Deletion confirmation (REQUIRED). |
| superset_dashboard_copyA | Create a copy of an existing dashboard with all its charts. Args: dashboard_id: ID of the source dashboard to copy. dashboard_title: Title for the new copy. json_metadata: JSON metadata for the copy. IMPORTANT: Superset requires this field. If not provided, "{}" will be used. |
| superset_dashboard_chartsA | Get the list of all charts placed on a dashboard. Returns chart IDs and names. Useful for analyzing dashboard contents. Args: dashboard_id: Dashboard ID. |
| superset_dashboard_datasetsB | Get the list of all datasets used by a dashboard's charts. Useful for understanding the dashboard's dependencies on data sources. Args: dashboard_id: Dashboard ID. |
| superset_dashboard_exportA | Export dashboards with all dependencies (charts, datasets, databases) as a ZIP. The result is a base64-encoded ZIP file. It can be imported back via superset_dashboard_import. Args: dashboard_ids: Comma-separated dashboard IDs (e.g. "1,2,3"). Returns: JSON: {"format": "zip", "encoding": "base64", "data": "...", "size_bytes": N} |
| superset_dashboard_importA | Import dashboards from a ZIP file (created via export). The ZIP should contain YAML files with dashboard and dependency configurations. Args: file_path: Absolute path to the ZIP file on disk. overwrite: Overwrite existing objects with the same UUID (default False). |
| superset_dashboard_embedded_getA | Get the embedding (embedded) settings of a dashboard. IMPORTANT: will return 404 if embedded mode has not been configured via embedded_set. Args: dashboard_id: Dashboard ID. |
| superset_dashboard_embedded_setA | Enable dashboard embedding (embedded mode) and configure allowed domains. Once enabled, the dashboard can be embedded via iframe on the specified domains. Args: dashboard_id: Dashboard ID. allowed_domains: List of domains where embedding is allowed (e.g. ["example.com", "app.example.com"]). Empty list = all domains. |
| superset_dashboard_embedded_deleteB | Disable dashboard embedding (embedded mode). After disabling, the dashboard can no longer be embedded via iframe. Args: dashboard_id: Dashboard ID. |
| superset_dashboard_filter_listA | Get a list of native filters on a dashboard in a readable format. Parses json_metadata and returns configuration of each filter: ID, name, type, column, dataset, chartsInScope, controlValues. Args: dashboard_id: Dashboard ID. |
| superset_dashboard_filter_addA | Add a native filter to a dashboard with correct defaults. Automatically populates chartsInScope with all dashboard charts, builds correct scope, defaultDataMask, and cascadeParentIds. Filter ID is generated in NATIVE_FILTER- format — this is REQUIRED for Superset 6.0.1 (custom IDs are silently ignored by the frontend). Args: dashboard_id: Dashboard ID. name: Display name of the filter (e.g. "Full Name"). column: Dataset column name for filtering (e.g. "full_name"). dataset_id: ID of the dataset providing filter values. filter_type: Filter type: "filter_select", "filter_time", "filter_range". multi_select: Allow multiple selection (default True). search_all_options: Search all values, not just loaded ones (for large lists). enable_empty_filter: Empty filter means filtering by NULL. cascade_parent_id: ID of the parent filter for cascading. |
| superset_dashboard_filter_updateA | Update a native filter on a dashboard by ID. Pass only the fields to change. Args: dashboard_id: Dashboard ID. filter_id: Filter ID (format "NATIVE_FILTER-"). name: New filter name. column: New column for filtering. multi_select: Multiple selection. search_all_options: Search all values. enable_empty_filter: Empty filter = NULL. cascade_parent_id: Parent filter ID (None — remove cascading). |
| superset_dashboard_filter_deleteA | Delete a native filter from a dashboard by ID. Args: dashboard_id: Dashboard ID. filter_id: ID of the filter to delete (format "NATIVE_FILTER-"). confirm_delete: Deletion confirmation (REQUIRED). |
| superset_dashboard_filter_resetA | Recreate ALL native filters on a dashboard with correct defaults. Deletes all current filters and creates new ones from the provided list. Automatically populates chartsInScope, scope, defaultDataMask, cascadeParentIds. CRITICAL: all current filters will be DELETED and replaced with new ones. Args: dashboard_id: Dashboard ID. dataset_id: Dataset ID for all filters. filters_json: JSON array of filter definitions. Each element: confirm_reset: Filter reset confirmation (REQUIRED). { "name": "Full Name", "column": "full_name", "type": "filter_select", // filter_select | filter_time | filter_range "multi_select": true, // optional, default true "search_all_options": false, // optional, default false "enable_empty_filter": false, // optional, default false "cascade_parent_id": null // optional, parent filter ID } |
| superset_chart_listA | List Superset charts with pagination. IMPORTANT: always call this tool before chart_get/chart_delete to look up actual chart IDs. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for searching. Examples: - By name: (filters:!((col:slice_name,opr:ct,value:search_term))) - By type: (filters:!((col:viz_type,opr:eq,value:table))) - By dataset: (filters:!((col:datasource_id,opr:eq,value:1))) get_all: Retrieve ALL records with automatic pagination (ignores page/page_size). |
| superset_chart_getA | Get detailed information about a chart by ID. Returns all settings: viz_type, params, query_context, dashboard bindings. IMPORTANT: if the ID is unknown, call superset_chart_list first. Args: chart_id: Chart ID (integer from chart_list result). |
| superset_chart_createA | Create a new chart. Args: slice_name: Chart name (displayed in the UI). viz_type: Visualization type (Superset 6.x). Main types: ECharts (recommended): - echarts_timeseries_bar — bar/horizontal bar chart - echarts_timeseries_line — line chart - echarts_timeseries_smooth — smoothed line - echarts_timeseries_step — step line - echarts_timeseries_scatter — scatter plot - echarts_area — area chart - mixed_timeseries — multiple series with 2 Y-axes - pie — pie chart - funnel — funnel chart - gauge_chart — gauge/speedometer - radar — radar chart - graph_chart — graph/network - tree_chart — tree diagram - treemap_v2 — treemap - sunburst_v2 — sunburst chart - sankey_v2 — Sankey diagram - heatmap_v2 — heatmap - histogram_v2 — histogram - box_plot — box plot - bubble_v2 — bubble chart - waterfall — waterfall chart - gantt_chart — Gantt chart KPI: - big_number_total — big number (KPI) - big_number — KPI with trend Tables: - table — table - pivot_table_v2 — pivot table Maps: - country_map — country map (ISO 3166-2 codes) - world_map — world map Other: - word_cloud — word cloud - handlebars — custom template DEPRECATED (DO NOT USE — "not registered" error): dist_bar -> echarts_timeseries_bar, bar -> echarts_timeseries_bar, area -> echarts_area, line -> echarts_timeseries_line, heatmap -> heatmap_v2, histogram -> histogram_v2, treemap -> treemap_v2, sunburst -> sunburst_v2, sankey -> sankey_v2, pivot_table -> pivot_table_v2, dual_line -> mixed_timeseries, line_multi -> mixed_timeseries datasource_id: Dataset ID (from superset_dataset_list). datasource_type: Data source type (default "table" — dataset). params: JSON string with visualization parameters (depend on viz_type). Define metrics, groupings, filters, colors, labels, etc. |
| superset_chart_updateA | Update an existing chart. Pass only the fields to change. Args: chart_id: ID of the chart to update. slice_name: New name. viz_type: New visualization type (see chart_create for the list of types). params: New JSON visualization parameters (replaces entirely). See chart_create for reference on numeric/time formats. IMPORTANT: params replaces ALL parameters — first get current ones via chart_get, modify the needed fields, and pass the full JSON. CRITICAL: for dates use D3 strftime format ("%Y-%m-%d"), NOT moment.js ("YYYY-MM-DD") — otherwise a literal will be shown! query_context: New JSON query context (replaces entirely). IMPORTANT: when changing params you should also update query_context, otherwise the chart will use the old query context. dashboards: New list of dashboard IDs (REPLACES all bindings). confirm_params_replace: Confirmation for replacing params (REQUIRED when passing params). |
| superset_chart_deleteA | Delete a chart by ID. The chart will be removed from all dashboards. Args: chart_id: ID of the chart to delete. confirm_delete: Deletion confirmation (REQUIRED). |
| superset_chart_dataA | Execute an arbitrary query against a dataset and retrieve data. Allows fetching data directly from a dataset without creating a chart. To get data from an existing chart, use chart_get_data instead. Args: query_context: JSON string with the query context. Format: { "datasource": {"id": , "type": "table"}, "queries": [{ "columns": ["col1", "col2"], "metrics": [{"label": "count", "expressionType": "SIMPLE", "aggregate": "COUNT", "column": {"column_name": "id"}}], "filters": [{"col": "status", "op": "==", "val": "active"}], "orderby": [["col1", true]], "row_limit": 100, "time_range": "Last 7 days" }], "result_format": "json", "result_type": "full" } IMPORTANT: time_range is specified at the QUERY level, NOT inside extras. Allowed time_range values: "Last day", "Last week", "Last month", "Last year", "No filter", or "2024-01-01 : 2024-12-31". |
| superset_chart_get_dataA | Get data from a specific saved chart by its ID. IMPORTANT: works only if the chart was saved with query_context (usually after opening and saving via the Superset UI). If query_context is missing, use superset_chart_data with a manually constructed query. Args: chart_id: Chart ID. |
| superset_chart_exportA | Export charts with all dependencies (datasets, databases) as a ZIP file. The result is a base64-encoded ZIP file. It can be imported back via superset_chart_import. Args: chart_ids: Chart IDs separated by commas (e.g. "1,2,3"). Returns: JSON: {"format": "zip", "encoding": "base64", "data": "...", "size_bytes": N} |
| superset_chart_importA | Import charts from a ZIP file (created via export). The ZIP must contain YAML files with chart configurations and dependencies. Args: file_path: Absolute path to the ZIP file on disk. overwrite: Overwrite existing objects with the same UUID (default False). |
| superset_chart_copyA | Create a copy of an existing chart with a new name. Copies all visualization parameters, type, dataset, and query_context. Dashboard bindings are NOT copied — specify new ones via the dashboards parameter. Args: chart_id: ID of the source chart to copy. slice_name: Name for the new copy. dashboards: List of dashboard IDs to bind the copy to (optional). |
| superset_chart_cache_warmupA | Warm up the cache for a chart. Useful for speeding up loading of frequently used charts. Args: chart_id: ID of the chart to warm up. dashboard_id: Dashboard ID for filter context (optional). |
| superset_database_listA | List database connections configured in Superset. Returns the ID, name, engine type, and status of each connection. IMPORTANT: always call before database_get to discover current IDs. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for searching. Examples: - By name: (filters:!((col:database_name,opr:ct,value:postgres))) - By type: (filters:!((col:backend,opr:eq,value:postgresql))) get_all: Fetch ALL records with automatic pagination (ignores page/page_size). |
| superset_database_getA | Get detailed information about a database connection by ID. IMPORTANT: if the ID is unknown, call superset_database_list first. Args: database_id: Connection ID (integer from database_list result). |
| superset_database_createA | Create a new database connection. IMPORTANT: Superset validates database availability on creation. The URI must be reachable from the Superset server (not the client's localhost). Args: database_name: Human-readable connection name. sqlalchemy_uri: SQLAlchemy connection URI string. Examples: - PostgreSQL: postgresql://user:pass@host:5432/dbname - MySQL: mysql://user:pass@host:3306/dbname - SQLite: sqlite:///path/to/db.sqlite expose_in_sqllab: Whether to show in SQL Lab (default True). allow_ctas: Allow CREATE TABLE AS SELECT. allow_cvas: Allow CREATE VIEW AS SELECT. allow_dml: Allow INSERT/UPDATE/DELETE. allow_run_async: Allow asynchronous query execution. extra: JSON string with additional settings (engine_params, metadata_params). |
| superset_database_updateA | Update a database connection. Pass only the fields you want to change. Args: database_id: Connection ID to update. database_name: New connection name. sqlalchemy_uri: New SQLAlchemy URI. CRITICAL: changing the URI breaks all datasets and charts using this connection. expose_in_sqllab: Whether to show in SQL Lab. allow_ctas: Allow CREATE TABLE AS SELECT. allow_cvas: Allow CREATE VIEW AS SELECT. allow_dml: Allow INSERT/UPDATE/DELETE. extra: JSON string with additional settings. confirm_uri_change: Confirmation for URI change (REQUIRED when changing sqlalchemy_uri). |
| superset_database_deleteA | Delete a database connection. All associated datasets will become broken. CRITICAL: deleting a connection breaks ALL datasets, charts, and dashboards using this DB. Args: database_id: Connection ID to delete. confirm_delete: Deletion confirmation (REQUIRED). |
| superset_database_test_connectionA | Test a database connection without creating it. IMPORTANT: the URI must be reachable from the Superset server. Args: database_name: Connection name (shown in error messages). sqlalchemy_uri: SQLAlchemy URI to test. extra: JSON string with additional settings. |
| superset_database_schemasA | List schemas available in a database. Useful for selecting a schema before querying tables or creating a dataset. Args: database_id: Database connection ID (from database_list). |
| superset_database_tablesA | List tables and views in the specified database schema. Useful for selecting a table before creating a dataset. Args: database_id: Database connection ID (from database_list). schema_name: Schema name (from database_schemas). Examples: "public", "source". Passed in RISON format without quotes. |
| superset_database_catalogsA | List catalogs in a database (for engines that support catalogs). Not supported by all engines. PostgreSQL and MySQL typically do not use catalogs. Args: database_id: Database connection ID. |
| superset_database_connection_infoA | Get connection information (URI without password, parameters). Args: database_id: Database connection ID. |
| superset_database_function_namesA | List available SQL functions in the database. Useful for building SQL queries with engine-specific functions. Args: database_id: Database connection ID. |
| superset_database_related_objectsA | Get objects related to a database connection (datasets, charts). Useful before deleting a connection to understand what will break. Args: database_id: Database connection ID. |
| superset_database_validate_sqlA | Validate SQL query syntax without executing it (EXPLAIN-like check). IMPORTANT: not all database engines support SQL validation. PostgreSQL does. Args: database_id: Database connection ID. sql: SQL query to validate. schema: Schema for validation context (e.g. "public"). |
| superset_database_validate_parametersA | Validate database connection parameters without creating a connection. Args: engine: Database engine type: "postgresql", "mysql", "sqlite", "mssql", etc. parameters: Connection parameters dictionary: {"host": "...", "port": 5432, "database": "...", "username": "...", "password": "..."} configuration_method: Configuration method: "sqlalchemy_form" (default) or "dynamic_form". |
| superset_database_select_starA | Generate a SELECT * SQL query for a table (with LIMIT). Useful for quickly inspecting table structure and data. Args: database_id: Database connection ID. table_name: Table name. schema_name: Schema (e.g. "public"). If not specified, uses the default schema. |
| superset_database_table_metadataA | Get table metadata: columns, data types, indexes, and primary keys. Useful for understanding table structure before writing SQL queries. Args: database_id: Database connection ID. table_name: Table name. schema_name: Schema (e.g. "public"). If not specified, uses the default schema. |
| superset_database_exportA | Export database connection configurations as a ZIP file. IMPORTANT: passwords are NOT exported for security reasons. Args: database_ids: Comma-separated connection IDs (e.g. "1,2"). Returns: JSON: {"format": "zip", "encoding": "base64", "data": "...", "size_bytes": N} |
| superset_database_available_enginesA | List supported database engine types for creating connections. Returns available engines: PostgreSQL, MySQL, SQLite, etc. Useful for selecting an engine when creating a new connection. |
| superset_dataset_listA | List Superset datasets with pagination. A dataset is a reference to a table/view or a virtual SQL query in Superset. IMPORTANT: always call before dataset_get to discover current IDs. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for searching. Examples: - By name: (filters:!((col:table_name,opr:ct,value:search_term))) - By schema: (filters:!((col:schema,opr:eq,value:public))) - By database: (filters:!((col:database,opr:rel_o_m,value:1))) get_all: Fetch ALL records with automatic pagination (ignores page/page_size). Returns: JSON string with the list of datasets. |
| superset_dataset_getA | Get detailed information about a dataset: columns, metrics, SQL. IMPORTANT: if the ID is unknown, call superset_dataset_list first. Args: dataset_id: Dataset ID (integer from dataset_list result). Returns: JSON string with dataset details. |
| superset_dataset_createA | Create a new dataset (physical or virtual). A physical dataset references an existing table/view in the database. A virtual dataset uses an arbitrary SQL query as the data source. Args: table_name: Table/view name (for physical) or dataset name (for virtual). database: Database connection ID (from superset_database_list). schema_name: Database schema (e.g. "public", "source"). If omitted, uses the DB default schema. sql: SQL query for a virtual dataset. If provided, creates a virtual dataset based on this query. Returns: JSON string with the created dataset details. |
| superset_dataset_updateA | Update a dataset. Only pass the fields you want to change. Args: dataset_id: ID of the dataset to update. table_name: New table/dataset name. sql: New SQL query (only for virtual datasets). description: Dataset description (displayed in Superset UI). columns: JSON string describing columns. CRITICAL: passing columns REPLACES ALL dataset columns! To update a single column (e.g. verbose_name), pass ALL columns with their IDs. After an error, dataset_refresh_schema will restore columns from SQL. Format: [{"id": 123, "column_name": "id", "type": "INTEGER", ...}] metrics: JSON string describing metrics. Format: [{"metric_name": "count", "expression": "COUNT(*)", "metric_type": "count"}] confirm_columns_replace: Confirmation for replacing ALL columns (REQUIRED when passing columns). always_filter_main_dttm: Force the dataset's main datetime filter on/off. Superset resets this flag to false on any PUT that omits it, which breaks dashboard time filters when only columns/metrics are updated. Pass an explicit value to set it; leave it None and the current value is preserved automatically whenever columns are replaced. Returns: JSON string with the updated dataset details. |
| superset_dataset_refresh_schemaA | Refresh the dataset schema from the source (rescan columns and types). Useful after ALTER TABLE or any structural change to the underlying table. Args: dataset_id: Dataset ID. Returns: JSON string with the refresh result. |
| superset_dataset_deleteA | Delete a dataset. Charts using this dataset will stop working. CRITICAL: deleting a dataset breaks all linked charts and dashboards. Args: dataset_id: ID of the dataset to delete. confirm_delete: Deletion confirmation (REQUIRED). Returns: JSON string with the deletion result. |
| superset_dataset_duplicateA | Create a copy of an existing dataset (with columns and metrics). Args: base_model_id: ID of the source dataset to copy. IMPORTANT: the field is called base_model_id, NOT base_id or dataset_id. table_name: Name for the new dataset (must be unique). Returns: JSON string with the duplicated dataset details. |
| superset_dataset_related_objectsA | Get objects related to a dataset (charts and dashboards). Useful before deleting a dataset to understand the impact. Args: dataset_id: Dataset ID. Returns: JSON string with related charts and dashboards. |
| superset_dataset_exportA | Export datasets with dependencies (databases) to a ZIP file. The result is a base64-encoded ZIP. Can be imported via dataset_import. Args: dataset_ids: Comma-separated dataset IDs (e.g. "1,2,3"). Returns: JSON: {"format": "zip", "encoding": "base64", "data": "...", "size_bytes": N} |
| superset_dataset_importA | Import datasets from a ZIP file (created via export). Args: file_path: Absolute path to the ZIP file on disk. overwrite: Overwrite existing objects with matching UUIDs (default False). Returns: JSON string with the import result. |
| superset_dataset_get_or_createA | Get an existing dataset or create a new one for a table. If a dataset for the specified table already exists, returns it. If not, creates a new physical dataset. Args: database_id: Database connection ID (from superset_database_list). table_name: Table name in the database. schema_name: Database schema (e.g. "public", "source"). If omitted, uses the DB default schema. Returns: JSON string with the dataset details. |
| superset_sqllab_executeA | Execute a SQL query via SQL Lab and return the result. IMPORTANT: before executing, make sure the SQL query is correct. Use superset_database_table_metadata or superset_database_tables to find actual table and column names. Maximum 1000 rows in the result (queryLimit). Args: database_id: Database connection ID (from superset_database_list). sql: SQL query to execute. Examples: - SELECT * FROM public.my_table LIMIT 10 - SELECT count(*) FROM source.stat schema: Default schema for the query (e.g. "public", "source"). If not specified, the database default schema is used. catalog: Database catalog (for databases with catalog support, optional). tab_name: Tab name in SQL Lab UI (optional, for organization). template_params: JSON string with Jinja template parameters (optional). Example: '{"start_date": "2024-01-01"}' |
| superset_sqllab_format_sqlA | Format a SQL query (pretty print with indentation). Args: sql: SQL query to format. |
| superset_sqllab_resultsA | Retrieve results of a previously executed query by key. IMPORTANT: requires a configured Results Backend (Redis/S3) in Superset. Without it, returns 500. The key is taken from the results_key field of sqllab_execute response. Args: results_key: Results key from the superset_sqllab_execute response. |
| superset_sqllab_estimate_costA | Estimate the cost of executing a SQL query (EXPLAIN). Not all database engines support this feature. PostgreSQL does. Args: database_id: Database connection ID. sql: SQL query to estimate. schema: Schema for context (e.g. "public"). |
| superset_sqllab_export_csvA | Export query results to CSV format. IMPORTANT: requires a configured Results Backend (Redis/S3) in Superset. Args: client_id: Query client_id (from the superset_sqllab_execute result). |
| superset_query_listA | Retrieve the history of executed SQL queries. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for search. Examples: - By status: (filters:!((col:status,opr:eq,value:success))) - By database: (filters:!((col:database,opr:rel_o_m,value:1))) get_all: Retrieve ALL records with automatic pagination (ignores page/page_size). |
| superset_query_getA | Retrieve detailed information about a query from the history by ID. Args: query_id: Query ID (integer from query_list result). |
| superset_query_stopA | Stop a running asynchronous query. Args: query_id: Query client_id to stop (string from sqllab_execute result). |
| superset_saved_query_listA | Retrieve a list of saved SQL queries. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for search. Examples: - By label: (filters:!((col:label,opr:ct,value:search_term))) - By database: (filters:!((col:database,opr:rel_o_m,value:1))) get_all: Retrieve ALL records with automatic pagination (ignores page/page_size). |
| superset_saved_query_createA | Create a saved SQL query for reuse. Args: label: Query name (displayed in the list). db_id: Database connection ID (from superset_database_list). sql: SQL query to save. schema: Default schema (e.g. "public"). description: Query description. |
| superset_saved_query_getA | Retrieve a saved query by ID: SQL text, schema, description. Args: saved_query_id: Saved query ID (from saved_query_list). |
| superset_saved_query_updateA | Update a saved query. Pass only the fields to change. Args: saved_query_id: Saved query ID. label: New name. sql: New SQL query. schema: New default schema. description: New description. |
| superset_saved_query_deleteA | Delete a saved query. Args: saved_query_id: Saved query ID to delete. confirm_delete: Deletion confirmation (REQUIRED). |
| superset_get_current_userA | Get information about the current authenticated user (mcp_service). Returns: JSON with username, name, email, roles, and active status. |
| superset_get_current_user_rolesA | Get the list of roles for the current user (mcp_service). Returns: JSON with IDs and names of all assigned roles. |
| superset_user_listA | Get the list of Superset users. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for searching. Examples: - By username: (filters:!((col:username,opr:ct,value:admin))) - Active only: (filters:!((col:active,opr:eq,value:!t))) - By role: (filters:!((col:roles,opr:rel_m_m,value:1))) get_all: Fetch ALL records with automatic pagination (ignores page/page_size). |
| superset_user_getA | Get detailed information about a user by ID. IMPORTANT: if the ID is unknown, call superset_user_list first. Args: user_id: User ID (integer from user_list result). |
| superset_user_createA | Create a new Superset user. Args: first_name: User's first name. last_name: User's last name. username: Login name (must be unique). email: Email address (must be unique). password: Password. roles: List of role IDs to assign (from superset_role_list). If not specified, the default role (Public) will be assigned. active: Whether the account is active (defaults to True). |
| superset_user_updateA | Update a user. Only pass the fields you want to change. IMPORTANT: roles REPLACES the entire role list (does not append). To add a single role: get the current roles via user_get, add the new ID to the list, then pass the full list. Args: user_id: ID of the user to update. first_name: New first name. last_name: New last name. email: New email (must be unique). roles: New list of role IDs (REPLACES all current roles). active: Activate/deactivate the account. confirm_roles_replace: Confirmation for role replacement (REQUIRED when passing roles). |
| superset_user_deleteA | Delete a Superset user. This operation is irreversible. CRITICAL: deleting the current service account (mcp_service) will lock out the entire MCP server. Deleting dashboard owners may change access to those dashboards. Args: user_id: ID of the user to delete. confirm_delete: Deletion confirmation (REQUIRED). |
| superset_role_listA | Get the list of Superset roles. Standard roles: Admin, Alpha, Gamma, sql_lab, Public. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for searching. Examples: - By name: (filters:!((col:name,opr:ct,value:admin))) get_all: Fetch ALL records with automatic pagination (ignores page/page_size). |
| superset_role_getA | Get role information by ID. IMPORTANT: if the ID is unknown, call superset_role_list first. Args: role_id: Role ID (integer from role_list result). |
| superset_role_createA | Create a new role (without permissions). Permissions are added via role_permission_add. Args: name: Role name (must be unique). |
| superset_role_updateC | Rename a role. Args: role_id: ID of the role to rename. name: New role name. |
| superset_role_deleteA | Delete a role. Users with this role will lose the associated permissions. BLOCKED for system roles: Admin, Alpha, Gamma, Public, sql_lab, no_access, la_report_*, la_region_*, la_developer. Args: role_id: ID of the role to delete. confirm_delete: Deletion confirmation (REQUIRED). |
| superset_permission_listA | Get the list of all available permissions (permission_view_menu) in Superset. Each permission is a combination of an action (can_read, can_write, can_explore) and a resource. Args: page: Page number (starting from 0). page_size: Number of records per page (defaults to 100). q: RISON filter for searching. get_all: Fetch ALL records with automatic pagination (ignores page/page_size). |
| superset_role_permissions_getA | Get the current list of permissions for a role. IMPORTANT: call this BEFORE role_permission_add to avoid losing existing permissions. Args: role_id: Role ID. |
| superset_role_permission_addA | Set the permissions list for a role (FULL REPLACEMENT). WARNING: this endpoint REPLACES ALL role permissions with the provided list! To ADD a single permission:
Args: role_id: Role ID. permission_view_menu_ids: FULL list of permission IDs for the role. Permission IDs can be obtained via superset_permission_list. confirm_full_replace: Confirmation for full permission replacement (REQUIRED). |
| superset_dashboard_grant_role_accessA | Grant a role access to a dashboard by automatically finding all dashboard datasets and adding datasource_access to the role's permissions. The tool automatically:
Without confirm_grant=True, shows the action plan (dry-run). Args: dashboard_id: Dashboard ID (from dashboard_list). role_id: ID of the role to grant access to (from role_list). confirm_grant: True to apply changes. False for dry-run only. |
| superset_dashboard_revoke_role_accessA | Revoke a role's access to a dashboard by removing datasource_access for the dashboard's datasets from the role's permissions. IMPORTANT: if a dataset is used by other dashboards that the role also has access to, revoking will break access to those dashboards as well. The tool will check and warn about this. Without confirm_revoke=True, shows the action plan (dry-run). Args: dashboard_id: Dashboard ID (from dashboard_list). role_id: ID of the role to revoke access from (from role_list). confirm_revoke: True to apply. False for dry-run only. |
| superset_rls_listA | Get the list of Row Level Security rules. RLS adds a WHERE clause to queries for specific roles. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for searching. get_all: Fetch ALL records with automatic pagination (ignores page/page_size). |
| superset_rls_getA | Get detailed information about an RLS rule by ID. Args: rls_id: RLS rule ID (from rls_list). |
| superset_rls_createA | Create a Row Level Security rule. RLS automatically adds a WHERE clause to queries for users with the specified roles accessing the specified datasets. Args: name: Rule name. clause: SQL WHERE condition without the WHERE keyword. Examples: - "region = 'Moscow'" - "user_id = {{ current_user_id() }}" - "status IN ('active', 'pending')" tables: List of dataset IDs the rule applies to (from dataset_list). roles: List of role IDs the rule applies to (from role_list). filter_type: Filter type: - "Regular" (default) — additional restriction for the specified roles - "Base" — base filter applied to all users group_key: Rule grouping key (optional). description: Rule description (optional). |
| superset_rls_updateA | Update an RLS rule. CRITICAL: Superset PUT API REPLACES the roles and tables fields entirely. If you pass only roles without tables, Superset will WIPE tables with an empty list (and vice versa). Therefore, this tool REQUIRES passing roles and tables simultaneously if either one is specified. For safe updates:
Args: rls_id: ID of the RLS rule to update. name: New name. filter_type: New type: "Regular" or "Base". clause: New SQL WHERE condition (without the WHERE keyword). tables: List of dataset IDs (REPLACES all current). REQUIRED if roles is specified. roles: List of role IDs (REPLACES all current). REQUIRED if tables is specified. group_key: New grouping key. description: New description. |
| superset_rls_deleteA | Delete an RLS rule. Restrictions for associated roles will be lifted. CRITICAL: deleting a deny-by-default rule (clause='1=0') will immediately expose ALL data to users with those roles. Args: rls_id: ID of the RLS rule to delete. confirm_delete: Deletion confirmation (REQUIRED). |
| superset_bulk_user_role_addA | Add a role to multiple users (without removing existing roles). Select users by explicit IDs or by current role filter. Args: role_id: Role ID to add. user_ids: Explicit list of user IDs. If None, uses filter_role_id. filter_role_id: Add to all users who have this role. Ignored if user_ids is set. exclude_admin: Skip Admin users (default True). confirm: True to apply. False for dry-run. |
| superset_bulk_user_role_removeA | Remove a role from multiple users. Args: role_id: Role ID to remove. user_ids: Explicit list of user IDs. If None, removes from ALL users who have it. exclude_admin: Skip Admin users (default True). confirm: True to apply. False for dry-run. |
| superset_bulk_user_role_replaceA | Replace one role with another for all users who have it. Adds new_role_id first, then removes old_role_id (safe two-step). Args: old_role_id: Role ID to replace. new_role_id: Role ID to set instead. exclude_admin: Skip Admin users (default True). confirm: True to apply. False for dry-run. |
| superset_role_copy_permissionsA | Copy all permissions from one role to another (full replacement). Args: source_role_id: Role to copy permissions FROM. target_role_id: Role to copy permissions TO (existing permissions will be REPLACED). confirm: True to apply. False for dry-run. |
| superset_tag_listA | List Superset tags. Tags are used to group and organize dashboards, charts, and datasets. IMPORTANT: always call before tag_get/tag_update to find current IDs. When creating a tag, the API returns {} without an ID — use tag_list to get the ID. Args: page: Page number (starting from 0). page_size: Number of records per page (max 100). q: RISON filter for search. Examples: - By name: (filters:!((col:name,opr:ct,value:search_term))) get_all: Fetch ALL records with automatic pagination (ignores page/page_size). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/bintocher/mcp-superset'
If you have feedback or need assistance with the MCP directory API, please join our Discord server