Superset管理协议

一个全面的Apache Superset管理协议服务器,通过137个工具实现AI助手对Superset实例的全面控制。

  • by bintocher
  • Python
  • 本地部署
  • 60 星标
  • 更新于
在 GitHub 查看 bintocher/mcp-superset

使用说明

mcp超集

全面 模型上下文协议(MCP) 服务器 Apache超级集。通过137个工具,让AI助手(Claude、GPT等)完全控制您的Superset实例——仪表板、图表、数据集、SQL Lab、用户、角色、RLS等。

与其他超级MCP服务器的比较

特点 mcp超集 超集mcp 超级集mcp(Winding2020) 超集mcp服务器
工具总数 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实验室 5个工具 7 1 1
安全(用户/角色) 26工具 2 - -
行级安全性 5工具 - - -
群组 9工具 - - -
权限审核 是 - - -
仪表板访问权限授予/撤销 是 - - -
自动数据源_访问同步 是 - - -
报告和注释 10个工具 - - -
标签 7工具 7 - -
资产导出/导入 是 - - -
安全:确认标志 14种类型 - - -
安全:DDL/DML阻塞 是 - - -
安全:系统角色保护 是 - - -
传输 HTTP、SSE、stdio stdio std io stdio
身份验证方法 JWT+自动刷新+CSRF 用户名/密码+令牌文件 用户名/口令或令牌 LDAP
超级集版本 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

主要差异化因素:

  • 仅MCP服务器具有 全面安全管理 (用户、角色、RLS、组、权限审核)
  • 只有一个 内置安全验证 (确认标志,DDL/DML阻塞)
  • 只有一个 仪表板本机筛选器管理
  • 只有一个 自动数据源访问同步
  • 只有一个 多种运输方式 (HTTP、SSE、stdio)
  • 只有一个 可配置CLI (--host, --port, --transport, --env-file)

特性

  • 137个MCP工具 涵盖完整的Superset REST API
  • 仪表板管理 --CRUD、复制、发布/取消发布、导出/导入、嵌入式模式、本机过滤器
  • 图表管理 --CRUD、复制、数据检索、导出/导入、缓存预热
  • 数据库管理 --CRUD、连接测试、模式/表自检、SQL验证
  • 数据集管理 --CRUD、复制、模式刷新、导出/导入
  • SQL实验室 --查询执行、格式化、成本估算、结果和CSV导出
  • 安全 --用户、角色、权限、行级安全性(RLS)、组
  • 门禁自动化 --通过自动数据源权限同步授予/撤销仪表板访问权限
  • 审计 --综合权限矩阵(用户x仪表板x数据集x RLS)
  • 标签、报告、注释、保存的查询 --完整CRUD
  • 资产导出/导入 --完整实例备份和还原
  • 内置安全 --破坏性操作的确认标志,SQL Lab中的DDL/DML阻塞
  • JWT 认证 具有自动令牌刷新和CSRF处理功能
  • 可流式传输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/Outhor)

当Superset位于SSO(OAuth/OIDC/SAML)之后时,通过REST进行密码登录 API不可用。相反,请提供浏览器 会话cookie:

变量 描述
SUPERSET_SESSION_COOKIE 从浏览器复制的会话cookie值。设置后,将使用此模式而不是用户名/密码。
SUPERSET_SESSION_COOKIE_NAME Cookie名称。默认为 session.

从浏览器的开发工具(应用程序)复制cookie→ 曲奇饼→ 您的Superset域名→ session).MCP服务器在每次请求时都会发送它 并用它获取CSRF令牌。会话无法在服务器端续订, 因此,当它过期时,您必须粘贴一个新值并重新启动服务器。

在使用此模式之前,有两件事值得检查:

  • cookie名称并不总是 session. 设置的实例 SESSION_COOKIE_NAME 在 superset_config.py 使用其他名称(s,为 示例)。使用开发工具中显示的名称并设置 SUPERSET_SESSION_COOKIE_NAME 因此。
  • 实例必须接受上的会话身份验证 /api/v1/. 在哪里 REST API仅配置为JWT,请求携带有效的会话cookie 仍然返回 401 {"msg": "Missing Authorization Header"} -刷新 cookie没有帮助,JWT模式是唯一的选择。

将cookie视为凭证:它授予对Superset的完全访问权限 考虑会话的生命周期。把它放进去 .env (这是 gitignored),不在shell历史记录或已提交的配置中。

跑步

# 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 代码

添加到您的项目 .mcp.json:

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

然后启动服务器: mcp-superset 或 uvx mcp-superset.

Claude 桌面版

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

光标/风帆

{
  "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的客户端都可以通过以下方式连接:

  • 流式HTTP: http://<host>:<port>/mcp
  • 上海证券交易所: http://<host>:<port>/sse
  • 标准:管道至 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实验室和查询(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实验室拒绝 DROP, DELETE, UPDATE, INSERT, TRUNCATE, ALTER, CREATE, GRANT, REVOKE (检查前删除SQL注释)
  • 系统角色保护 --无法删除管理员、Alpha、Gamma、公共角色
  • 服务帐户保护 --无法删除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)

超级集兼容性

  • 经过测试:Apache超级集6.0.1
  • 认证:JWT(推荐)-API密钥(sst_*)未在Superset中实现
  • 必需的Superset用户:管理员角色(用于完全访问API)

推荐的超级设置配置

添加到您的 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

已知超级集合API测验

这些由MCP服务器自动处理,但在调试时了解这些信息很有用:

Quirk 详细信息
RISON分页 超级集忽略 page/page_size 作为查询参数;必须使用RISON q 参数
需要CSRF 所有POST/PUT/DELETE都需要 X-CSRFToken header+会话cookie
需要引用器 SQL Lab返回403,但没有 Referer 头球
标记API返回 {} 标签创建不返回ID;必须查询列表
标签更新需求 name 即使未更改,字段也是必填的
角色权限替换 POST /security/roles/{id}/permissions 替换所有权限
RLS更新替换 PUT /rowlevelsecurity/{id} 替换所有提供的字段
数据集更新列 PUT /dataset/{id} 随着 columns 替换所有列
仪表板副本 需要 json_metadata (可以是 "{}")
本机筛选器ID 必须是 NATIVE_FILTER-<uuid> 格式
filter_time 需求 granularity_sqla 没有它的图表会默默地忽略时间过滤器
数字格式 SMART_NUMBER 缩写;使用 ,d 或 ,.2f 为了准确

许可证

麻省理工学院 --斯坦尼斯拉夫·切尔诺夫(@宾托彻)